diff options
author | Frédéric Guillot <fred@miniflux.net> | 2018-01-04 18:32:36 -0800 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2018-01-04 18:41:23 -0800 |
commit | 7d278d49f1da6b8dc8b31faf46d4127db5f7f711 (patch) | |
tree | d471c1e2ef42d40f8124a314e08e7e95eb0ea77f /reader/feed/handler.go | |
parent | c57cafbef28a8a12cae02674b3c36979acb0e576 (diff) |
Add content length check when refreshing feeds
Diffstat (limited to 'reader/feed/handler.go')
-rw-r--r-- | reader/feed/handler.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/reader/feed/handler.go b/reader/feed/handler.go index 35ad388..8b5658e 100644 --- a/reader/feed/handler.go +++ b/reader/feed/handler.go @@ -25,6 +25,7 @@ var ( errNotFound = "Feed %d not found" errEncoding = "Unable to normalize encoding: %v." errCategoryNotFound = "Category not found for this user." + errEmptyFeed = "This feed is empty" ) // Handler contains all the logic to create and refresh feeds. @@ -50,6 +51,11 @@ func (h *Handler) CreateFeed(userID, categoryID int64, url string, crawler bool) return nil, errors.NewLocalizedError(errServerFailure, response.StatusCode) } + // Content-Length = -1 when no Content-Length header is sent + if response.ContentLength == 0 { + return nil, errors.NewLocalizedError(errEmptyFeed) + } + if h.store.FeedURLExists(userID, response.EffectiveURL) { return nil, errors.NewLocalizedError(errDuplicate, response.EffectiveURL) } @@ -133,6 +139,16 @@ func (h *Handler) RefreshFeed(userID, feedID int64) error { if response.IsModified(originalFeed.EtagHeader, originalFeed.LastModifiedHeader) { logger.Debug("[Handler:RefreshFeed] Feed #%d has been modified", feedID) + + // Content-Length = -1 when no Content-Length header is sent + if response.ContentLength == 0 { + err := errors.NewLocalizedError(errEmptyFeed) + originalFeed.ParsingErrorCount++ + originalFeed.ParsingErrorMsg = err.Error() + h.store.UpdateFeed(originalFeed) + return err + } + body, err := response.NormalizeBodyEncoding() if err != nil { return errors.NewLocalizedError(errEncoding, err) |