]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Fix not always incrementing the DNSBL stats.
authorSadie Powell <sadie@witchery.services>
Sat, 6 Mar 2021 02:13:10 +0000 (02:13 +0000)
committerSadie Powell <sadie@witchery.services>
Sat, 6 Mar 2021 02:21:32 +0000 (02:21 +0000)
src/modules/m_dnsbl.cpp

index 6712e267422077935c185add906e85c3a6b1a3b6..57a780ff2d1685c53fa13154ee6f679bec48b934 100644 (file)
@@ -84,7 +84,10 @@ class DNSBLResolver : public DNS::Request
                /* Check the user still exists */
                LocalUser* them = IS_LOCAL(ServerInstance->FindUUID(theiruid));
                if (!them || them->client_sa != theirsa)
+               {
+                       ConfEntry->stats_misses++;
                        return;
+               }
 
                int i = countExt.get(them);
                if (i)
@@ -242,6 +245,20 @@ class DNSBLResolver : public DNS::Request
 
        void OnError(const DNS::Query *q) CXX11_OVERRIDE
        {
+               bool is_miss = true;
+               switch (q->error)
+               {
+                       case DNS::ERROR_NO_RECORDS:
+                       case DNS::ERROR_DOMAIN_NOT_FOUND:
+                               ConfEntry->stats_misses++;
+                               break;
+
+                       default:
+                               ConfEntry->stats_errors++;
+                               is_miss = false;
+                               break;
+               }
+
                LocalUser* them = IS_LOCAL(ServerInstance->FindUUID(theiruid));
                if (!them || them->client_sa != theirsa)
                        return;
@@ -250,13 +267,9 @@ class DNSBLResolver : public DNS::Request
                if (i)
                        countExt.set(them, i - 1);
 
-               if (q->error == DNS::ERROR_NO_RECORDS || q->error == DNS::ERROR_DOMAIN_NOT_FOUND)
-               {
-                       ConfEntry->stats_misses++;
+               if (is_miss)
                        return;
-               }
 
-               ConfEntry->stats_errors++;
                ServerInstance->SNO->WriteGlobalSno('d', "An error occurred whilst checking whether %s (%s) is on the '%s' DNS blacklist: %s",
                        them->GetFullRealHost().c_str(), them->GetIPString().c_str(), ConfEntry->name.c_str(), this->manager->GetErrorStr(q->error).c_str());
        }