]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Hopefully fix behaviour of OnRawMode
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 14 Feb 2008 11:52:06 +0000 (11:52 +0000)
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 14 Feb 2008 11:52:06 +0000 (11:52 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8931 e03df62e-2008-0410-955e-edbf42e46eb7

src/mode.cpp

index 7b99eedb959d53572469a58d169af3929b8e583b..48777a7bf808e93f64f8b55376af847c000534a4 100644 (file)
@@ -309,7 +309,10 @@ void ModeParser::Process(const char** parameters, int pcnt, User *user, bool ser
                        int MOD_RESULT = 0;
                        FOREACH_RESULT(I_OnRawMode, OnRawMode(user, targetchannel, *mode, "", true, 0));
                        if (MOD_RESULT == ACR_DENY)
+                       {
+                               mode++;
                                continue;
+                       }
 
                        if (*mode == '+')
                        {
@@ -509,7 +512,7 @@ void ModeParser::Process(const char** parameters, int pcnt, User *user, bool ser
                                                                int MOD_RESULT = 0;
                                                                FOREACH_RESULT(I_OnRawMode, OnRawMode(user, targetchannel, modechar, parameter, adding, 1));
                                                                if (MOD_RESULT == ACR_DENY)
-                                                                       return;
+                                                                       continue;
 
                                                                bool had_parameter = !parameter.empty();
                                                                
@@ -536,7 +539,7 @@ void ModeParser::Process(const char** parameters, int pcnt, User *user, bool ser
                                                                int MOD_RESULT = 0;
                                                                FOREACH_RESULT(I_OnRawMode, OnRawMode(user, targetchannel, modechar, "", adding, 0));
                                                                if (MOD_RESULT == ACR_DENY)
-                                                                       return;
+                                                                       continue;
 
                                                                /* Fix by brain: mode watchers not being called for parameterless modes */
                                                                for (ModeWatchIter watchers = modewatchers[handler_id].begin(); watchers != modewatchers[handler_id].end(); watchers++)