prevent running out of file descriptors

This commit is contained in:
Nazar Kanaev 2020-09-10 11:35:31 +01:00
parent c547f552dd
commit 0dac50a84d

View File

@ -138,14 +138,20 @@ func findFavicon(websiteUrl, feedUrl string) (*[]byte, error) {
} }
if len(websiteUrl) != 0 { if len(websiteUrl) != 0 {
doc, err := goquery.NewDocument(websiteUrl) res, err := defaultClient.get(websiteUrl)
if err != nil {
return nil, err
}
defer res.Body.Close()
doc, err := goquery.NewDocumentFromReader(res.Body)
base, err := url.Parse(websiteUrl)
if err != nil { if err != nil {
return nil, err return nil, err
} }
doc.Find(`link[rel=icon]`).EachWithBreak(func(i int, s *goquery.Selection) bool { doc.Find(`link[rel=icon]`).EachWithBreak(func(i int, s *goquery.Selection) bool {
if href, ok := s.Attr("href"); ok { if href, ok := s.Attr("href"); ok {
if hrefUrl, err := url.Parse(href); err == nil { if hrefUrl, err := url.Parse(href); err == nil {
faviconUrl := doc.Url.ResolveReference(hrefUrl).String() faviconUrl := base.ResolveReference(hrefUrl).String()
candidateUrls = append(candidateUrls, faviconUrl) candidateUrls = append(candidateUrls, faviconUrl)
} }
} }
@ -233,8 +239,14 @@ func listItems(f storage.Feed) ([]storage.Item, error) {
} }
func init() { func init() {
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.DisableKeepAlives = true
httpClient := &http.Client{
Timeout: time.Second * 5,
Transport: transport,
}
defaultClient = &Client{ defaultClient = &Client{
httpClient: &http.Client{Timeout: time.Second * 5}, httpClient: httpClient,
userAgent: "Yarr/1.0", userAgent: "Yarr/1.0",
} }
} }