X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_banredirect.cpp;h=20b3a62e256a1a580a5f765a7483c41c427d515d;hb=f2cdf27dd9c45f91f4184b81ea3b9be7c5d88173;hp=08b2244d4c6ec5e2b03be4fa5e9da6d929b8e118;hpb=79f46c80c2df066e88c18322a2168a144087b811;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_banredirect.cpp b/src/modules/m_banredirect.cpp index 08b2244d4..20b3a62e2 100644 --- a/src/modules/m_banredirect.cpp +++ b/src/modules/m_banredirect.cpp @@ -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()); } }