From: Pieter Lexis Date: Fri, 16 Nov 2018 13:10:29 +0000 (+0100) Subject: ixfrdist: Ensure a domain is registered for stats X-Git-Tag: auth-4.2.0-alpha1~31^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=47de343d18e43604b9b03118e17d6a2b2a577eb2;p=thirdparty%2Fpdns.git ixfrdist: Ensure a domain is registered for stats --- diff --git a/pdns/ixfrdist-stats.hh b/pdns/ixfrdist-stats.hh index 5201435bc1..4c8b25b846 100644 --- a/pdns/ixfrdist-stats.hh +++ b/pdns/ixfrdist-stats.hh @@ -25,6 +25,7 @@ #include #include "dnsname.hh" +#include "pdnsexception.hh" class ixfrdistStats { public: @@ -35,29 +36,30 @@ class ixfrdistStats { std::string getStats(); void setSOASerial(const DNSName& d, const uint32_t serial) { - domainStats[d].currentSOA = serial; - domainStats[d].haveZone = true; + auto stat = getRegisteredDomain(d); + stat->second.currentSOA = serial; + stat->second.haveZone = true; } void incrementSOAChecks(const DNSName& d, const uint64_t amount = 1) { - domainStats[d].numSOAChecks += amount; + getRegisteredDomain(d)->second.numSOAChecks += amount; } void incrementSOAChecksFailed(const DNSName& d, const uint64_t amount = 1) { - domainStats[d].numSOAChecksFailed += amount; + getRegisteredDomain(d)->second.numSOAChecksFailed += amount; } void incrementSOAinQueries(const DNSName& d, const uint64_t amount = 1) { - domainStats[d].numSOAinQueries += amount; + getRegisteredDomain(d)->second.numSOAinQueries += amount; } void incrementAXFRinQueries(const DNSName& d, const uint64_t amount = 1) { - domainStats[d].numAXFRinQueries += amount; + getRegisteredDomain(d)->second.numAXFRinQueries += amount; } void incrementIXFRinQueries(const DNSName& d, const uint64_t amount = 1) { - domainStats[d].numIXFRinQueries += amount; + getRegisteredDomain(d)->second.numIXFRinQueries += amount; } void incrementAXFRFailures(const DNSName& d, const uint64_t amount = 1) { - domainStats[d].numAXFRFailures += amount; + getRegisteredDomain(d)->second.numAXFRFailures += amount; } void incrementIXFRFailures(const DNSName& d, const uint64_t amount = 1) { - domainStats[d].numIXFRFailures += amount; + getRegisteredDomain(d)->second.numIXFRFailures += amount; } void registerDomain(const DNSName& d) { domainStats[d].haveZone = false; @@ -85,4 +87,12 @@ class ixfrdistStats { std::map domainStats; programStats progStats; + + std::map::iterator getRegisteredDomain(const DNSName& d) { + auto ret = domainStats.find(d); + if (ret == domainStats.end()) { + throw PDNSException("Domain '" + d.toLogString() + "' not defined in the statistics map"); + } + return ret; + }; };