diff options
-rw-r--r-- | src/modules/m_silence.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/modules/m_silence.cpp b/src/modules/m_silence.cpp index 8c26051db..7925fd8d8 100644 --- a/src/modules/m_silence.cpp +++ b/src/modules/m_silence.cpp @@ -135,6 +135,12 @@ class CommandSilence : public Command pattern = CompilePattern(parameters[1].c_str()); } + if (pattern == 0) + { + user->WriteServ("NOTICE %s :Bad SILENCE pattern",user->nick.c_str()); + return CMD_INVALID; + } + if (!mask.length()) { // 'SILENCE +' or 'SILENCE -', assume *!*@* @@ -247,21 +253,24 @@ class CommandSilence : public Command std::string DecompPattern (const int pattern) { std::string out; - if ((pattern & SILENCE_PRIVATE) > 0) + if (pattern & SILENCE_PRIVATE) out += ",privatemessages"; - if ((pattern & SILENCE_CHANNEL) > 0) + if (pattern & SILENCE_CHANNEL) out += ",channelmessages"; - if ((pattern & SILENCE_INVITE) > 0) + if (pattern & SILENCE_INVITE) out += ",invites"; - if ((pattern & SILENCE_NOTICE) > 0) + if (pattern & SILENCE_NOTICE) out += ",privatenotices"; - if ((pattern & SILENCE_CNOTICE) > 0) + if (pattern & SILENCE_CNOTICE) out += ",channelnotices"; - if ((pattern & SILENCE_ALL) > 0) + if (pattern & SILENCE_ALL) out = ",all"; - if ((pattern & SILENCE_EXCLUDE) > 0) + if (pattern & SILENCE_EXCLUDE) out += ",exclude"; - return "<" + out.substr(1) + ">"; + if (out.length()) + return "<" + out.substr(1) + ">"; + else + return "<none>"; } }; |