summaryrefslogtreecommitdiffstats
path: root/src/network/socket/qnativesocketengine_win.cpp
diff options
context:
space:
mode:
authorAlex Trotsenko <alex1973tr@gmail.com>2020-07-27 19:21:37 +0300
committerAlex Trotsenko <alex1973tr@gmail.com>2020-07-28 10:40:18 +0300
commit83f00b82298cf8fbba8baa7b983ff177f74a6642 (patch)
tree9bdceafd9cab85d789ed43f7ceb8ab402ae1a150 /src/network/socket/qnativesocketengine_win.cpp
parent30395e9185be36a8eff5ae59e41636a4c1738ae1 (diff)
QNativeSocketEngine/Win: fix write() in case of splitting
When a first call to ::WSASend() consumes less data than requested, we are trying to make a second call, leaving 'bytesToSend' unmodified. Instead of setting a new value for 'bytesToSend', it seems reasonable to break the loop, if the system buffer overflow detected. Pick-to: 5.15 Change-Id: I8038e95c20221518955efe786f2d0dadb98360fa Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/network/socket/qnativesocketengine_win.cpp')
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp4
1 files changed, 1 insertions, 3 deletions
diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp
index 70c96f0096..35422a1e80 100644
--- a/src/network/socket/qnativesocketengine_win.cpp
+++ b/src/network/socket/qnativesocketengine_win.cpp
@@ -1444,10 +1444,8 @@ qint64 QNativeSocketEnginePrivate::nativeWrite(const char *data, qint64 len)
int err;
if (socketRet != SOCKET_ERROR) {
- if (ret == len)
+ if (ret == len || bytesToSend != qint64(bytesWritten))
break;
- else
- continue;
} else if ((err = WSAGetLastError()) == WSAEWOULDBLOCK) {
break;
} else if (err == WSAENOBUFS) {