diff --git a/src/src/socket.cpp b/src/src/socket.cpp index ffea092..7fc7777 100644 --- a/src/src/socket.cpp +++ b/src/src/socket.cpp @@ -68,7 +68,7 @@ SocketPrivate::SocketPrivate(Socket *httpSocket, QTcpSocket *tcpSocket) connect(socket, &QTcpSocket::readyRead, this, &SocketPrivate::onReadyRead); connect(socket, &QTcpSocket::bytesWritten, this, &SocketPrivate::onBytesWritten); - connect(socket, &QTcpSocket::readChannelFinished, q, &Socket::readChannelFinished); + connect(socket, &QTcpSocket::readChannelFinished, this, &SocketPrivate::onReadChannelFinished); connect(socket, &QTcpSocket::disconnected, q, &Socket::disconnected); // Process anything already received by the socket @@ -137,6 +137,13 @@ void SocketPrivate::onBytesWritten(qint64 bytes) } } +void SocketPrivate::onReadChannelFinished() +{ + if (requestDataTotal == -1) { + emit q->readChannelFinished(); + } +} + bool SocketPrivate::readHeaders() { // Check for the double CRLF that signals the end of the headers and diff --git a/src/src/socket_p.h b/src/src/socket_p.h index accdef5..cb1d743 100644 --- a/src/src/socket_p.h +++ b/src/src/socket_p.h @@ -73,6 +73,7 @@ private Q_SLOTS: void onReadyRead(); void onBytesWritten(qint64 bytes); + void onReadChannelFinished(); private: diff --git a/tests/TestSocket.cpp b/tests/TestSocket.cpp index ab4248d..8756d86 100644 --- a/tests/TestSocket.cpp +++ b/tests/TestSocket.cpp @@ -132,9 +132,9 @@ void TestSocket::testSignals() QSignalSpy headersParsedSpy(server, SIGNAL(headersParsed())); QSignalSpy readyReadSpy(server, SIGNAL(readyRead())); - QSignalSpy readChannelFinishedSpy(server, SIGNAL(readChannelFinished())); QSignalSpy bytesWrittenSpy(server, SIGNAL(bytesWritten(qint64))); QSignalSpy aboutToCloseSpy(server, SIGNAL(aboutToClose())); + QSignalSpy readChannelFinishedSpy(server, SIGNAL(readChannelFinished())); client.sendHeaders(Method, Path, headers); @@ -145,7 +145,6 @@ void TestSocket::testSignals() QTRY_COMPARE(server->bytesAvailable(), Data.length()); QVERIFY(readyReadSpy.count() > 0); - QCOMPARE(readChannelFinishedSpy.count(), 1); server->writeHeaders(); server->write(Data); @@ -162,6 +161,8 @@ void TestSocket::testSignals() QTRY_COMPARE(aboutToCloseSpy.count(), 0); server->close(); QTRY_COMPARE(aboutToCloseSpy.count(), 1); + + QCOMPARE(readChannelFinishedSpy.count(), 1); } void TestSocket::testJson()