From 07f2943cda68bc12c417952a463c31ac1f424c4b Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sat, 10 Jul 2021 14:44:05 +0530 Subject: [PATCH] AuthZone: fixed issues in GetNameServerAddressesAsync(). Code refactoring done. --- DnsServerCore/Dns/Zones/AuthZone.cs | 17 +++++++++++------ DnsServerCore/Dns/Zones/StubZone.cs | 4 ++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/DnsServerCore/Dns/Zones/AuthZone.cs b/DnsServerCore/Dns/Zones/AuthZone.cs index ee35cef0..4791b6f9 100644 --- a/DnsServerCore/Dns/Zones/AuthZone.cs +++ b/DnsServerCore/Dns/Zones/AuthZone.cs @@ -355,15 +355,20 @@ namespace DnsServerCore.Dns.Zones return nameServers; } - public Task> GetNameServerAddressesAsync(DnsServer dnsServer) + public async Task> GetAllNameServerAddressesAsync(DnsServer dnsServer) { - DnsResourceRecord soaRecord = _entries[DnsResourceRecordType.SOA][0]; + IReadOnlyList primaryNameServers = await GetPrimaryNameServerAddressesAsync(dnsServer); + IReadOnlyList secondaryNameServers = await GetSecondaryNameServerAddressesAsync(dnsServer); - IReadOnlyList primaryNameServers = soaRecord.GetPrimaryNameServers(); - if (primaryNameServers.Count > 0) - return Task.FromResult(primaryNameServers); + if (secondaryNameServers.Count < 1) + return primaryNameServers; - return GetSecondaryNameServerAddressesAsync(dnsServer); + List allNameServers = new List(primaryNameServers.Count + secondaryNameServers.Count); + + allNameServers.AddRange(primaryNameServers); + allNameServers.AddRange(secondaryNameServers); + + return allNameServers; } public void SyncRecords(Dictionary> newEntries) diff --git a/DnsServerCore/Dns/Zones/StubZone.cs b/DnsServerCore/Dns/Zones/StubZone.cs index 7852a212..4d15656d 100644 --- a/DnsServerCore/Dns/Zones/StubZone.cs +++ b/DnsServerCore/Dns/Zones/StubZone.cs @@ -154,8 +154,8 @@ namespace DnsServerCore.Dns.Zones _isExpired = DateTime.UtcNow > _expiry; - //get name server addresses - IReadOnlyList nameServers = await GetNameServerAddressesAsync(_dnsServer); + //get all name server addresses + IReadOnlyList nameServers = await GetAllNameServerAddressesAsync(_dnsServer); if (nameServers.Count == 0) {