Don't have CTCP ignore rules apply to ACTIONs
[quassel.git] / src / core / ctcpparser.cpp
index fc71057..1aa8c0e 100644 (file)
@@ -177,7 +177,8 @@ void CtcpParser::parse(IrcEventRawMessage *e, Message::Type messagetype) {
 
     ctcpcmd = ctcpcmd.toUpper();
 
-    if(!coreSession()->ignoreListManager()->ctcpMatch(e->prefix(), e->network()->networkName(), ctcpcmd)) {
+    // we don't want to block /me messages by the CTCP ignore list
+    if(ctcpcmd == QLatin1String("ACTION") || !coreSession()->ignoreListManager()->ctcpMatch(e->prefix(), e->network()->networkName(), ctcpcmd)) {
       if(uuid.isNull())
         uuid = QUuid::createUuid();
 
@@ -188,7 +189,8 @@ void CtcpParser::parse(IrcEventRawMessage *e, Message::Type messagetype) {
   }
   if(!ctcpEvents.isEmpty()) {
     _replies.insert(uuid, CtcpReply(coreNetwork(e), nickFromMask(e->prefix())));
-    CtcpEvent *flushEvent = new CtcpEvent(uuid);
+    CtcpEvent *flushEvent = new CtcpEvent(EventManager::CtcpEventFlush, e->network(), e->prefix(), e->target(),
+                                          ctcptype, "INVALID", QString(), e->timestamp(), uuid);
     ctcpEvents << flushEvent;
     foreach(CtcpEvent *event, ctcpEvents) {
       coreSession()->eventManager()->sendEvent(event);
@@ -214,7 +216,8 @@ void CtcpParser::sendCtcpEvent(CtcpEvent *e) {
     }
   } else if(e->type() == EventManager::CtcpEventFlush && _replies.contains(e->uuid())) {
     CtcpReply reply = _replies.take(e->uuid());
-    packedReply(net, reply.bufferName, reply.replies);
+    if(reply.replies.count())
+      packedReply(net, reply.bufferName, reply.replies);
   }
 }