fixing output issues with IPv6 host addresses
[quassel.git] / src / core / coresession.cpp
index f868379..bbb78b3 100644 (file)
@@ -29,6 +29,7 @@
 #include "buffersyncer.h"
 #include "corebacklogmanager.h"
 #include "corebufferviewmanager.h"
+#include "coreirclisthelper.h"
 #include "storage.h"
 
 #include "corenetwork.h"
@@ -46,6 +47,7 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent)
     _bufferSyncer(new BufferSyncer(this)),
     _backlogManager(new CoreBacklogManager(this)),
     _bufferViewManager(new CoreBufferViewManager(_signalProxy, this)),
+    _ircListHelper(new CoreIrcListHelper(this)),
     scriptEngine(new QScriptEngine(this))
 {
 
@@ -87,7 +89,10 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent)
 
   // init BacklogManager;
   p->synchronize(_backlogManager);
-    
+
+  // init IrcListHelper;
+  p->synchronize(ircListHelper());
+  
   // Restore session state
   if(restoreState) restoreSessionState();
 
@@ -233,7 +238,7 @@ void CoreSession::removeClient(QIODevice *iodev) {
   // no checks for validity check - privateslot...
   QTcpSocket *socket = qobject_cast<QTcpSocket *>(iodev);
   if(socket)
-    qDebug() << qPrintable(tr("Client %1 disconnected (UserId: %2).").arg(socket->peerAddress().toString()).arg(user().toInt()));
+    qDebug() << qPrintable(tr("Client")) << qPrintable(socket->peerAddress().toString()) << qPrintable(tr("disconnected (UserId: %1).").arg(user().toInt()));
   else
     qDebug() << "Local client disconnedted.";
   disconnect(socket, 0, this, 0);
@@ -453,8 +458,12 @@ void CoreSession::destroyNetwork(NetworkId id) {
     // this can happen if the network was reconnecting while being removed
     _connections.take(id)->deleteLater();
   }
+  QList<BufferId> removedBuffers = Core::requestBufferIdsForNetwork(user(), id);
   Network *net = _networks.take(id);
   if(net && Core::removeNetwork(user(), id)) {
+    foreach(BufferId bufferId, removedBuffers) {
+      _bufferSyncer->removeBuffer(bufferId);
+    }
     emit networkRemoved(id);
     net->deleteLater();
   }