From 3b96811325dac6181d29220a2061fcbc68be9112 Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sun, 2 Feb 2025 16:01:51 +0530 Subject: [PATCH] ResolverDnsCache: implemented skipConditionalForwardingResolution option to prevent stack overflow cases. --- DnsServerCore/Dns/ResolverDnsCache.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/DnsServerCore/Dns/ResolverDnsCache.cs b/DnsServerCore/Dns/ResolverDnsCache.cs index 1b6b49b6..97a9de22 100644 --- a/DnsServerCore/Dns/ResolverDnsCache.cs +++ b/DnsServerCore/Dns/ResolverDnsCache.cs @@ -35,15 +35,17 @@ namespace DnsServerCore.Dns readonly DnsServer _dnsServer; readonly bool _skipDnsAppAuthoritativeRequestHandlers; + readonly bool _skipConditionalForwardingResolution; #endregion #region constructor - public ResolverDnsCache(DnsServer dnsServer, bool skipDnsAppAuthoritativeRequestHandlers) + public ResolverDnsCache(DnsServer dnsServer, bool skipDnsAppAuthoritativeRequestHandlers, bool skipConditionalForwardingResolution = false) { _dnsServer = dnsServer; _skipDnsAppAuthoritativeRequestHandlers = skipDnsAppAuthoritativeRequestHandlers; + _skipConditionalForwardingResolution = skipConditionalForwardingResolution; } #endregion @@ -121,7 +123,7 @@ namespace DnsServerCore.Dns advancedForwardingClientSubnet = requestECS.AdvancedForwardingClientSubnet; } - ResolverPrefetchDnsCache dnsCache = new ResolverPrefetchDnsCache(_dnsServer, _skipDnsAppAuthoritativeRequestHandlers, question); + ResolverDnsCache dnsCache = new ResolverDnsCache(_dnsServer, _skipDnsAppAuthoritativeRequestHandlers, true); return _dnsServer.PriorityConditionalForwarderResolveAsync(question, eDnsClientSubnet, advancedForwardingClientSubnet, dnsCache, _skipDnsAppAuthoritativeRequestHandlers, conditionalForwarders); } @@ -207,6 +209,7 @@ namespace DnsServerCore.Dns return cacheResponse; } + if (!_skipConditionalForwardingResolution) { DnsResourceRecord authResponseFirstAuthority = authResponse.FindFirstAuthorityRecord(); if (authResponseFirstAuthority.Type == DnsResourceRecordType.FWD)