summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2018-02-06 15:32:56 +0100
committerBenoit Foucher <benoit@zeroc.com>2018-02-06 15:32:56 +0100
commit08179f1bfd7b900ca086985c0034ed9c98f71df0 (patch)
tree357c0754d5fb1ca8dbf6963e619d56325449423f /java/src
parentRemoved explicit from CommunicatorHolder(const Ice::CommunicatorPtr&>) constr... (diff)
downloadice-08179f1bfd7b900ca086985c0034ed9c98f71df0.tar.bz2
ice-08179f1bfd7b900ca086985c0034ed9c98f71df0.tar.xz
ice-08179f1bfd7b900ca086985c0034ed9c98f71df0.zip
Added loopback addresses to published endpoints if no other adresses are available (ICE-8622)
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Ice/src/main/java/com/zeroc/IceInternal/Network.java24
1 files changed, 8 insertions, 16 deletions
diff --git a/java/src/Ice/src/main/java/com/zeroc/IceInternal/Network.java b/java/src/Ice/src/main/java/com/zeroc/IceInternal/Network.java
index cb56f0bb9e1..d9469220608 100644
--- a/java/src/Ice/src/main/java/com/zeroc/IceInternal/Network.java
+++ b/java/src/Ice/src/main/java/com/zeroc/IceInternal/Network.java
@@ -885,7 +885,7 @@ public final class Network
// Iterate over the network interfaces and pick an IP
// address (preferably not the loopback address).
//
- java.util.ArrayList<java.net.InetAddress> addrs = getLocalAddresses(protocol);
+ java.util.ArrayList<java.net.InetAddress> addrs = getLocalAddresses(protocol, false);
java.util.Iterator<java.net.InetAddress> iter = addrs.iterator();
while(addr == null && iter.hasNext())
{
@@ -988,7 +988,7 @@ public final class Network
}
public static java.util.ArrayList<java.net.InetAddress>
- getLocalAddresses(int protocol)
+ getLocalAddresses(int protocol, boolean includeLoopback)
{
java.util.ArrayList<java.net.InetAddress> result = new java.util.ArrayList<>();
try
@@ -1001,7 +1001,7 @@ public final class Network
while(addrs.hasMoreElements())
{
java.net.InetAddress addr = addrs.nextElement();
- if(!addr.isLoopbackAddress())
+ if(includeLoopback || !addr.isLoopbackAddress())
{
if(protocol == EnableBoth || isValidAddr(addr, protocol))
{
@@ -1052,7 +1052,7 @@ public final class Network
java.util.ArrayList<String> hosts = new java.util.ArrayList<>();
if(isWildcard(host))
{
- java.util.ArrayList<java.net.InetAddress> addrs = getLocalAddresses(protocolSupport);
+ java.util.ArrayList<java.net.InetAddress> addrs = getLocalAddresses(protocolSupport, includeLoopback);
for(java.net.InetAddress addr : addrs)
{
//
@@ -1064,18 +1064,10 @@ public final class Network
hosts.add(addr.getHostAddress());
}
}
-
- if(includeLoopback || hosts.isEmpty())
+ if(hosts.isEmpty() && !includeLoopback)
{
- if(protocolSupport != EnableIPv6)
- {
- hosts.add("127.0.0.1");
- }
-
- if(protocolSupport != EnableIPv4)
- {
- hosts.add("0:0:0:0:0:0:0:1");
- }
+ // Return loopback if only loopback is available no other local addresses are available.
+ return getHostsForEndpointExpand(host, protocolSupport, true);
}
}
return hosts;
@@ -1087,7 +1079,7 @@ public final class Network
java.util.ArrayList<String> interfaces = new java.util.ArrayList<>();
if(isWildcard(intf))
{
- java.util.ArrayList<java.net.InetAddress> addrs = getLocalAddresses(protocolSupport);
+ java.util.ArrayList<java.net.InetAddress> addrs = getLocalAddresses(protocolSupport, true);
for(java.net.InetAddress addr : addrs)
{
interfaces.add(addr.getHostAddress());