Made the client disconnection more verbose. And some minor fixes.
authorMarcus Eggenberger <egs@quassel-irc.org>
Tue, 1 Apr 2008 09:51:48 +0000 (09:51 +0000)
committerMarcus Eggenberger <egs@quassel-irc.org>
Tue, 1 Apr 2008 09:51:48 +0000 (09:51 +0000)
src/common/signalproxy.cpp
src/core/core.cpp
src/core/coresession.cpp
src/core/coresession.h
version.inc

index 9078f24..22e71f1 100644 (file)
@@ -312,9 +312,9 @@ void SignalProxy::removePeer(QIODevice* iodev) {
 
 void SignalProxy::removePeerBySender() {
   // OK we're brutal here... but since it's a private slot we know what we've got connected to it...
+  // this Slot is not triggered by destroyed, so the object is still alive and can be used!
   QIODevice *ioDev = (QIODevice *)(sender());
   removePeer(ioDev);
-  qDebug() << "Client disconnected.";
 }
 
 void SignalProxy::objectRenamed(const QString &newname, const QString &oldname) {
index 8a1c777..21e7c16 100644 (file)
@@ -468,7 +468,7 @@ void Core::processClientMessage(QTcpSocket *socket, const QVariantMap &msg) {
       }
       reply["MsgType"] = "ClientLoginAck";
       SignalProxy::writeDataToDevice(socket, reply);
-      qDebug() << qPrintable(tr("Client %1 initialized and authentificated successfully as \"%2\".").arg(socket->peerAddress().toString(), msg["User"].toString()));
+      qDebug() << qPrintable(tr("Client %1 initialized and authentificated successfully as \"%2\" (UserId: %3).").arg(socket->peerAddress().toString(), msg["User"].toString()).arg(uid.toInt()));
       setupClientSession(socket, uid);
     }
   }
index d71144f..4003783 100644 (file)
@@ -49,7 +49,8 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent)
 {
 
   SignalProxy *p = signalProxy();
-
+  connect(p, SIGNAL(peerRemoved(QIODevice *)), this, SLOT(removeClient(QIODevice *)));
+  
   //p->attachSlot(SIGNAL(disconnectFromNetwork(NetworkId)), this, SLOT(disconnectFromNetwork(NetworkId))); // FIXME
   p->attachSlot(SIGNAL(sendInput(BufferInfo, QString)), this, SLOT(msgFromClient(BufferInfo, QString)));
   p->attachSignal(this, SIGNAL(displayMsg(Message)));
@@ -224,6 +225,17 @@ void CoreSession::addClient(QObject *dev) { // this is QObject* so we can use it
   }
 }
 
+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()));
+  else
+    qDebug() << "Local client disconnedted.";
+  disconnect(socket, 0, this, 0);
+  socket->deleteLater();
+}
+
 SignalProxy *CoreSession::signalProxy() const {
   return _signalProxy;
 }
index 88fefaf..482fa76 100644 (file)
@@ -150,6 +150,8 @@ signals:
   void bufferRenamed(BufferId, QString);
 
 private slots:
+  void removeClient(QIODevice *dev);
+
   void recvStatusMsgFromServer(QString msg);
   void recvMessageFromServer(Message::Type, BufferInfo::Type, QString target, QString text, QString sender = "", quint8 flags = Message::None);
   void networkConnected(NetworkId networkid);
index 7b919d6..21224fd 100644 (file)
@@ -5,7 +5,7 @@
 
   quasselVersion = "0.2.0-alpha5-pre";
   quasselDate = "2008-04-01";
-  quasselBuild = 679;
+  quasselBuild = 680;
 
   //! Minimum client build number the core needs
   clientBuildNeeded = 642;