summaryrefslogtreecommitdiffstats
path: root/src/network/socket
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2017-10-04 21:20:01 -0700
committerThiago Macieira <thiago.macieira@intel.com>2017-10-07 19:29:16 +0000
commit10f2b5aa66c95563702b02770df39c7cf1b2ef61 (patch)
tree6825b0c878e5fe7c612be2a1cabf5968045fd979 /src/network/socket
parente470348d87eff920e9549b683f80a09144fb3e54 (diff)
QUdpSocket: make sure receiveDatagram() returns empty on error
If the datagram reception failed, we forgot to set the buffer back to empty. The returned QNetworkDatagram did report isValid() == false, but it was possible to get the .data() and check its size, getting nonsense. Tests in the next commit. Change-Id: I638cf58bfa7b4e5fb386fffd14ea91adf2133d47 Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/network/socket')
-rw-r--r--src/network/socket/qudpsocket.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/network/socket/qudpsocket.cpp b/src/network/socket/qudpsocket.cpp
index 37b385dfb5..79629a07f2 100644
--- a/src/network/socket/qudpsocket.cpp
+++ b/src/network/socket/qudpsocket.cpp
@@ -454,10 +454,12 @@ QNetworkDatagram QUdpSocket::receiveDatagram(qint64 maxSize)
QAbstractSocketEngine::WantAll);
d->hasPendingData = false;
d->socketEngine->setReadNotificationEnabled(true);
- if (readBytes < 0)
+ if (readBytes < 0) {
d->setErrorAndEmit(d->socketEngine->error(), d->socketEngine->errorString());
- else if (readBytes != result.d->data.size())
- result.d->data.truncate(readBytes);
+ readBytes = 0;
+ }
+
+ result.d->data.truncate(readBytes);
return result;
}