diff options
-rw-r--r-- | qtsingleapplication/src/qtlocalpeer.cpp | 11 |
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; |