X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fcoreconnection.cpp;h=717fff39fea0391ea74ccd6c04b33cf1d300ae30;hb=76ad6e4e368f8444adc4252f5abe9adfb1aed273;hp=8ad692e2cf50177462f4049d03d7d84eded1fa45;hpb=ea7fa1e8cc275e6c431512d2003ec960f647bbef;p=quassel.git diff --git a/src/client/coreconnection.cpp b/src/client/coreconnection.cpp index 8ad692e2..717fff39 100644 --- a/src/client/coreconnection.cpp +++ b/src/client/coreconnection.cpp @@ -42,7 +42,9 @@ CoreConnection::CoreConnection(CoreAccountModel *model, QObject *parent) _wantReconnect(false), _progressMinimum(0), _progressMaximum(-1), - _progressValue(-1) + _progressValue(-1), + _wasReconnect(false), + _requestedDisconnect(false) { qRegisterMetaType("CoreConnection::ConnectionState"); } @@ -256,6 +258,7 @@ void CoreConnection::coreSocketError(QAbstractSocket::SocketError) { void CoreConnection::coreSocketDisconnected() { // qDebug() << Q_FUNC_INFO; + _wasReconnect = !_requestedDisconnect; resetConnection(true); // FIXME handle disconnects gracefully } @@ -304,6 +307,7 @@ void CoreConnection::coreHasData() { } void CoreConnection::disconnectFromCore() { + _requestedDisconnect = true; disconnectFromCore(QString(), false); // requested disconnect, so don't try to reconnect } @@ -311,6 +315,8 @@ void CoreConnection::disconnectFromCore(const QString &errorString, bool wantRec if(!wantReconnect) _reconnectTimer.stop(); + _wasReconnect = wantReconnect; // store if disconnect was requested + if(errorString.isEmpty()) emit connectionError(tr("Disconnected")); else @@ -328,6 +334,7 @@ void CoreConnection::resetConnection(bool wantReconnect) { _socket->deleteLater(); _socket = 0; } + _requestedDisconnect = false; _blockSize = 0; _coreMsgBuffer.clear();