diff --git a/DnsServerCore/Dns/Zones/AuthZone.cs b/DnsServerCore/Dns/Zones/AuthZone.cs index e600766d..63a41865 100644 --- a/DnsServerCore/Dns/Zones/AuthZone.cs +++ b/DnsServerCore/Dns/Zones/AuthZone.cs @@ -21,6 +21,7 @@ using DnsServerCore.Dns.ResourceRecords; using System; using System.Collections.Generic; using System.Net; +using System.Threading.Tasks; using TechnitiumLibrary.IO; using TechnitiumLibrary.Net.Dns; using TechnitiumLibrary.Net.Dns.ResourceRecords; @@ -94,7 +95,7 @@ namespace DnsServerCore.Dns.Zones return newRecords; } - private IReadOnlyList GetNameServerAddresses(DnsServer dnsServer, DnsResourceRecord record) + private async Task> GetNameServerAddressesAsync(DnsServer dnsServer, DnsResourceRecord record) { string nsDomain; @@ -138,7 +139,7 @@ namespace DnsServerCore.Dns.Zones //resolve addresses try { - DnsDatagram response = dnsServer.DirectQuery(new DnsQuestionRecord(nsDomain, DnsResourceRecordType.A, DnsClass.IN)); + DnsDatagram response = await dnsServer.DirectQueryAsync(new DnsQuestionRecord(nsDomain, DnsResourceRecordType.A, DnsClass.IN)); if ((response != null) && (response.Answer.Count > 0)) { IReadOnlyList addresses = DnsClient.ParseResponseA(response); @@ -153,7 +154,7 @@ namespace DnsServerCore.Dns.Zones { try { - DnsDatagram response = dnsServer.DirectQuery(new DnsQuestionRecord(nsDomain, DnsResourceRecordType.AAAA, DnsClass.IN)); + DnsDatagram response = await dnsServer.DirectQueryAsync(new DnsQuestionRecord(nsDomain, DnsResourceRecordType.AAAA, DnsClass.IN)); if ((response != null) && (response.Answer.Count > 0)) { IReadOnlyList addresses = DnsClient.ParseResponseAAAA(response); @@ -173,7 +174,7 @@ namespace DnsServerCore.Dns.Zones #region public - public IReadOnlyList GetPrimaryNameServerAddresses(DnsServer dnsServer) + public async Task> GetPrimaryNameServerAddressesAsync(DnsServer dnsServer) { List nameServers = new List(); @@ -191,12 +192,12 @@ namespace DnsServerCore.Dns.Zones if (soa.PrimaryNameServer.Equals(nsDomain, StringComparison.OrdinalIgnoreCase)) { //found primary NS - nameServers.AddRange(GetNameServerAddresses(dnsServer, nsRecord)); + nameServers.AddRange(await GetNameServerAddressesAsync(dnsServer, nsRecord)); break; } } - foreach (NameServerAddress nameServer in GetNameServerAddresses(dnsServer, soaRecord)) + foreach (NameServerAddress nameServer in await GetNameServerAddressesAsync(dnsServer, soaRecord)) { if (!nameServers.Contains(nameServer)) nameServers.Add(nameServer); @@ -205,7 +206,7 @@ namespace DnsServerCore.Dns.Zones return nameServers; } - public IReadOnlyList GetSecondaryNameServerAddresses(DnsServer dnsServer) + public async Task> GetSecondaryNameServerAddressesAsync(DnsServer dnsServer) { List nameServers = new List(); @@ -222,7 +223,7 @@ namespace DnsServerCore.Dns.Zones if (soa.PrimaryNameServer.Equals(nsDomain, StringComparison.OrdinalIgnoreCase)) continue; //skip primary name server - nameServers.AddRange(GetNameServerAddresses(dnsServer, nsRecord)); + nameServers.AddRange(await GetNameServerAddressesAsync(dnsServer, nsRecord)); } return nameServers;