resolveHost: Check expected address family on returned address
The code as is never checks the requested address family when doing a DNS query, so resolving an IPv6 only host with AddressFamily.INET would still return an IPv6.
This commit is contained in:
parent
eef6be673b
commit
467c6a0996
2 changed files with 47 additions and 4 deletions
|
@ -58,10 +58,14 @@ NetworkAddress resolveHost(string host, ushort address_family, bool use_dns = tr
|
|||
cb => eventDriver.dns.lookupHost(host, cb),
|
||||
(cb, id) => eventDriver.dns.cancelLookup(id),
|
||||
(DNSLookupID, DNSStatus status, scope RefAddress[] addrs) {
|
||||
if (status == DNSStatus.ok && addrs.length > 0) {
|
||||
try res = NetworkAddress(addrs[0]);
|
||||
catch (Exception e) { logDiagnostic("Failed to store address from DNS lookup: %s", e.msg); }
|
||||
success = true;
|
||||
if (status == DNSStatus.ok) {
|
||||
foreach (addr; addrs) {
|
||||
if (address_family != AddressFamily.UNSPEC && addr.addressFamily != address_family) continue;
|
||||
try res = NetworkAddress(addr);
|
||||
catch (Exception e) { logDiagnostic("Failed to store address from DNS lookup: %s", e.msg); }
|
||||
success = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue