From: Bas Pape Date: Wed, 26 Sep 2012 08:56:50 +0000 (+0200) Subject: Only escape \ with standards-compliant ctcp X-Git-Tag: 0.9-beta1~30 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=fd92bfb1f093dcc6295ca9de2c34780d288b0fe2 Only escape \ with standards-compliant ctcp Fixes #1142 --- diff --git a/src/core/ctcpparser.cpp b/src/core/ctcpparser.cpp index ee300df8..7517db6f 100644 --- a/src/core/ctcpparser.cpp +++ b/src/core/ctcpparser.cpp @@ -37,14 +37,24 @@ CtcpParser::CtcpParser(CoreSession *coreSession, QObject *parent) _ctcpMDequoteHash[MQUOTE + 'r'] = QByteArray(1, '\r'); _ctcpMDequoteHash[MQUOTE + MQUOTE] = MQUOTE; - QByteArray XQUOTE = QByteArray("\134"); - _ctcpXDelimDequoteHash[XQUOTE + XQUOTE] = XQUOTE; - _ctcpXDelimDequoteHash[XQUOTE + QByteArray("a")] = XDELIM; + setStandardCtcp(_coreSession->networkConfig()->standardCtcp()); + connect(_coreSession->networkConfig(), SIGNAL(standardCtcpSet(bool)), this, SLOT(setStandardCtcp(bool))); connect(this, SIGNAL(newEvent(Event *)), _coreSession->eventManager(), SLOT(postEvent(Event *))); } +void CtcpParser::setStandardCtcp(bool enabled) +{ + QByteArray XQUOTE = QByteArray("\134"); + if (enabled) + _ctcpXDelimDequoteHash[XQUOTE + XQUOTE] = XQUOTE; + else + _ctcpXDelimDequoteHash.remove(XQUOTE + XQUOTE); + _ctcpXDelimDequoteHash[XQUOTE + QByteArray("a")] = XDELIM; +} + + void CtcpParser::displayMsg(NetworkEvent *event, Message::Type msgType, const QString &msg, const QString &sender, const QString &target, Message::Flags msgFlags) { diff --git a/src/core/ctcpparser.h b/src/core/ctcpparser.h index d3f50c9b..5847785b 100644 --- a/src/core/ctcpparser.h +++ b/src/core/ctcpparser.h @@ -75,6 +75,9 @@ protected: QByteArray pack(const QByteArray &ctcpTag, const QByteArray &message); void packedReply(CoreNetwork *network, const QString &bufname, const QList &replies); +private slots: + void setStandardCtcp(bool enabled); + private: inline QString targetDecode(IrcEventRawMessage *e, const QByteArray &msg) { return coreNetwork(e)->userDecode(e->target(), msg); }