From 1e4e1e12fb095c49f99e2448066dea704c4116e0 Mon Sep 17 00:00:00 2001 From: Stefan Hacker Date: Thu, 30 Apr 2015 23:09:52 +0200 Subject: Prevent OverlayClient destructor from hanging on disconnect Limit the maximum time a clean disconnect may take to 1s. Previously our GUI thread could become semi-permanently blocked. --- src/mumble/OverlayClient.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/mumble/OverlayClient.cpp b/src/mumble/OverlayClient.cpp index c3c408dfa..4a08fa7c3 100644 --- a/src/mumble/OverlayClient.cpp +++ b/src/mumble/OverlayClient.cpp @@ -90,8 +90,12 @@ OverlayClient::~OverlayClient() { delete qgpiCursor; delete qgpiLogo; - qlsSocket->disconnect(); - qlsSocket->abort(); + qlsSocket->disconnectFromServer(); + if (!qlsSocket->waitForDisconnected(1000)) { + qDebug() << "OverlayClient: Failed to cleanly disconnect: " << qlsSocket->errorString(); + qlsSocket->abort(); + } + qlsSocket->deleteLater(); ougUsers.reset(); -- cgit v1.2.3