IRC disconnects are now handled properly
[quassel.git] / src / core / coresession.cpp
index 28a074f..726ddb8 100644 (file)
@@ -106,9 +106,9 @@ void CoreSession::connectToNetwork(QString network) {
   uint networkid = getNetworkId(network);
   if(!servers.contains(networkid)) {
     Server *server = new Server(userId(), networkid, network);
   uint networkid = getNetworkId(network);
   if(!servers.contains(networkid)) {
     Server *server = new Server(userId(), networkid, network);
+    servers[networkid] = server;
     attachServer(server);
     server->start();
     attachServer(server);
     server->start();
-    servers[networkid] = server;
   }
   emit connectToIrc(network);
 }
   }
   emit connectToIrc(network);
 }
@@ -146,8 +146,9 @@ void CoreSession::serverConnected(uint networkid) {
 }
 
 void CoreSession::serverDisconnected(uint networkid) {
 }
 
 void CoreSession::serverDisconnected(uint networkid) {
-  servers.remove(networkid);
-  delete servers[networkid];
+  Q_ASSERT(servers.contains(networkid));
+  servers.take(networkid)->deleteLater();
+  Q_ASSERT(!servers.contains(networkid));
 }
 
 void CoreSession::msgFromGui(BufferInfo bufid, QString msg) {
 }
 
 void CoreSession::msgFromGui(BufferInfo bufid, QString msg) {