Skip to content

Commit 359beff

Browse files
committed
Choose ipv4 or ipv6 google dns servers as default fallback based on the settings for this system / jvm
Motivation: We should not use ipv4 google dns servers if the app is configured to run ipv6. Modifications: Use either ipv4 or ipv6 dns servers depending on the system config. Result: More correct behaviour
1 parent efb2d14 commit 359beff

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

resolver-dns/src/main/java/io/netty/resolver/dns/DefaultDnsServerAddressStreamProvider.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package io.netty.resolver.dns;
1717

18+
import io.netty.util.NetUtil;
1819
import io.netty.util.internal.SocketUtils;
1920
import io.netty.util.internal.UnstableApi;
2021
import io.netty.util.internal.logging.InternalLogger;
@@ -25,6 +26,7 @@
2526
import javax.naming.directory.DirContext;
2627
import javax.naming.directory.InitialDirContext;
2728
import java.lang.reflect.Method;
29+
import java.net.Inet6Address;
2830
import java.net.InetSocketAddress;
2931
import java.net.URI;
3032
import java.net.URISyntaxException;
@@ -117,10 +119,21 @@ public final class DefaultDnsServerAddressStreamProvider implements DnsServerAdd
117119
"Default DNS servers: {} (sun.net.dns.ResolverConfiguration)", defaultNameServers);
118120
}
119121
} else {
120-
Collections.addAll(
121-
defaultNameServers,
122-
SocketUtils.socketAddress("8.8.8.8", DNS_PORT),
123-
SocketUtils.socketAddress("8.8.4.4", DNS_PORT));
122+
// Depending if IPv6 or IPv4 is used choose the correct DNS servers provided by google:
123+
// https://developers.google.com/speed/public-dns/docs/using
124+
// https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html
125+
if (NetUtil.isIpV6AddressesPreferred() ||
126+
(NetUtil.LOCALHOST instanceof Inet6Address && !NetUtil.isIpV4StackPreferred())) {
127+
Collections.addAll(
128+
defaultNameServers,
129+
SocketUtils.socketAddress("2001:4860:4860::8888", DNS_PORT),
130+
SocketUtils.socketAddress("2001:4860:4860::8844", DNS_PORT));
131+
} else {
132+
Collections.addAll(
133+
defaultNameServers,
134+
SocketUtils.socketAddress("8.8.8.8", DNS_PORT),
135+
SocketUtils.socketAddress("8.8.4.4", DNS_PORT));
136+
}
124137

125138
if (logger.isWarnEnabled()) {
126139
logger.warn(

0 commit comments

Comments
 (0)