Don't respond to key exchange requests in channels
[quassel.git] / src / core / ircparser.cpp
index f3db4fc..88c6b3c 100644 (file)
@@ -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);