diff --git a/DnsServerCore/Dns/Zones/StubZone.cs b/DnsServerCore/Dns/Zones/StubZone.cs index d95abc46..56f75491 100644 --- a/DnsServerCore/Dns/Zones/StubZone.cs +++ b/DnsServerCore/Dns/Zones/StubZone.cs @@ -20,7 +20,6 @@ along with this program. If not, see . using DnsServerCore.Dns.ResourceRecords; using System; using System.Collections.Generic; -using System.Net; using System.Threading; using TechnitiumLibrary.Net.Dns; using TechnitiumLibrary.Net.Dns.ResourceRecords; @@ -155,56 +154,7 @@ namespace DnsServerCore.Dns.Zones _isExpired = DateTime.UtcNow > _expiry; //get all name server addresses - List nameServers = new List(); - - IReadOnlyList nsRecords = _entries[DnsResourceRecordType.NS]; - - foreach (DnsResourceRecord nsRecord in nsRecords) - { - string nsDomain = (nsRecord.RDATA as DnsNSRecord).NameServer; - - IReadOnlyList glueRecords = nsRecord.GetGlueRecords(); - if (glueRecords.Count > 0) - { - foreach (DnsResourceRecord glueRecord in glueRecords) - { - switch (glueRecord.Type) - { - case DnsResourceRecordType.A: - nameServers.Add(new NameServerAddress(nsDomain, (glueRecord.RDATA as DnsARecord).Address)); - break; - - case DnsResourceRecordType.AAAA: - if (_dnsServer.PreferIPv6) - nameServers.Add(new NameServerAddress(nsDomain, (glueRecord.RDATA as DnsAAAARecord).Address)); - - break; - } - } - } - else - { - //resolve addresses - DnsDatagram response = _dnsServer.DirectQuery(new DnsQuestionRecord(nsDomain, DnsResourceRecordType.A, DnsClass.IN)); - if (response != null) - { - IReadOnlyList addresses = DnsClient.ParseResponseA(response); - foreach (IPAddress address in addresses) - nameServers.Add(new NameServerAddress(nsDomain, address)); - } - - if (_dnsServer.PreferIPv6) - { - response = _dnsServer.DirectQuery(new DnsQuestionRecord(nsDomain, DnsResourceRecordType.AAAA, DnsClass.IN)); - if (response != null) - { - IReadOnlyList addresses = DnsClient.ParseResponseAAAA(response); - foreach (IPAddress address in addresses) - nameServers.Add(new NameServerAddress(nsDomain, address)); - } - } - } - } + IReadOnlyList nameServers = GetAllNameServerAddresses(_dnsServer, false); if (nameServers.Count == 0) { @@ -285,7 +235,7 @@ namespace DnsServerCore.Dns.Zones { LogManager log = _dnsServer.LogManager; if (log != null) - log.Write("DNS Server successfully refreshed '" + _name + "' stub zone from: " + soaResponse.Metadata.NameServerAddress.ToString()); + log.Write("DNS Server successfully checked for update to '" + _name + "' stub zone from: " + soaResponse.Metadata.NameServerAddress.ToString()); return true; }