X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fctcphandler.cpp;h=a944c02220aca5a93962f8d403a197ee24b9d79d;hp=23753ccb746bf53a692f7f5878a16cd75e3f7b79;hb=5c6804f291a63f978e328aeddcc8448e3443b45e;hpb=d43df4abb53a5ea90fa8e7bc939bdcfb6fc141c3 diff --git a/src/core/ctcphandler.cpp b/src/core/ctcphandler.cpp index 23753ccb..a944c022 100644 --- a/src/core/ctcphandler.cpp +++ b/src/core/ctcphandler.cpp @@ -19,10 +19,10 @@ ***************************************************************************/ #include "ctcphandler.h" -#include "global.h" -#include "util.h" #include "message.h" #include "network.h" +#include "quassel.h" +#include "util.h" CtcpHandler::CtcpHandler(NetworkConnection *parent) : BasicHandler(parent), @@ -44,7 +44,7 @@ QByteArray CtcpHandler::dequote(const QByteArray &message) { QByteArray dequotedMessage; QByteArray messagepart; QHash::iterator ctcpquote; - + // copy dequote Message for(int i = 0; i < message.size(); i++) { messagepart = message.mid(i,1); @@ -86,15 +86,15 @@ QByteArray CtcpHandler::xdelimDequote(const QByteArray &message) { void CtcpHandler::parse(Message::Type messageType, const QString &prefix, const QString &target, const QByteArray &message) { QByteArray ctcp; - + //lowlevel message dequote QByteArray dequotedMessage = dequote(message); CtcpType ctcptype = messageType == Message::Notice ? CtcpReply : CtcpQuery; - - quint8 flags = (messageType == Message::Notice && !network()->isChannelName(target)) + + Message::Flags flags = (messageType == Message::Notice && !network()->isChannelName(target)) ? Message::Redirected : Message::None; @@ -108,13 +108,11 @@ void CtcpHandler::parse(Message::Type messageType, const QString &prefix, const xdelimEndPos = dequotedMessage.indexOf(XDELIM, xdelimPos + 1); if(xdelimEndPos == -1) { - // no matching end delimiter found... - dequotedMessage = dequotedMessage.mid(xdelimPos + 1); - break; - } else { - ctcp = xdelimDequote(dequotedMessage.mid(xdelimPos + 1, xdelimEndPos - xdelimPos - 1)); - dequotedMessage = dequotedMessage.mid(xdelimEndPos + 1); + // no matching end delimiter found... treat rest of the message as ctcp + xdelimEndPos = dequotedMessage.count(); } + ctcp = xdelimDequote(dequotedMessage.mid(xdelimPos + 1, xdelimEndPos - xdelimPos - 1)); + dequotedMessage = dequotedMessage.mid(xdelimEndPos + 1); //dispatch the ctcp command QString ctcpcmd = userDecode(target, ctcp.left(spacePos)); @@ -131,7 +129,7 @@ void CtcpHandler::parse(Message::Type messageType, const QString &prefix, const handle(ctcpcmd, Q_ARG(CtcpType, ctcptype), Q_ARG(QString, prefix), Q_ARG(QString, target), Q_ARG(QString, ctcpparam)); } - + if(!dequotedMessage.isEmpty()) displayMsg(messageType, target, userDecode(target, dequotedMessage), prefix, flags); } @@ -177,8 +175,8 @@ void CtcpHandler::handlePing(CtcpType ctcptype, const QString &prefix, const QSt void CtcpHandler::handleVersion(CtcpType ctcptype, const QString &prefix, const QString &target, const QString ¶m) { Q_UNUSED(target) if(ctcptype == CtcpQuery) { - reply(nickFromMask(prefix), "VERSION", QString("Quassel IRC (v%1 build >= %2) -- http://www.quassel-irc.org") - .arg(Global::quasselVersion).arg(Global::quasselBuild)); + reply(nickFromMask(prefix), "VERSION", QString("Quassel IRC %1 (built on %2) -- http://www.quassel-irc.org") + .arg(Global::quasselVersion).arg(Global::quasselBuildDate)); emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Received CTCP VERSION request by %1").arg(prefix)); } else { // display Version answer