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) {