diff --git a/src/Ae.Dns.Client/DnsUpdateClient.cs b/src/Ae.Dns.Client/DnsUpdateClient.cs index a3ed19f..575d349 100644 --- a/src/Ae.Dns.Client/DnsUpdateClient.cs +++ b/src/Ae.Dns.Client/DnsUpdateClient.cs @@ -33,6 +33,7 @@ public async Task Query(DnsMessage query, CancellationToken token = query.EnsureOperationCode(DnsOperationCode.UPDATE); var hostnames = query.Nameservers.Select(x => x.Host).ToArray(); + var addresses = query.Nameservers.Select(x => x.Resource).OfType().Select(x => x.IPAddress).ToArray(); void ChangeRecords(ICollection records) { @@ -41,6 +42,11 @@ void ChangeRecords(ICollection records) records.Remove(recordToRemove); } + foreach (var recordToRemove in records.Where(x => x.Resource is DnsIpAddressResource ipr && addresses.Contains(ipr.IPAddress)).ToArray()) + { + records.Remove(recordToRemove); + } + foreach (var nameserver in query.Nameservers) { records.Add(nameserver);