X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fircserverhandler.cpp;h=9f104f42e221a16c76b459285fc8a951a57c4975;hb=9121ebdb51bd093c7a40d9df33e2e4bfa3d8c87d;hp=c97571ddb6e286dafd9909c311efb8bab9100fd7;hpb=38e0c303f59d3f6654bff6d5f97ab778a443b7b1;p=quassel.git diff --git a/src/core/ircserverhandler.cpp b/src/core/ircserverhandler.cpp index c97571dd..9f104f42 100644 --- a/src/core/ircserverhandler.cpp +++ b/src/core/ircserverhandler.cpp @@ -153,7 +153,10 @@ void IrcServerHandler::defaultHandler(QString cmd, const QString &prefix, const // many nets define their own WHOIS fields. we fetch those not in need of special attention here: emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", "[Whois] " + params.join(" "), prefix); } else { - emit displayMsg(Message::Error, BufferInfo::StatusBuffer, "", cmd + " " + params.join(" "), prefix); + if(networkConnection()->coreSession()->ircListHelper()->requestInProgress(network()->networkId())) + networkConnection()->coreSession()->ircListHelper()->reportError(params.join(" ")); + else + emit displayMsg(Message::Error, BufferInfo::StatusBuffer, "", cmd + " " + params.join(" "), prefix); } } //qDebug() << prefix <<":"< emit displayMsg(Message::Mode, BufferInfo::ChannelBuffer, serverDecode(params[0]), serverDecode(params).join(" "), prefix); IrcChannel *channel = network()->ircChannel(params[0]); + if(!channel) { + // we received mode information for a channel we're not in. that means probably we've just been kicked out or something like that + // anyways: we don't have a place to store the data --> discard the info. + return; + } + QString modes = params[1]; bool add = true; int paramOffset = 2;