diff options
author | Stefan Hacker <dd0t@users.sourceforge.net> | 2015-05-01 00:09:52 +0300 |
---|---|---|
committer | Mikkel Krautz <mikkel@krautz.dk> | 2015-12-10 03:13:57 +0300 |
commit | 1e4e1e12fb095c49f99e2448066dea704c4116e0 (patch) | |
tree | 14a3f408cdb69d9ec7e73660f79d409161f58c83 | |
parent | 1a4ae8deddc9c833ee276cbbb08bd19940e2840c (diff) |
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.
-rw-r--r-- | src/mumble/OverlayClient.cpp | 8 |
1 files 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(); |