summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/crsm.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp
index 4f1b625..73828b6 100644
--- a/src/crsm.cpp
+++ b/src/crsm.cpp
@@ -487,6 +487,14 @@ void CRSM::ircMessageReceived(IrcMessage *message)
}
}
+void CRSM::ircDisconnected()
+{
+ if(!finish)
+ {
+ reconnectIrc();
+ }
+}
+
void CRSM::greet(QString pcName)
{
if(!Session.Clonk.Clients.contains(pcName))
@@ -1537,9 +1545,17 @@ void CRSM::prepareAndConnectIrc()
connection->setPassword(Config.IRC.Password);
connect(connection, SIGNAL(messageReceived(IrcMessage*)), this, SLOT(ircMessageReceived(IrcMessage*)));
+ connect(connection, SIGNAL(disconnected()), this, SLOT(ircDisconnected()));
connection->open();
}
+void CRSM::reconnectIrc()
+{
+ connection->close();
+ delete connection;
+ prepareAndConnectIrc();
+}
+
ClientInfo &CRSM::getClientInfo(const QString &pcName, int cuid, const QString &user)
{
if(!Session.Clonk.Clients.contains(pcName))
@@ -2207,9 +2223,7 @@ CMD_FUNCTION_IMPL(saveConfig)
CMD_FUNCTION_IMPL(reconnectIrc)
respond(client, "Reconnecting...\n");
- connection->close();
- delete connection;
- prepareAndConnectIrc();
+ reconnectIrc();
return Success;
}