summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Goetz <Markus.Goetz@nokia.com>2010-02-09 08:58:22 (GMT)
committerMarkus Goetz <Markus.Goetz@nokia.com>2010-02-09 09:19:17 (GMT)
commit94630819258edef96c434add7bbd4b1b425ea71a (patch)
tree9d8477ec7701f90d54cd760c9a96c3ce63fd609b
parent91687be5b61ffd7e7239e6a17008aefe82ac1093 (diff)
downloadQt-94630819258edef96c434add7bbd4b1b425ea71a.zip
Qt-94630819258edef96c434add7bbd4b1b425ea71a.tar.gz
Qt-94630819258edef96c434add7bbd4b1b425ea71a.tar.bz2
QNAM HTTP: Fix issue with some servers
The call to eatWhitespace() must only be done before reading the status, not while reading it. (We can be in ReadingStatusState for multiple loop iterations) Task-number: QTBUG-7673 Reviewed-by: Peter Hartmann
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 70a301d..5bd972c 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -305,9 +305,12 @@ void QHttpNetworkConnectionChannel::_q_receiveReply()
while (socket->bytesAvailable()) {
QHttpNetworkReplyPrivate::ReplyState state = reply ? reply->d_func()->state : QHttpNetworkReplyPrivate::AllDoneState;
switch (state) {
- case QHttpNetworkReplyPrivate::NothingDoneState:
- case QHttpNetworkReplyPrivate::ReadingStatusState: {
+ case QHttpNetworkReplyPrivate::NothingDoneState: {
+ // only eat whitespace on the first call
eatWhitespace();
+ state = reply->d_func()->state = QHttpNetworkReplyPrivate::ReadingStatusState;
+ }
+ case QHttpNetworkReplyPrivate::ReadingStatusState: {
qint64 statusBytes = reply->d_func()->readStatus(socket);
if (statusBytes == -1 && reconnectAttempts <= 0) {
// too many errors reading/receiving/parsing the status, close the socket and emit error