diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 1ed72e90d7e2c6d46a082f361aa1ae3c3e5f0aa4..913640e3e742d68c588447a4e1cdab227ca1b48a 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -2479,14 +2479,20 @@ qint64 QAbstractSocket::writeData(const char *data, qint64 size) qint64 written = d->socketEngine->write(data, size); if (written < 0) { d->setError(d->socketEngine->error(), d->socketEngine->errorString()); - return written; } else if (written < size) { // Buffer what was not written yet char *ptr = d->writeBuffer.reserve(size - written); memcpy(ptr, data + written, size - written); + written = size; d->socketEngine->setWriteNotificationEnabled(true); } - return size; // size=actually written + what has been buffered + +#if defined (QABSTRACTSOCKET_DEBUG) + qDebug("QAbstractSocket::writeData(%p \"%s\", %lli) == %lli", data, + qt_prettyDebug(data, qMin((int)size, 32), size).data(), + size, written); +#endif + return written; // written = actually written + what has been buffered } else if (!d->isBuffered && d->socketType != TcpSocket) { // This is for a QUdpSocket that was connect()ed qint64 written = d->socketEngine->write(data, size);