]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_cloaking.cpp
Fix access checks on chanprotect preventing use of SAMODE
[user/henk/code/inspircd.git] / src / modules / m_cloaking.cpp
index 2a348ba8b57e4c028625a4b738b4b33c21a03353..50bb4c4b6d03b34761ee1e3a7ef13853fccae8eb 100644 (file)
@@ -64,7 +64,7 @@ class CloakUser : public ModeHandler
        }
 
        CloakUser(InspIRCd* Instance, Module* source, Module* Hash) 
-               : ModeHandler(Instance, source, 'x', 0, 0, false, MODETYPE_USER, false), HashProvider(Hash),
+               : ModeHandler(source, 'x', PARAM_NONE, MODETYPE_USER), HashProvider(Hash),
                ext("cloaked_host", source)
        {
        }
@@ -305,19 +305,16 @@ class ModuleCloaking : public Module
                }
        }
 
-       ModResult OnCheckBan(User* user, Channel* chan)
+       ModResult OnCheckBan(User* user, Channel* chan, const std::string& mask)
        {
-               char mask[MAXBUF];
+               char cmask[MAXBUF];
                std::string* cloak = cu->ext.get(user);
                /* Check if they have a cloaked host, but are not using it */
                if (cloak && *cloak != user->dhost)
                {
-                       snprintf(mask, MAXBUF, "%s!%s@%s", user->nick.c_str(), user->ident.c_str(), cloak->c_str());
-                       for (BanList::iterator i = chan->bans.begin(); i != chan->bans.end(); i++)
-                       {
-                               if (InspIRCd::Match(mask,i->data))
-                                       return MOD_RES_DENY;
-                       }
+                       snprintf(cmask, MAXBUF, "%s!%s@%s", user->nick.c_str(), user->ident.c_str(), cloak->c_str());
+                       if (InspIRCd::Match(cmask,mask))
+                               return MOD_RES_DENY;
                }
                return MOD_RES_PASSTHRU;
        }