]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_dnsbl.cpp
Avoid doing "IP changed" event stuff on quitting users.
[user/henk/code/inspircd.git] / src / modules / m_dnsbl.cpp
index 6265ca85a88fafd3f8a49f5b9e027e5be0ebf9f3..37819c05ce0b0b5239e6e0a34d24a3fd5cf72b73 100644 (file)
@@ -279,6 +279,12 @@ class ModuleDNSBL : public Module, public Stats::EventListener
                ServerInstance->SNO->EnableSnomask('d', "DNSBL");
        }
 
+       void Prioritize() CXX11_OVERRIDE
+       {
+               Module* corexline = ServerInstance->Modules->Find("core_xline");
+               ServerInstance->Modules->SetPriority(this, I_OnSetUserIP, PRIORITY_AFTER, corexline);
+       }
+
        Version GetVersion() CXX11_OVERRIDE
        {
                return Version("Allows the server administrator to check the IP address of connecting users against a DNSBL.", VF_VENDOR);
@@ -351,7 +357,7 @@ class ModuleDNSBL : public Module, public Stats::EventListener
 
        void OnSetUserIP(LocalUser* user) CXX11_OVERRIDE
        {
-               if ((user->exempt) || !DNS)
+               if (user->exempt || user->quitting || !DNS)
                        return;
 
                // Clients can't be in a DNSBL if they aren't connected via IPv4 or IPv6.
@@ -364,7 +370,10 @@ class ModuleDNSBL : public Module, public Stats::EventListener
                                return;
                }
                else
+               {
                        ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "User has no connect class in OnSetUserIP");
+                       return;
+               }
 
                std::string reversedip;
                if (user->client_sa.family() == AF_INET)