diff --git a/src/librssguard/definitions/definitions.h b/src/librssguard/definitions/definitions.h index 3bf71dc26..518e1bbbc 100644 --- a/src/librssguard/definitions/definitions.h +++ b/src/librssguard/definitions/definitions.h @@ -153,6 +153,8 @@ #define CLI_THREADS "threads" +#define HTTP_CODE_NOT_MODIFIED 304 + #define HTTP_HEADERS_ACCEPT "Accept" #define HTTP_HEADERS_CONTENT_TYPE "Content-Type" #define HTTP_HEADERS_CONTENT_LENGTH "Content-Length" diff --git a/src/librssguard/services/standard/standardserviceroot.cpp b/src/librssguard/services/standard/standardserviceroot.cpp index 29288770d..5f76c93eb 100644 --- a/src/librssguard/services/standard/standardserviceroot.cpp +++ b/src/librssguard/services/standard/standardserviceroot.cpp @@ -238,6 +238,14 @@ QList StandardServiceRoot::obtainNewMessages(Feed* feed, } else { f->setLastEtag(network_result.m_headers.value(QSL("etag"))); + + if (network_result.m_httpCode == HTTP_CODE_NOT_MODIFIED && feed_contents.trimmed().isEmpty()) { + // We very likely used "eTag" before and server reports that + // content was not modified since. + qWarningNN << LOGSEC_CORE << QUOTE_W_SPACE(feed->source()) + << "reported HTTP/304, meaning that the remote file did not change since last time we checked it."; + return {}; + } } } else if (f->sourceType() == StandardFeed::SourceType::EmbeddedBrowser) {