Fix a bug where making IPv6 DnsQuestion when it's not supported (#10170)
Motivation: Related https://github.com/line/armeria/issues/2463 Here is an example that an NIC has only link local address for IPv6. ``` $ ipaddr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 3: eth0@if18692: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1460 qdisc noqueue link/ether 1a:5e:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 10.xxx.xxx.xxx/24 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link valid_lft forever preferred_lft forever ``` If the NICs have only local or link local addresses, We should not send IPv6 DNS queris. Modification: - Ignore link-local IPv6 addresses which may exist even on a machine without IPv6 network. Result: - `DnsNameResolver` does not send DNS queries for AAAA when IPv6 is not available.
This commit is contained in:
parent
3808777c32
commit
3a2bf416bd
@ -160,7 +160,9 @@ public class DnsNameResolver extends InetNameResolver {
|
||||
NetworkInterface iface = interfaces.nextElement();
|
||||
Enumeration<InetAddress> addresses = iface.getInetAddresses();
|
||||
while (addresses.hasMoreElements()) {
|
||||
if (addresses.nextElement() instanceof Inet6Address) {
|
||||
InetAddress inetAddress = addresses.nextElement();
|
||||
if (inetAddress instanceof Inet6Address && !inetAddress.isAnyLocalAddress() &&
|
||||
!inetAddress.isLoopbackAddress() && !inetAddress.isLinkLocalAddress()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user