diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/local/NetworkServiceImpl.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/local/NetworkServiceImpl.java index dee88a0a8646c8524267961936f95575e7602109..403b3498320952c05707d17779fd4b63994d8d01 100644 --- a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/local/NetworkServiceImpl.java +++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/local/NetworkServiceImpl.java @@ -42,6 +42,7 @@ import org.duniter.core.service.CryptoService; import org.duniter.core.util.*; import org.duniter.core.util.CollectionUtils; import org.duniter.core.util.concurrent.CompletableFutures; +import org.duniter.core.util.http.DnsUtils; import org.duniter.core.util.http.InetAddressUtils; import org.duniter.core.util.websocket.WebsocketClientEndpoint; import org.slf4j.Logger; @@ -180,7 +181,7 @@ public class NetworkServiceImpl extends BaseRemoteServiceImpl implements Network return peer; }) // Exclude peer on intranet (not routable) addresses - .filter(peer -> InetAddressUtils.isInternetAddress(peer.getHost())) + .filter(peer -> DnsUtils.isInternetHostName(peer.getHost()) || InetAddressUtils.isInternetAddress(peer.getHost())) .collect(Collectors.toList()) ) .thenCompose(peers -> this.refreshPeersAsync(mainPeer, peers, pool)); diff --git a/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/InetAddressUtilsTest.java b/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/InetAddressUtilsTest.java index 62d8a43f2a3e6dfab3a8787e7fb76784a72a08e6..6685b6281184c393e3c31e4d629a27b323b807bb 100644 --- a/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/InetAddressUtilsTest.java +++ b/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/InetAddressUtilsTest.java @@ -130,4 +130,24 @@ public class InetAddressUtilsTest { checkFalse = InetAddressUtils.isInternetAddress("g1.duniter.org"); Assert.assertFalse(checkFalse); } + + @Test + public void isNotLocalAddress() { + + boolean checkTrue = InetAddressUtils.isNotLocalAddress("10.0.0.1"); + Assert.assertTrue(checkTrue); + + checkTrue = InetAddressUtils.isNotLocalAddress("192.168.0.254"); + Assert.assertTrue(checkTrue); + + boolean checkFalse = InetAddressUtils.isNotLocalAddress("127.0.0.1"); + Assert.assertFalse(checkFalse); + + checkFalse = InetAddressUtils.isNotLocalAddress("localhost"); + Assert.assertFalse(checkFalse); + + // Try a host name + checkFalse = InetAddressUtils.isNotLocalAddress("g1.duniter.org"); + Assert.assertFalse(checkFalse); + } }