summaryrefslogtreecommitdiffstats
path: root/tests/auto/shared/webserver.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/shared/webserver.h')
-rw-r--r--tests/auto/shared/webserver.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/tests/auto/shared/webserver.h b/tests/auto/shared/webserver.h
index 458c24a..b28a0e5 100644
--- a/tests/auto/shared/webserver.h
+++ b/tests/auto/shared/webserver.h
@@ -32,6 +32,7 @@
#include <functional>
#include <cctype>
+#include <QtCore/qcoreapplication.h>
#include <QtNetwork/qtcpserver.h>
class WebServer : public QTcpServer
@@ -268,8 +269,14 @@ bool WebServer::HttpRequest::readBody(QTcpSocket *socket)
return false;
fragment.resize(bytesLeft);
}
- while (socket->bytesAvailable() && bytesLeft)
- bytesLeft -= socket->read(&fragment.data()[fragment.size() - bytesLeft], bytesLeft);
+ while (bytesLeft) {
+ int got = socket->read(&fragment.data()[fragment.size() - bytesLeft], bytesLeft);
+ if (got < 0)
+ return false; // error
+ bytesLeft -= got;
+ if (bytesLeft)
+ qApp->processEvents();
+ }
fragment.swap(body);
state = State::AllDone;
return true;