]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_silence.cpp
Only send ACCOUNT and CHGHOST to clients that have sent NICK/USER.
[user/henk/code/inspircd.git] / src / modules / m_silence.cpp
index 87b70dfa46451d6922f5b4397876ed0d2541d839..1e73bda27569b82cdf350d066d5f25a39892c4c8 100644 (file)
@@ -384,32 +384,38 @@ class ModuleSilence
                bool is_ctcp = details.IsCTCP(ctcpname) && !irc::equals(ctcpname, "ACTION");
 
                SilenceEntry::SilenceFlags flag = SilenceEntry::SF_NONE;
-               if (target.type == MessageTarget::TYPE_CHANNEL)
-               {
-                       if (is_ctcp)
-                               flag = SilenceEntry::SF_CTCP_CHANNEL;
-                       else if (details.type == MSG_NOTICE)
-                               flag = SilenceEntry::SF_NOTICE_CHANNEL;
-                       else if (details.type == MSG_PRIVMSG)
-                               flag = SilenceEntry::SF_PRIVMSG_CHANNEL;
-
-                       return BuildChannelExempts(user, target.Get<Channel>(), flag, details.exemptions);
-               }
-
-               if (target.type == MessageTarget::TYPE_USER)
+               switch (target.type)
                {
-                       if (is_ctcp)
-                               flag = SilenceEntry::SF_CTCP_USER;
-                       else if (details.type == MSG_NOTICE)
-                               flag = SilenceEntry::SF_NOTICE_USER;
-                       else if (details.type == MSG_PRIVMSG)
-                               flag = SilenceEntry::SF_PRIVMSG_USER;
-
-                       if (!CanReceiveMessage(user, target.Get<User>(), flag))
+                       case MessageTarget::TYPE_CHANNEL:
+                       {
+                               if (is_ctcp)
+                                       flag = SilenceEntry::SF_CTCP_CHANNEL;
+                               else if (details.type == MSG_NOTICE)
+                                       flag = SilenceEntry::SF_NOTICE_CHANNEL;
+                               else if (details.type == MSG_PRIVMSG)
+                                       flag = SilenceEntry::SF_PRIVMSG_CHANNEL;
+
+                               return BuildChannelExempts(user, target.Get<Channel>(), flag, details.exemptions);
+                               break;
+                       }
+                       case MessageTarget::TYPE_USER:
                        {
-                               details.echo_original = true;
-                               return MOD_RES_DENY;
+                               if (is_ctcp)
+                                       flag = SilenceEntry::SF_CTCP_USER;
+                               else if (details.type == MSG_NOTICE)
+                                       flag = SilenceEntry::SF_NOTICE_USER;
+                               else if (details.type == MSG_PRIVMSG)
+                                       flag = SilenceEntry::SF_PRIVMSG_USER;
+
+                               if (!CanReceiveMessage(user, target.Get<User>(), flag))
+                               {
+                                       details.echo_original = true;
+                                       return MOD_RES_DENY;
+                               }
+                               break;
                        }
+                       case MessageTarget::TYPE_SERVER:
+                               break;
                }
 
                return MOD_RES_PASSTHRU;