summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qtsingleapplication/src/qtlocalpeer.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/qtsingleapplication/src/qtlocalpeer.cpp b/qtsingleapplication/src/qtlocalpeer.cpp
index c7ce527..f69463a 100644
--- a/qtsingleapplication/src/qtlocalpeer.cpp
+++ b/qtsingleapplication/src/qtlocalpeer.cpp
@@ -176,8 +176,17 @@ void QtLocalPeer::receiveConnection()
if (!socket)
return;
- while (socket->bytesAvailable() < (int)sizeof(quint32))
+ while (true) {
+ if (socket->state() == QAbstractSocket::UnconnectedState) {
+ qWarning("QtLocalPeer: Peer disconnected");
+ delete socket;
+ return;
+ }
+ if (socket->bytesAvailable() >= qint64(sizeof(quint32)))
+ break;
socket->waitForReadyRead();
+ }
+
QDataStream ds(socket);
QByteArray uMsg;
quint32 remaining;