diff options
Diffstat (limited to 'tests/auto/shared/webserver.h')
-rw-r--r-- | tests/auto/shared/webserver.h | 11 |
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; |