diff options
Diffstat (limited to 'src/network/access')
-rw-r--r-- | src/network/access/qnetworkreplyhttpimpl.cpp | 6 | ||||
-rw-r--r-- | src/network/access/qnetworkreplyhttpimpl_p.h | 4 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp index 08ef1866bd..e609653aa4 100644 --- a/src/network/access/qnetworkreplyhttpimpl.cpp +++ b/src/network/access/qnetworkreplyhttpimpl.cpp @@ -1035,9 +1035,6 @@ void QNetworkReplyHttpImplPrivate::replyDownloadData(QByteArray d) // cache this, we need it later and it's invalidated when dealing with compressed data auto dataSize = d.size(); - // Grab this to compare later (only relevant for compressed data) in case none of the data - // will be propagated to the user - const qint64 previousBytesDownloaded = bytesDownloaded; if (cacheEnabled && isCachingAllowed() && !cacheSaveDevice) initCacheSaveDevice(); @@ -1121,11 +1118,12 @@ void QNetworkReplyHttpImplPrivate::replyDownloadData(QByteArray d) // This can occur when downloading compressed data as some of the data may be the content // encoding's header. Don't emit anything for this. - if (previousBytesDownloaded == bytesDownloaded) { + if (lastReadyReadEmittedSize == bytesDownloaded) { if (readBufferMaxSize) emit q->readBufferFreed(dataSize); return; } + lastReadyReadEmittedSize = bytesDownloaded; QVariant totalSize = cookedHeaders.value(QNetworkRequest::ContentLengthHeader); diff --git a/src/network/access/qnetworkreplyhttpimpl_p.h b/src/network/access/qnetworkreplyhttpimpl_p.h index 55953ae878..11897d1420 100644 --- a/src/network/access/qnetworkreplyhttpimpl_p.h +++ b/src/network/access/qnetworkreplyhttpimpl_p.h @@ -200,6 +200,10 @@ public: qint64 bytesDownloaded; qint64 bytesBuffered; + // We use this to keep track of whether or not we need to emit readyRead + // when we deal with signal compression (delaying emission) + decompressing + // data (potentially receiving bytes that don't end up in the final output): + qint64 lastReadyReadEmittedSize = 0; QTimer *transferTimeout; |