From 6f83bfc10e0edcc3a953661640e7a3a1d86729a4 Mon Sep 17 00:00:00 2001 From: Morton Lin Date: Thu, 5 Nov 2020 00:22:06 +0800 Subject: [PATCH] fix issue of 'Error writing to QHostAddress("")' (#9144) * fix issue of 'Error writing to QHostAddress("")' (cherry picked from commit 9450b97c94af8c4919151ae91e9c7601b74e95ad) * remove obsolete comments (cherry picked from commit 7ff3b0049b9f91f39f5e764c92058ba1c0484308) * add comment on why the additional condition check is required. (cherry picked from commit 149e19b7c90f178f8a7e8a544243ce7acd642fe8) --- src/comm/UDPLink.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/comm/UDPLink.cc b/src/comm/UDPLink.cc index c81ab4e3d..4ef41dfe7 100644 --- a/src/comm/UDPLink.cc +++ b/src/comm/UDPLink.cc @@ -181,8 +181,12 @@ void UDPLink::readBytes() datagram.resize(_socket->pendingDatagramSize()); QHostAddress sender; quint16 senderPort; - //-- Note: This call is broken in Qt 5.9.3 on Windows. It always returns a blank sender and 0 for the port. - _socket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); + // If the other end is reset then it will still report data available, + // but will fail on the readDatagram call + qint64 slen = _socket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); + if (slen == -1) { + break; + } databuffer.append(datagram); //-- Wait a bit before sending it over if (databuffer.size() > 10 * 1024) { -- 2.22.0