diff options
author | Markus Goetz <Markus.Goetz@nokia.com> | 2009-07-01 10:19:19 (GMT) |
---|---|---|
committer | Markus Goetz <Markus.Goetz@nokia.com> | 2009-07-01 14:04:00 (GMT) |
commit | 5b1f4197d380718a15b3aa176f148bd6324bb1cb (patch) | |
tree | 8f280c28a5e1c52666c5dc7368de0fca697e68c6 /src/network/access/qnetworkaccesshttpbackend.cpp | |
parent | 7863bb9b96b482d74ad2f5fb3cb3b5716c8e45ef (diff) | |
download | Qt-5b1f4197d380718a15b3aa176f148bd6324bb1cb.zip Qt-5b1f4197d380718a15b3aa176f148bd6324bb1cb.tar.gz Qt-5b1f4197d380718a15b3aa176f148bd6324bb1cb.tar.bz2 |
QNAM: Direct transfer of HTTP buffer to the QNetworkReply buffer
Directly put a QRingBuffer from one QRingBuffer to
another QRingBuffer.
Reviewed-by: Thiago Macieira
Diffstat (limited to 'src/network/access/qnetworkaccesshttpbackend.cpp')
-rw-r--r-- | src/network/access/qnetworkaccesshttpbackend.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/network/access/qnetworkaccesshttpbackend.cpp b/src/network/access/qnetworkaccesshttpbackend.cpp index 71808d4..db84e58 100644 --- a/src/network/access/qnetworkaccesshttpbackend.cpp +++ b/src/network/access/qnetworkaccesshttpbackend.cpp @@ -649,16 +649,14 @@ void QNetworkAccessHttpBackend::readFromHttp() if (!httpReply) return; - // We implement the download rate control - // Don't read from QHttpNetworkAccess more than QNetworkAccessBackend wants - // One of the two functions above will be called when we can read again + // We read possibly more than nextDownstreamBlockSize(), but + // this is not a critical thing since it is already in the + // memory anyway - qint64 bytesToRead = qBound<qint64>(0, httpReply->bytesAvailable(), nextDownstreamBlockSize()); - if (!bytesToRead) - return; - - QByteArray data = httpReply->read(bytesToRead); - writeDownstreamData(data); + while (httpReply->bytesAvailable() != 0 && nextDownstreamBlockSize() != 0) { + const QByteArray data = httpReply->readAny(); + writeDownstreamData(data); + } } void QNetworkAccessHttpBackend::replyFinished() |