From: Manuel Nickschas Date: Wed, 15 Jul 2009 22:08:52 +0000 (+0200) Subject: Properly handle unlimited IRC reconnection retries X-Git-Tag: 0.5-rc1~161 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=dee6c478632feeae5c845be82251117556ff1511;hp=4c604b2b9f82c728dfb951586f9b6fe099671535 Properly handle unlimited IRC reconnection retries Fixes #743. Also, do the first reconnect retry immediately after disconnect even with unlimited retries enabled. --- diff --git a/src/core/corenetwork.cpp b/src/core/corenetwork.cpp index b1278ca9..81c92cbf 100644 --- a/src/core/corenetwork.cpp +++ b/src/core/corenetwork.cpp @@ -373,7 +373,7 @@ void CoreNetwork::socketDisconnected() { Core::setNetworkConnected(userId(), networkId(), false); } else if(_autoReconnectCount != 0) { setConnectionState(Network::Reconnecting); - if(_autoReconnectCount == autoReconnectRetries()) + if(_autoReconnectCount == -1 || _autoReconnectCount == autoReconnectRetries()) doAutoReconnect(); // first try is immediate else _autoReconnectTimer.start(); @@ -409,7 +409,7 @@ void CoreNetwork::networkInitialized() { if(useAutoReconnect()) { // reset counter - _autoReconnectCount = autoReconnectRetries(); + _autoReconnectCount = unlimitedReconnectRetries() ? -1 : autoReconnectRetries(); } // restore away state @@ -520,8 +520,8 @@ void CoreNetwork::doAutoReconnect() { qWarning() << "CoreNetwork::doAutoReconnect(): Cannot reconnect while not being disconnected!"; return; } - if(_autoReconnectCount > 0) - _autoReconnectCount--; + if(_autoReconnectCount > 0 || _autoReconnectCount == -1) + _autoReconnectCount--; // -2 means we delay the next reconnect connectToIrc(true); }