From 85ac382d075659669cfb9bc6fa40d1dc0a7a6824 Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sat, 27 Feb 2021 18:27:26 +0530 Subject: [PATCH] CacheZoneManager: implemented filterSpecialCacheRecords option in calls to prevent internal cache records from leaking. --- DnsServerCore/Dns/ZoneManagers/CacheZoneManager.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/DnsServerCore/Dns/ZoneManagers/CacheZoneManager.cs b/DnsServerCore/Dns/ZoneManagers/CacheZoneManager.cs index 1e847e8a..3e3fa387 100644 --- a/DnsServerCore/Dns/ZoneManagers/CacheZoneManager.cs +++ b/DnsServerCore/Dns/ZoneManagers/CacheZoneManager.cs @@ -138,13 +138,13 @@ namespace DnsServerCore.Dns.ZoneManagers if (cacheZone != null) { { - IReadOnlyList records = cacheZone.QueryRecords(DnsResourceRecordType.A, serveStale); + IReadOnlyList records = cacheZone.QueryRecords(DnsResourceRecordType.A, serveStale, true); if ((records.Count > 0) && (records[0].RDATA is DnsARecord)) additionalRecords.AddRange(records); } { - IReadOnlyList records = cacheZone.QueryRecords(DnsResourceRecordType.AAAA, serveStale); + IReadOnlyList records = cacheZone.QueryRecords(DnsResourceRecordType.AAAA, serveStale, true); if ((records.Count > 0) && (records[0].RDATA is DnsAAAARecord)) additionalRecords.AddRange(records); } @@ -199,7 +199,7 @@ namespace DnsServerCore.Dns.ZoneManagers } //return closest name servers in delegation - IReadOnlyList authority = delegation.QueryRecords(DnsResourceRecordType.NS, false); + IReadOnlyList authority = delegation.QueryRecords(DnsResourceRecordType.NS, false, true); List additional = GetAdditionalRecords(authority, false); return new DnsDatagram(request.Identifier, true, DnsOpcode.StandardQuery, false, false, request.RecursionDesired, true, false, false, DnsResponseCode.NoError, request.Question, null, authority, additional); @@ -218,14 +218,14 @@ namespace DnsServerCore.Dns.ZoneManagers } //return closest name servers in delegation - IReadOnlyList authority = delegation.QueryRecords(DnsResourceRecordType.NS, serveStale); + IReadOnlyList authority = delegation.QueryRecords(DnsResourceRecordType.NS, serveStale, true); List additional = GetAdditionalRecords(authority, serveStale); return new DnsDatagram(request.Identifier, true, DnsOpcode.StandardQuery, false, false, request.RecursionDesired, true, false, false, DnsResponseCode.NoError, request.Question, null, authority, additional); } //zone found - IReadOnlyList answers = zone.QueryRecords(request.Question[0].Type, serveStale); + IReadOnlyList answers = zone.QueryRecords(request.Question[0].Type, serveStale, false); if (answers.Count > 0) { //answer found in cache @@ -281,7 +281,7 @@ namespace DnsServerCore.Dns.ZoneManagers } //return closest name servers in delegation - IReadOnlyList authority = delegation.QueryRecords(DnsResourceRecordType.NS, false); + IReadOnlyList authority = delegation.QueryRecords(DnsResourceRecordType.NS, false, true); List additional = GetAdditionalRecords(authority, false); return new DnsDatagram(request.Identifier, true, DnsOpcode.StandardQuery, false, false, request.RecursionDesired, true, false, false, DnsResponseCode.NoError, request.Question, null, authority, additional);