From dffda22867511fd3fd6ad8aeb08091aac28549af Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sun, 12 Feb 2023 13:01:39 +0530 Subject: [PATCH] StatsManager: updated code to support new response types. --- DnsServerCore/Dns/StatsManager.cs | 35 ++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/DnsServerCore/Dns/StatsManager.cs b/DnsServerCore/Dns/StatsManager.cs index d5a308a5..803c3521 100644 --- a/DnsServerCore/Dns/StatsManager.cs +++ b/DnsServerCore/Dns/StatsManager.cs @@ -1537,10 +1537,21 @@ namespace DnsServerCore.Dns switch (responseCode) { case DnsResponseCode.NoError: - if ((query is not null) && (responseType != DnsServerResponseType.Blocked)) //skip blocked domains + if (query is not null) { - _queryDomains.GetOrAdd(query.Name.ToLower(), GetNewCounter).Increment(); - _queries.GetOrAdd(query, GetNewCounter).Increment(); + switch (responseType) + { + case DnsServerResponseType.Blocked: + case DnsServerResponseType.UpstreamBlocked: + case DnsServerResponseType.CacheBlocked: + //skip blocked domains + break; + + default: + _queryDomains.GetOrAdd(query.Name.ToLower(), GetNewCounter).Increment(); + _queries.GetOrAdd(query, GetNewCounter).Increment(); + break; + } } Interlocked.Increment(ref _totalNoError); @@ -1585,6 +1596,24 @@ namespace DnsServerCore.Dns Interlocked.Increment(ref _totalBlocked); break; + + case DnsServerResponseType.UpstreamBlocked: + Interlocked.Increment(ref _totalRecursive); + + if (query is not null) + _queryBlockedDomains.GetOrAdd(query.Name.ToLower(), GetNewCounter).Increment(); + + Interlocked.Increment(ref _totalBlocked); + break; + + case DnsServerResponseType.CacheBlocked: + Interlocked.Increment(ref _totalCached); + + if (query is not null) + _queryBlockedDomains.GetOrAdd(query.Name.ToLower(), GetNewCounter).Increment(); + + Interlocked.Increment(ref _totalBlocked); + break; } if (query is not null)