From 4007828820bfd3fa4b5d081052cf5a95fdbd02db Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 27 Nov 2017 16:13:25 +0100 Subject: [PATCH] Clang: Disconnect from server if process is a zombie Task-number: QTCREATORBUG-19370 Change-Id: Ibf96c38004e0e0e9aa436df946076979f07df0da Reviewed-by: Nikolai Kosjar --- src/libs/clangsupport/connectionclient.cpp | 7 +++++++ src/libs/clangsupport/connectionclient.h | 1 + 2 files changed, 8 insertions(+) diff --git a/src/libs/clangsupport/connectionclient.cpp b/src/libs/clangsupport/connectionclient.cpp index 92028bc7bec..487b754fdb4 100644 --- a/src/libs/clangsupport/connectionclient.cpp +++ b/src/libs/clangsupport/connectionclient.cpp @@ -69,6 +69,12 @@ void ConnectionClient::startProcessAndConnectToServerAsynchronously() m_processFuture = m_processCreator.createProcess(); } +void ConnectionClient::disconnectFromServer() +{ + if (m_localSocket) + m_localSocket->disconnectFromServer(); +} + bool ConnectionClient::isConnected() const { return m_localSocket && m_localSocket->state() == QLocalSocket::ConnectedState; @@ -164,6 +170,7 @@ void ConnectionClient::restartProcessIfTimerIsNotResettedAndSocketIsEmpty() if (!m_localSocket || m_localSocket->bytesAvailable() > 0) return; // We come first, the incoming data was not yet processed. + disconnectFromServer(); restartProcessAsynchronously(); } diff --git a/src/libs/clangsupport/connectionclient.h b/src/libs/clangsupport/connectionclient.h index 6cd79956f5f..327275e0502 100644 --- a/src/libs/clangsupport/connectionclient.h +++ b/src/libs/clangsupport/connectionclient.h @@ -58,6 +58,7 @@ public: virtual ~ConnectionClient(); void startProcessAndConnectToServerAsynchronously(); + void disconnectFromServer(); bool isConnected() const; void sendEndMessage();