Don't create zombie users
authorSebastian Goth <seezer@roath.org>
Wed, 20 Jan 2010 17:49:40 +0000 (18:49 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sun, 31 Jan 2010 19:45:03 +0000 (20:45 +0100)
src/core/ircserverhandler.cpp

index 33445c2..992d486 100644 (file)
@@ -1077,17 +1077,20 @@ void IrcServerHandler::handleNetsplitJoin(const QString &channel, const QStringL
   }
   QList<IrcUser *> ircUsers;
   QStringList newModes = modes;
   }
   QList<IrcUser *> ircUsers;
   QStringList newModes = modes;
+  QStringList newUsers = users;
 
   foreach(QString user, users) {
 
   foreach(QString user, users) {
-    IrcUser *iu = network()->updateNickFromMask(user);
+    IrcUser *iu = network()->ircUser(nickFromMask(user));
     if(iu)
       ircUsers.append(iu);
     if(iu)
       ircUsers.append(iu);
-    else {
-      newModes.removeAt(users.indexOf(user));
+    else { // the user already quit
+      int idx = users.indexOf(user);
+      newUsers.removeAt(idx);
+      newModes.removeAt(idx);
     }
   }
 
     }
   }
 
-  QString msg = users.join("#:#").append("#:#").append(quitMessage);
+  QString msg = newUsers.join("#:#").append("#:#").append(quitMessage);
   emit displayMsg(Message::NetsplitJoin, BufferInfo::ChannelBuffer, channel, msg);
   ircChannel->joinIrcUsers(ircUsers, newModes);
 }
   emit displayMsg(Message::NetsplitJoin, BufferInfo::ChannelBuffer, channel, msg);
   ircChannel->joinIrcUsers(ircUsers, newModes);
 }