]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
m_dnsbl Fix connecting users timeouting when a dnsbl result is in the dns cache
authorattilamolnar <attilamolnar@hush.com>
Sat, 2 Mar 2013 20:36:15 +0000 (21:36 +0100)
committerattilamolnar <attilamolnar@hush.com>
Mon, 11 Mar 2013 19:48:58 +0000 (20:48 +0100)
Fixes #431 reported by @killerrabbit

src/modules/m_dnsbl.cpp

index 0f4f4c3353a9541324badcba72e63aedcf91d3a2..5e02dd0a5dadc5cea64d99375285f24a5a8bb5e6 100644 (file)
@@ -375,6 +375,8 @@ class ModuleDNSBL : public Module
                snprintf(reversedipbuf, 128, "%d.%d.%d.%d", d, c, b, a);
                reversedip = std::string(reversedipbuf);
 
+               countExt.set(user, DNSBLConfEntries.size());
+
                // For each DNSBL, we will run through this lookup
                unsigned int i = 0;
                while (i < DNSBLConfEntries.size())
@@ -386,9 +388,10 @@ class ModuleDNSBL : public Module
                        bool cached;
                        DNSBLResolver *r = new DNSBLResolver(this, nameExt, countExt, hostname, user, DNSBLConfEntries[i], cached);
                        ServerInstance->AddResolver(r, cached);
+                       if (user->quitting)
+                               break;
                        i++;
                }
-               countExt.set(user, i);
        }
 
        ModResult OnSetConnectClass(LocalUser* user, ConnectClass* myclass)