summaryrefslogtreecommitdiffstats
path: root/src/network/access/qnetworkaccesshttpbackend.cpp
diff options
context:
space:
mode:
authorMarkus Goetz <Markus.Goetz@nokia.com>2009-07-01 10:19:19 (GMT)
committerMarkus Goetz <Markus.Goetz@nokia.com>2009-07-01 14:04:00 (GMT)
commit5b1f4197d380718a15b3aa176f148bd6324bb1cb (patch)
tree8f280c28a5e1c52666c5dc7368de0fca697e68c6 /src/network/access/qnetworkaccesshttpbackend.cpp
parent7863bb9b96b482d74ad2f5fb3cb3b5716c8e45ef (diff)
downloadQt-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.cpp16
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()