summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2014-11-13 14:37:13 +0100
committerBenoit Foucher <benoit@zeroc.com>2014-11-13 14:37:13 +0100
commit180e3f6b12c252cda2ced3ad95e99884c778111c (patch)
tree36096594477bbd97715300bcaeb272b8b5233831 /java/src
parentICE-5875 confusing tracing when binding to 0.0.0.0 (diff)
downloadice-180e3f6b12c252cda2ced3ad95e99884c778111c.tar.bz2
ice-180e3f6b12c252cda2ced3ad95e99884c778111c.tar.xz
ice-180e3f6b12c252cda2ced3ad95e99884c778111c.zip
Fixed ICE-5877: disabled IPv6 by default is not supported on the system
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Ice/src/main/java/IceInternal/Instance.java3
-rw-r--r--java/src/Ice/src/main/java/IceInternal/Network.java16
2 files changed, 18 insertions, 1 deletions
diff --git a/java/src/Ice/src/main/java/IceInternal/Instance.java b/java/src/Ice/src/main/java/IceInternal/Instance.java
index b76076e4499..0f6f809c8a1 100644
--- a/java/src/Ice/src/main/java/IceInternal/Instance.java
+++ b/java/src/Ice/src/main/java/IceInternal/Instance.java
@@ -952,8 +952,9 @@ public final class Instance
_proxyFactory = new ProxyFactory(this);
+ boolean isIPv6Supported = Network.isIPv6Supported();
boolean ipv4 = _initData.properties.getPropertyAsIntWithDefault("Ice.IPv4", 1) > 0;
- boolean ipv6 = _initData.properties.getPropertyAsIntWithDefault("Ice.IPv6", 1) > 0;
+ boolean ipv6 = _initData.properties.getPropertyAsIntWithDefault("Ice.IPv6", isIPv6Supported ? 1 : 0) > 0;
if(!ipv4 && !ipv6)
{
throw new Ice.InitializationException("Both IPV4 and IPv6 support cannot be disabled.");
diff --git a/java/src/Ice/src/main/java/IceInternal/Network.java b/java/src/Ice/src/main/java/IceInternal/Network.java
index 4bf221eb315..f2406a3c0dd 100644
--- a/java/src/Ice/src/main/java/IceInternal/Network.java
+++ b/java/src/Ice/src/main/java/IceInternal/Network.java
@@ -117,6 +117,22 @@ public final class Network
return false;
}
+ public static boolean
+ isIPv6Supported()
+ {
+ try
+ {
+ java.net.Socket socket = new java.net.Socket();
+ socket.bind(new java.net.InetSocketAddress(java.net.InetAddress.getByName("::1"), 0));
+ socket.close();
+ return true;
+ }
+ catch(java.io.IOException ex)
+ {
+ return false;
+ }
+ }
+
public static java.nio.channels.SocketChannel
createTcpSocket()
{