X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fircserverhandler.cpp;h=ae92b0935d8efade3d1c1f6203838412b0626b77;hp=e46bb737972023e30a2b4e5629aca07a2c0e5c16;hb=56607f81246f04db3a0e71c9a8757d7f75d6cfcf;hpb=ffa244c20cbaf74d50e27a9416d33ea8e08e2836 diff --git a/src/core/ircserverhandler.cpp b/src/core/ircserverhandler.cpp index e46bb737..ae92b093 100644 --- a/src/core/ircserverhandler.cpp +++ b/src/core/ircserverhandler.cpp @@ -558,6 +558,15 @@ void IrcServerHandler::handle353(const QString &prefix, const QList // we don't use this information at the time beeing QString channelname = serverDecode(params[1]); + IrcChannel *channel = network()->ircChannel(channelname); + if(!channel) { + qWarning() << "IrcServerHandler::handle353(): received unknown target channel:" << channelname; + return; + } + + QStringList nicks; + QStringList modes; + foreach(QString nick, serverDecode(params[2]).split(' ')) { QString mode = QString(); @@ -566,12 +575,11 @@ void IrcServerHandler::handle353(const QString &prefix, const QList nick = nick.mid(1); } - IrcUser *ircuser = network()->newIrcUser(nick); - ircuser->joinChannel(channelname); - - if(!mode.isNull()) - network()->ircChannel(channelname)->addUserMode(ircuser, mode); + nicks << nick; + modes << mode; } + + channel->joinIrcUsers(nicks, modes); } /* RPL_ENDOFWHOWAS - " :End of WHOWAS" */