From cd96632965e26f03a2a0a61d98598f1c98d57d72 Mon Sep 17 00:00:00 2001 From: Kai Koehne <kai.koehne@digia.com> Date: Mon, 18 Feb 2013 16:27:42 +0100 Subject: [PATCH] QtSingleApplication: Don't hang if client does not send data Do not wait forever when trying to read data from a connection. The client might already have been giving up, and the socket therefore become invalid without any data arriving. Task-number: QTCREATORBUG-6467 Change-Id: Ie2e52709c92c25539491315bb5106b653df3fe8e Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> --- src/shared/qtsingleapplication/qtlocalpeer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/shared/qtsingleapplication/qtlocalpeer.cpp b/src/shared/qtsingleapplication/qtlocalpeer.cpp index 824a2062b59..6410db3195a 100644 --- a/src/shared/qtsingleapplication/qtlocalpeer.cpp +++ b/src/shared/qtsingleapplication/qtlocalpeer.cpp @@ -139,8 +139,11 @@ void QtLocalPeer::receiveConnection() return; // Why doesn't Qt have a blocking stream that takes care of this shait??? - while (socket->bytesAvailable() < static_cast<int>(sizeof(quint32))) - socket->waitForReadyRead(); + while (socket->bytesAvailable() < static_cast<int>(sizeof(quint32))) { + if (!socket->isValid()) // stale request + return; + socket->waitForReadyRead(1000); + } QDataStream ds(socket); QByteArray uMsg; quint32 remaining; -- GitLab