From: Manuel Nickschas Date: Sat, 7 Feb 2015 16:45:24 +0000 (+0100) Subject: Merge pull request #104 from mamarley/disconnectdesyncfix X-Git-Tag: 0.12-beta1~25 X-Git-Url: https://git.quassel-irc.org/?a=commitdiff_plain;h=1cb02004ee5973b89368bd84f234d4652794690d;hp=71c1023224f3446ea610793cc47019e792359e77;p=quassel.git Merge pull request #104 from mamarley/disconnectdesyncfix Fix potential state desync in disconnectFromIrc() --- diff --git a/src/core/corenetwork.cpp b/src/core/corenetwork.cpp index a3a0812a..7e9ce268 100644 --- a/src/core/corenetwork.cpp +++ b/src/core/corenetwork.cpp @@ -232,17 +232,18 @@ void CoreNetwork::disconnectFromIrc(bool requested, const QString &reason, bool _quitReason = reason; displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Disconnecting. (%1)").arg((!requested && !withReconnect) ? tr("Core Shutdown") : _quitReason)); - switch (socket.state()) { - case QAbstractSocket::ConnectedState: - userInputHandler()->issueQuit(_quitReason); + if (socket.state() == QAbstractSocket::UnconnectedState) { + socketDisconnected(); + } else { + if (socket.state() == QAbstractSocket::ConnectedState) { + userInputHandler()->issueQuit(_quitReason); + } else { + socket.close(); + } if (requested || withReconnect) { // the irc server has 10 seconds to close the socket _socketCloseTimer.start(10000); - break; } - default: - socket.close(); - socketDisconnected(); } }