X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fircparser.cpp;h=44e6cd19bcb0d38be30e4985062230b71d76ce75;hp=f71f53c156cc48f95338f305b8621e5db7d306a9;hb=4f2d0000935e5f040940aca85a44b905bd916147;hpb=3146ad01b5b29c30adcf0044a52b39aa7e5796d0 diff --git a/src/core/ircparser.cpp b/src/core/ircparser.cpp index f71f53c1..44e6cd19 100644 --- a/src/core/ircparser.cpp +++ b/src/core/ircparser.cpp @@ -28,6 +28,7 @@ #ifdef HAVE_QCA2 # include "cipher.h" +# include "keyevent.h" #endif IrcParser::IrcParser(CoreSession *session) : @@ -228,7 +229,16 @@ void IrcParser::processNetworkIncoming(NetworkDataEvent *e) if (!net->isChannelName(target)) target = nickFromMask(prefix); } - events << new IrcEventRawMessage(EventManager::IrcEventRawNotice, net, params[1], prefix, target, e->timestamp()); + +#ifdef HAVE_QCA2 + // Handle DH1080 key exchange + if (params[1].startsWith("DH1080_INIT")) { + events << new KeyEvent(EventManager::KeyEvent, net, prefix, target, KeyEvent::Init, params[1].mid(12)); + } else if (params[1].startsWith("DH1080_FINISH")) { + events << new KeyEvent(EventManager::KeyEvent, net, prefix, target, KeyEvent::Finish, params[1].mid(14)); + } else +#endif + events << new IrcEventRawMessage(EventManager::IrcEventRawNotice, net, params[1], prefix, target, e->timestamp()); } } break;