summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/Network.java
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2009-01-09 11:49:20 -0330
committerMatthew Newhook <matthew@zeroc.com>2009-01-09 11:49:20 -0330
commit9117e9040c02465cb9f0a1e0bcc6aa963f71c61a (patch)
treeef345adb5612327136e70c8207182e015dfc6349 /java/src/IceInternal/Network.java
parentFixed NRVO demo depend file (diff)
parenthttp://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=3553. database demo uses w... (diff)
downloadice-9117e9040c02465cb9f0a1e0bcc6aa963f71c61a.tar.bz2
ice-9117e9040c02465cb9f0a1e0bcc6aa963f71c61a.tar.xz
ice-9117e9040c02465cb9f0a1e0bcc6aa963f71c61a.zip
Merge commit 'origin/R3_3_branch'
Conflicts: cs/demo/WCF/latency/Client.cs cs/demo/WCF/latency_m/Client.cs cs/demo/WCF/throughput/Client.cs cs/demo/WCF/throughput_m/Client.cs cs/demo/WCF/throughput_m/Service.cs java/demo/Database/library/BookI.java java/demo/Database/library/BookQueryResultI.java java/demo/Database/library/Client.java java/demo/Database/library/ConnectionPool.java java/demo/Database/library/DispatchInterceptorI.java java/demo/Database/library/Glacier2Session.ice java/demo/Database/library/Glacier2SessionManagerI.java java/demo/Database/library/Grammar.java java/demo/Database/library/Library.ice java/demo/Database/library/LibraryI.java java/demo/Database/library/Parser.java java/demo/Database/library/ReapThread.java java/demo/Database/library/RunParser.java java/demo/Database/library/SQLRequestContext.java java/demo/Database/library/Scanner.java java/demo/Database/library/Server.java java/demo/Database/library/Session.ice java/demo/Database/library/SessionFactoryI.java java/demo/Database/library/SessionI.java java/demo/Database/library/Token.java java/demo/Database/library/build.xml java/demo/Database/library/config.client
Diffstat (limited to 'java/src/IceInternal/Network.java')
-rw-r--r--java/src/IceInternal/Network.java34
1 files changed, 19 insertions, 15 deletions
diff --git a/java/src/IceInternal/Network.java b/java/src/IceInternal/Network.java
index 40b411d5f9d..3eb8a840d14 100644
--- a/java/src/IceInternal/Network.java
+++ b/java/src/IceInternal/Network.java
@@ -772,9 +772,7 @@ public final class Network
//
}
- if(addr == null ||
- (addr instanceof java.net.Inet4Address && protocol == EnableIPv6) ||
- (addr instanceof java.net.Inet6Address && protocol == EnableIPv4))
+ if(addr == null || isValidAddr(addr, protocol))
{
//
// Iterate over the network interfaces and pick an IP
@@ -785,9 +783,7 @@ public final class Network
while(addr == null && iter.hasNext())
{
java.net.InetAddress a = iter.next();
- if(protocol == EnableBoth ||
- (protocol == EnableIPv4 && a instanceof java.net.Inet4Address) ||
- (protocol == EnableIPv6 && a instanceof java.net.Inet6Address))
+ if(protocol == EnableBoth || isValidAddr(a, protocol))
{
addr = a;
}
@@ -822,9 +818,7 @@ public final class Network
for(int i = 0; i < addrs.length; ++i)
{
- if(protocol == EnableBoth ||
- (protocol == EnableIPv4 && addrs[i] instanceof java.net.Inet4Address) ||
- (protocol == EnableIPv6 && addrs[i] instanceof java.net.Inet6Address))
+ if(protocol == EnableBoth || isValidAddr(addrs[i], protocol))
{
addresses.add(new java.net.InetSocketAddress(addrs[i], port));
}
@@ -873,9 +867,7 @@ public final class Network
java.net.InetAddress addr = addrs.nextElement();
if(!addr.isLoopbackAddress())
{
- if(protocol == EnableBoth ||
- (protocol == EnableIPv4 && addr instanceof java.net.Inet4Address) ||
- (protocol == EnableIPv6 && addr instanceof java.net.Inet6Address))
+ if(protocol == EnableBoth || isValidAddr(addr, protocol))
{
result.add(addr);
}
@@ -1148,6 +1140,20 @@ public final class Network
return ex instanceof java.io.InterruptedIOException;
}
+ private static boolean
+ isValidAddr(java.net.InetAddress addr, int protocol)
+ {
+ byte[] bytes = null;
+ if(addr != null)
+ {
+ bytes = addr.getAddress();
+ }
+ return bytes != null &&
+ ((bytes.length == 16 && protocol == EnableIPv6) ||
+ (bytes.length == 4 && protocol == EnableIPv4));
+ }
+
+
private static java.net.InetSocketAddress
getAddressImpl(String host, int port, int protocol, boolean server)
{
@@ -1172,9 +1178,7 @@ public final class Network
for(int i = 0; i < addrs.length; ++i)
{
- if(protocol == EnableBoth ||
- (protocol == EnableIPv4 && addrs[i] instanceof java.net.Inet4Address) ||
- (protocol == EnableIPv6 && addrs[i] instanceof java.net.Inet6Address))
+ if(protocol == EnableBoth || isValidAddr(addrs[i], protocol))
{
return new java.net.InetSocketAddress(addrs[i], port);
}