From 5d13cd9da2d94fdb593aed3b7fff8e33b0535c02 Mon Sep 17 00:00:00 2001 From: kobuki Date: Mon, 5 May 2014 11:48:33 +0200 Subject: [PATCH] Receiving DCC transfers fail with certain iroffer daemons. The bouncedcc module ignores file name quotes sent by the server (e.g. when the file name contains spaces) and consequently parses the DCC parameters incorrectly. Fixes #289 --- modules/bouncedcc.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/bouncedcc.cpp b/modules/bouncedcc.cpp index 206faed9..89c63fc6 100644 --- a/modules/bouncedcc.cpp +++ b/modules/bouncedcc.cpp @@ -160,11 +160,11 @@ public: virtual EModRet OnUserCTCP(CString& sTarget, CString& sMessage) { if (sMessage.Equals("DCC ", false, 4)) { - CString sType = sMessage.Token(1); - CString sFile = sMessage.Token(2); - unsigned long uLongIP = sMessage.Token(3).ToULong(); - unsigned short uPort = sMessage.Token(4).ToUShort(); - unsigned long uFileSize = sMessage.Token(5).ToULong(); + CString sType = sMessage.Token(1, false, " ", false, "\"", "\"", true); + CString sFile = sMessage.Token(2, false, " ", false, "\"", "\"", false); + unsigned long uLongIP = sMessage.Token(3, false, " ", false, "\"", "\"", true).ToULong(); + unsigned short uPort = sMessage.Token(4, false, " ", false, "\"", "\"", true).ToUShort(); + unsigned long uFileSize = sMessage.Token(5, false, " ", false, "\"", "\"", true).ToULong(); CString sIP = GetLocalDCCIP(); if (!UseClientIP()) { @@ -215,11 +215,11 @@ public: virtual EModRet OnPrivCTCP(CNick& Nick, CString& sMessage) { if (sMessage.Equals("DCC ", false, 4) && m_pNetwork->IsUserAttached()) { // DCC CHAT chat 2453612361 44592 - CString sType = sMessage.Token(1); - CString sFile = sMessage.Token(2); - unsigned long uLongIP = sMessage.Token(3).ToULong(); - unsigned short uPort = sMessage.Token(4).ToUShort(); - unsigned long uFileSize = sMessage.Token(5).ToULong(); + CString sType = sMessage.Token(1, false, " ", false, "\"", "\"", true); + CString sFile = sMessage.Token(2, false, " ", false, "\"", "\"", false); + unsigned long uLongIP = sMessage.Token(3, false, " ", false, "\"", "\"", true).ToULong(); + unsigned short uPort = sMessage.Token(4, false, " ", false, "\"", "\"", true).ToUShort(); + unsigned long uFileSize = sMessage.Token(5, false, " ", false, "\"", "\"", true).ToULong(); if (sType.Equals("CHAT")) { CNick FromNick(Nick.GetNickMask());