diff options
-rw-r--r-- | src/modules/m_dccallow.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/modules/m_dccallow.cpp b/src/modules/m_dccallow.cpp index da9165781..099119867 100644 --- a/src/modules/m_dccallow.cpp +++ b/src/modules/m_dccallow.cpp @@ -413,14 +413,16 @@ class ModuleDCCAllow : public Module if (user == u) return MOD_RES_PASSTHRU; - if ((details.text.length()) && (details.text[0] == '\1')) + std::string ctcpname; + std::string ctcpbody; + if (details.IsCTCP(ctcpname, ctcpbody)) { Expire(); // :jamie!jamie@test-D4457903BA652E0F.silverdream.org PRIVMSG eimaj :DCC SEND m_dnsbl.cpp 3232235786 52650 9676 // :jamie!jamie@test-D4457903BA652E0F.silverdream.org PRIVMSG eimaj :VERSION - if (strncmp(details.text.c_str(), "\1DCC ", 5) == 0) + if (irc::equals(ctcpname, "DCC") && !ctcpbody.empty()) { dl = ext.get(u); if (dl && dl->size()) @@ -430,18 +432,17 @@ class ModuleDCCAllow : public Module return MOD_RES_PASSTHRU; } - std::string buf = details.text.substr(5); - size_t s = buf.find(' '); + size_t s = ctcpbody.find(' '); if (s == std::string::npos) return MOD_RES_PASSTHRU; - const std::string type = buf.substr(0, s); + const std::string type = ctcpbody.substr(0, s); if (irc::equals(type, "SEND")) { size_t first; - buf = buf.substr(s + 1); + std::string buf = ctcpbody.substr(s + 1); if (!buf.empty() && buf[0] == '"') { |