]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_cgiirc.cpp
Merge pull request #1018 from SaberUK/insp20+hidekills
[user/henk/code/inspircd.git] / src / modules / m_cgiirc.cpp
index 0e3e39e0eccd3566d5c2a3ae346155411a675ec4..cce2e785531ad3c38b6fd3283fdeb173a8712aa0 100644 (file)
@@ -176,9 +176,9 @@ class ModuleCgiIRC : public Module
        CommandWebirc cmd;
        LocalIntExt waiting;
 
-       static void RecheckElineAndClass(LocalUser* user)
+       static void RecheckClass(LocalUser* user)
        {
-               user->exempt = (ServerInstance->XLines->MatchesLine("E", user) != NULL);
+               user->MyClass = NULL;
                user->SetClass();
                user->CheckClass();
        }
@@ -198,7 +198,7 @@ class ModuleCgiIRC : public Module
                ChangeIP(user, newip);
                user->host = user->dhost = user->GetIPString();
                user->InvalidateCache();
-               RecheckElineAndClass(user);
+               RecheckClass(user);
                // Don't create the resolver if the core couldn't put the user in a connect class or when dns is disabled
                if (user->quitting || ServerInstance->Config->NoUserDns)
                        return;
@@ -207,8 +207,8 @@ class ModuleCgiIRC : public Module
                {
                        bool cached;
                        CGIResolver* r = new CGIResolver(this, cmd.notify, newip, user, (was_pass ? "PASS" : "IDENT"), cached, waiting);
-                       ServerInstance->AddResolver(r, cached);
                        waiting.set(user, waiting.get(user) + 1);
+                       ServerInstance->AddResolver(r, cached);
                }
                catch (...)
                {
@@ -225,12 +225,8 @@ public:
        void init()
        {
                OnRehash(NULL);
-               ServerInstance->AddCommand(&cmd);
-               ServerInstance->Extensions.Register(&cmd.realhost);
-               ServerInstance->Extensions.Register(&cmd.realip);
-               ServerInstance->Extensions.Register(&cmd.webirc_hostname);
-               ServerInstance->Extensions.Register(&cmd.webirc_ip);
-               ServerInstance->Extensions.Register(&waiting);
+               ServiceProvider* providerlist[] = { &cmd, &cmd.realhost, &cmd.realip, &cmd.webirc_hostname, &cmd.webirc_ip, &waiting };
+               ServerInstance->Modules->AddServices(providerlist, sizeof(providerlist)/sizeof(ServiceProvider*));
 
                Implementation eventlist[] = { I_OnRehash, I_OnUserRegister, I_OnCheckReady };
                ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
@@ -298,8 +294,9 @@ public:
 
                std::string* webirc_hostname = cmd.webirc_hostname.get(user);
                user->host = user->dhost = (webirc_hostname ? *webirc_hostname : user->GetIPString());
+               user->InvalidateCache();
 
-               RecheckElineAndClass(user);
+               RecheckClass(user);
                if (user->quitting)
                        return MOD_RES_DENY;