From 1f77332db07d6a82ac9a8114f3bffa9373df2cea Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Tue, 13 Mar 2018 12:15:02 +0100 Subject: [PATCH] winrt: Remove partially read datagrams from queue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit According to the documentation, datagrams that were not completely read are discarded. Change-Id: Id3a038d8aeeba05e8c8f92b70877f5f5297b89ca Reviewed-by: MÃ¥rten Nordheim Reviewed-by: Maurice Kalinowski Reviewed-by: Andre de la Rocha --- src/network/socket/qnativesocketengine_winrt.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp index 474dbdd13c..3ca84ad55a 100644 --- a/src/network/socket/qnativesocketengine_winrt.cpp +++ b/src/network/socket/qnativesocketengine_winrt.cpp @@ -1075,14 +1075,10 @@ qint64 QNativeSocketEngine::readDatagram(char *data, qint64 maxlen, QIpPacketHea *header = datagram.header; QByteArray readOrigin; - // Do not read the whole datagram. Put the rest of it back into the "queue" - if (maxlen < datagram.data.length()) { + if (maxlen < datagram.data.length()) readOrigin = datagram.data.left(maxlen); - datagram.data = datagram.data.remove(0, maxlen); - d->worker->pendingDatagrams.prepend(datagram); - } else { + else readOrigin = datagram.data; - } if (d->worker->pendingDatagrams.isEmpty()) { qCDebug(lcNetworkSocket) << this << Q_FUNC_INFO << "That's all folks"; d->worker->emitDataReceived = true;