X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fircparser.cpp;h=44b4b523c6a8041bb62228089712e152c0d077b3;hb=f4bccff9c485c977ff027954497b3c4c397ffa1a;hp=681346c1740cc2fbccd2b6ffe41a471347be324d;hpb=dd711790dddee81442e2138b3917764dac39c487;p=quassel.git diff --git a/src/core/ircparser.cpp b/src/core/ircparser.cpp index 681346c1..44b4b523 100644 --- a/src/core/ircparser.cpp +++ b/src/core/ircparser.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -186,7 +186,7 @@ void IrcParser::processNetworkIncoming(NetworkDataEvent *e) QStringList targets = net->serverDecode(params.at(0)).split(',', QString::SkipEmptyParts); QStringList::const_iterator targetIter; for (targetIter = targets.constBegin(); targetIter != targets.constEnd(); ++targetIter) { - QString target = net->isChannelName(*targetIter) ? *targetIter : senderNick; + QString target = net->isChannelName(*targetIter) || net->isStatusMsg(*targetIter) ? *targetIter : senderNick; msg = decrypt(net, target, msg); @@ -280,10 +280,13 @@ void IrcParser::processNetworkIncoming(NetworkDataEvent *e) case EventManager::IrcEventAway: { + // Update hostmask info first. This will create the nick if it doesn't exist, e.g. + // away-notify data being sent before JOIN messages. + net->updateNickFromMask(prefix); + // Separate nick in order to separate server and user decoding QString nick = nickFromMask(prefix); decParams << nick; decParams << (params.count() >= 1 ? net->userDecode(nick, params.at(0)) : QString()); - net->updateNickFromMask(prefix); } break;