]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_banredirect.cpp
Replace hardcoded mode letters passed to IsModeSet() and GetModeParameter() with...
[user/henk/code/inspircd.git] / src / modules / m_banredirect.cpp
index 08b2244d4c6ec5e2b03be4fa5e9da6d929b8e118..20b3a62e256a1a580a5f765a7483c41c427d515d 100644 (file)
@@ -90,23 +90,25 @@ class BanRedirect : public ModeWatcher
                                switch(*curr)
                                {
                                        case '!':
+                                               if (current != NICK)
+                                                       break;
                                                mask[current].assign(start_pos, curr);
                                                current = IDENT;
                                                start_pos = curr+1;
                                                break;
                                        case '@':
+                                               if (current != IDENT)
+                                                       break;
                                                mask[current].assign(start_pos, curr);
                                                current = HOST;
                                                start_pos = curr+1;
                                                break;
                                        case '#':
-                                               /* bug #921: don't barf when redirecting to ## channels */
-                                               if (current != CHAN)
-                                               {
-                                                       mask[current].assign(start_pos, curr);
-                                                       current = CHAN;
-                                                       start_pos = curr;
-                                               }
+                                               if (current == CHAN)
+                                                       break;
+                                               mask[current].assign(start_pos, curr);
+                                               current = CHAN;
+                                               start_pos = curr;
                                                break;
                                }
                        }
@@ -260,7 +262,7 @@ class ModuleBanRedirect : public Module
                                stackresult.push_back(chan->name);
                                while (modestack.GetStackedLine(stackresult))
                                {
-                                       ServerInstance->Modes->Process(stackresult, ServerInstance->FakeClient);
+                                       ServerInstance->Modes->Process(stackresult, ServerInstance->FakeClient, ModeParser::MODE_LOCALONLY);
                                        stackresult.erase(stackresult.begin() + 1, stackresult.end());
                                }
                        }