X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fctcpparser.cpp;h=b9dc2408f1b1df8e8bcd3a04131be86c7cf9bb3a;hp=7619a697041826e76f3d9dacb6c41c7f88747d9b;hb=da215fcb9cd3096a3e223c87577d5d4ab8f8518b;hpb=36ea1791352d34e34b6c6cdef02455a4c43acc17 diff --git a/src/core/ctcpparser.cpp b/src/core/ctcpparser.cpp index 7619a697..b9dc2408 100644 --- a/src/core/ctcpparser.cpp +++ b/src/core/ctcpparser.cpp @@ -39,6 +39,8 @@ CtcpParser::CtcpParser(CoreSession *coreSession, QObject *parent) QByteArray XQUOTE = QByteArray("\134"); _ctcpXDelimDequoteHash[XQUOTE + XQUOTE] = XQUOTE; _ctcpXDelimDequoteHash[XQUOTE + QByteArray("a")] = XDELIM; + + connect(this, SIGNAL(newEvent(Event *)), _coreSession->eventManager(), SLOT(postEvent(Event *))); } void CtcpParser::displayMsg(NetworkEvent *event, Message::Type msgType, const QString &msg, const QString &sender, @@ -49,7 +51,7 @@ void CtcpParser::displayMsg(NetworkEvent *event, Message::Type msgType, const QS MessageEvent *msgEvent = new MessageEvent(msgType, event->network(), msg, sender, target, msgFlags); msgEvent->setTimestamp(event->timestamp()); - coreSession()->eventManager()->sendEvent(msgEvent); + emit newEvent(msgEvent); } QByteArray CtcpParser::lowLevelQuote(const QByteArray &message) { @@ -177,7 +179,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(); @@ -192,7 +195,7 @@ void CtcpParser::parse(IrcEventRawMessage *e, Message::Type messagetype) { ctcptype, "INVALID", QString(), e->timestamp(), uuid); ctcpEvents << flushEvent; foreach(CtcpEvent *event, ctcpEvents) { - coreSession()->eventManager()->sendEvent(event); + emit newEvent(event); } } @@ -247,13 +250,10 @@ void CtcpParser::packedReply(CoreNetwork *net, const QString &bufname, const QLi answerSize += replies.at(i).size(); } - QByteArray quotedReply(answerSize, 0); - int nextPos = 0; - QByteArray &reply = quotedReply; + QByteArray quotedReply; + quotedReply.reserve(answerSize); for(int i = 0; i < replies.count(); i++) { - reply = replies.at(i); - quotedReply.replace(nextPos, reply.size(), reply); - nextPos += reply.size(); + quotedReply.append(replies.at(i)); } params << net->serverEncode(bufname) << quotedReply;