diff options
Diffstat (limited to 'src/network/access/qnetworkreplyhttpimpl.cpp')
-rw-r--r-- | src/network/access/qnetworkreplyhttpimpl.cpp | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp index 0a47bc9f71..486994a1de 100644 --- a/src/network/access/qnetworkreplyhttpimpl.cpp +++ b/src/network/access/qnetworkreplyhttpimpl.cpp @@ -359,9 +359,10 @@ qint64 QNetworkReplyHttpImpl::readData(char* data, qint64 maxlen) return 0; const qint64 bytesRead = d->decompressHelper.read(data, maxlen); if (!d->decompressHelper.isValid()) { - // error occurred, error copied from QHttpNetworkConnectionPrivate::errorDetail - d->error(QNetworkReplyImpl::NetworkError::ProtocolFailure, - QCoreApplication::translate("QHttp", "Data corrupted")); + d->error(QNetworkReplyImpl::NetworkError::UnknownContentError, + QCoreApplication::translate("QHttp", "Decompression failed: %1") + .arg(d->decompressHelper.errorString())); + return -1; } if (d->cacheSaveDevice) { // Need to write to the cache now that we have the data @@ -1084,9 +1085,9 @@ void QNetworkReplyHttpImplPrivate::replyDownloadData(QByteArray d) decompressHelper.feed(std::move(d)); if (!decompressHelper.isValid()) { - // error occurred, error copied from QHttpNetworkConnectionPrivate::errorDetail - error(QNetworkReplyImpl::NetworkError::ProtocolFailure, - QCoreApplication::translate("QHttp", "Data corrupted")); + error(QNetworkReplyImpl::NetworkError::UnknownContentError, + QCoreApplication::translate("QHttp", "Decompression failed: %1") + .arg(decompressHelper.errorString())); return; } @@ -1103,12 +1104,19 @@ void QNetworkReplyHttpImplPrivate::replyDownloadData(QByteArray d) while (decompressHelper.hasData()) { quint64 nextSize = quint64(d.size()) + quint64(increments); if (nextSize > quint64(std::numeric_limits<QByteArray::size_type>::max())) { - error(QNetworkReplyImpl::NetworkError::ProtocolFailure, - QCoreApplication::translate("QHttp", "Data corrupted")); + error(QNetworkReplyImpl::NetworkError::UnknownContentError, + QCoreApplication::translate("QHttp", + "Data downloaded is too large to store")); return; } d.resize(nextSize); bytesRead += decompressHelper.read(d.data() + bytesRead, increments); + if (!decompressHelper.isValid()) { + error(QNetworkReplyImpl::NetworkError::UnknownContentError, + QCoreApplication::translate("QHttp", "Decompression failed: %1") + .arg(decompressHelper.errorString())); + return; + } } d.resize(bytesRead); // we're synchronous so we're not calling this function again; reset the decompressHelper @@ -1374,9 +1382,10 @@ void QNetworkReplyHttpImplPrivate::replyDownloadMetaData(const QList<QPair<QByte decompressHelper.setCountingBytesEnabled(true); if (!decompressHelper.setEncoding(it->second)) { - // error occurred, error copied from QHttpNetworkConnectionPrivate::errorDetail - error(QNetworkReplyImpl::NetworkError::ProtocolFailure, - QCoreApplication::translate("QHttp", "Data corrupted")); + error(QNetworkReplyImpl::NetworkError::UnknownContentError, + QCoreApplication::translate("QHttp", "Failed to initialize decompression: %1") + .arg(decompressHelper.errorString())); + return; } decompressHelper.setDecompressedSafetyCheckThreshold( request.decompressedSafetyCheckThreshold()); |