X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fircparser.cpp;h=88997551f820020a9c83270457b85874e3cade78;hb=418f497d996892ec16a31d3e282c4996e8677b3a;hp=f3db4fceab455ba03de4849452c2a9606204e690;hpb=76db8cdfbeffaaba359c8e80cf2146da9e9e7f8a;p=quassel.git diff --git a/src/core/ircparser.cpp b/src/core/ircparser.cpp index f3db4fce..88997551 100644 --- a/src/core/ircparser.cpp +++ b/src/core/ircparser.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2013 by the Quassel Project * + * Copyright (C) 2005-2015 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -185,7 +185,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); @@ -232,9 +232,9 @@ void IrcParser::processNetworkIncoming(NetworkDataEvent *e) #ifdef HAVE_QCA2 // Handle DH1080 key exchange - if (params[1].startsWith("DH1080_INIT")) { + if (params[1].startsWith("DH1080_INIT") && !net->isChannelName(target)) { events << new KeyEvent(EventManager::KeyEvent, net, prefix, target, KeyEvent::Init, params[1].mid(12)); - } else if (params[1].startsWith("DH1080_FINISH")) { + } else if (params[1].startsWith("DH1080_FINISH") && !net->isChannelName(target)) { events << new KeyEvent(EventManager::KeyEvent, net, prefix, target, KeyEvent::Finish, params[1].mid(14)); } else #endif @@ -308,6 +308,11 @@ void IrcParser::processNetworkIncoming(NetworkDataEvent *e) for (int i = decParams.count(); i < params.count(); i++) decParams << net->serverDecode(params.at(i)); + // We want to trim the last param just in case, except for PRIVMSG and NOTICE + // ... but those happen to be the only ones not using defaultHandling anyway + if (!decParams.isEmpty() && decParams.last().endsWith(' ')) + decParams.append(decParams.takeLast().trimmed()); + IrcEvent *event; if (type == EventManager::IrcEventNumeric) event = new IrcEventNumeric(num, net, prefix, target);