diff --git a/src/librssguard/network-web/downloader.cpp b/src/librssguard/network-web/downloader.cpp index 38b2ff970..073425cd8 100644 --- a/src/librssguard/network-web/downloader.cpp +++ b/src/librssguard/network-web/downloader.cpp @@ -236,7 +236,11 @@ void Downloader::finished() { m_lastContentType = reply->header(QNetworkRequest::KnownHeaders::ContentTypeHeader); m_lastOutputError = reply->error(); m_lastHttpStatusCode = reply->attribute(QNetworkRequest::Attribute::HttpStatusCodeAttribute).toInt(); - m_lastHeaders = reply->rawHeaderPairs(); + m_lastHeaders.clear(); + + for (const QNetworkReply::RawHeaderPair& head : reply->rawHeaderPairs()) { + m_lastHeaders.insert(head.first, head.second); + } // original_url = m_activeReply->property("original_url").toUrl(); @@ -366,7 +370,7 @@ void Downloader::runGetRequest(const QNetworkRequest& request) { connect(m_activeReply, &QNetworkReply::finished, this, &Downloader::finished); } -QList Downloader::lastHeaders() const { +QMap Downloader::lastHeaders() const { return m_lastHeaders; } diff --git a/src/librssguard/network-web/downloader.h b/src/librssguard/network-web/downloader.h index f2d3c4398..6da0cb9e2 100644 --- a/src/librssguard/network-web/downloader.h +++ b/src/librssguard/network-web/downloader.h @@ -30,7 +30,7 @@ class Downloader : public QObject { QVariant lastContentType() const; QList lastCookies() const; int lastHttpStatusCode() const; - QList lastHeaders() const; + QMap lastHeaders() const; void setProxy(const QNetworkProxy& proxy); @@ -116,7 +116,7 @@ class Downloader : public QObject { int m_lastHttpStatusCode; QVariant m_lastContentType; QList m_lastCookies; - QList m_lastHeaders; + QMap m_lastHeaders; }; #endif // DOWNLOADER_H diff --git a/src/librssguard/network-web/networkfactory.h b/src/librssguard/network-web/networkfactory.h index 17a8ec112..0cf6abc6f 100644 --- a/src/librssguard/network-web/networkfactory.h +++ b/src/librssguard/network-web/networkfactory.h @@ -21,7 +21,7 @@ struct NetworkResult { int m_httpCode; QString m_contentType; QList m_cookies; - QList m_headers; + QMap m_headers; explicit NetworkResult(); explicit NetworkResult(QNetworkReply::NetworkError err, diff --git a/src/librssguard/services/standard/standardserviceroot.cpp b/src/librssguard/services/standard/standardserviceroot.cpp index 22e8bc855..8d7c10008 100644 --- a/src/librssguard/services/standard/standardserviceroot.cpp +++ b/src/librssguard/services/standard/standardserviceroot.cpp @@ -184,13 +184,15 @@ QList StandardServiceRoot::obtainNewMessages(Feed* feed, false, {}, {}, - networkProxy()) - .m_networkError; + networkProxy()); - if (network_result != QNetworkReply::NetworkError::NoError) { - qWarningNN << LOGSEC_CORE << "Error" << QUOTE_W_SPACE(network_result) + qDebugNN << "etag:" << network_result.m_headers["ETag"]; + + if (network_result.m_networkError != QNetworkReply::NetworkError::NoError) { + qWarningNN << LOGSEC_CORE << "Error" << QUOTE_W_SPACE(network_result.m_networkError) << "during fetching of new messages for feed" << QUOTE_W_SPACE_DOT(feed->source()); - throw FeedFetchException(Feed::Status::NetworkError, NetworkFactory::networkErrorText(network_result)); + throw FeedFetchException(Feed::Status::NetworkError, + NetworkFactory::networkErrorText(network_result.m_networkError)); } } else if (f->sourceType() == StandardFeed::SourceType::LocalFile) {