summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/Network.java
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2011-02-07 13:46:35 -0800
committerMark Spruiell <mes@zeroc.com>2011-02-07 13:46:35 -0800
commit139d6a7e6449eb87fedddd7b0a45fcc823b3665e (patch)
treeb3c1bc23395326a6f28be83e813fa2ed3b463a04 /java/src/IceInternal/Network.java
parentfixing version in eclipse/CHANGES (diff)
downloadice-139d6a7e6449eb87fedddd7b0a45fcc823b3665e.tar.bz2
ice-139d6a7e6449eb87fedddd7b0a45fcc823b3665e.tar.xz
ice-139d6a7e6449eb87fedddd7b0a45fcc823b3665e.zip
fixes for Android compatibility
Diffstat (limited to 'java/src/IceInternal/Network.java')
-rw-r--r--java/src/IceInternal/Network.java35
1 files changed, 29 insertions, 6 deletions
diff --git a/java/src/IceInternal/Network.java b/java/src/IceInternal/Network.java
index 568a6c5d0f4..d2ccaec4f90 100644
--- a/java/src/IceInternal/Network.java
+++ b/java/src/IceInternal/Network.java
@@ -1103,9 +1103,7 @@ public final class Network
{
StringBuilder s = new StringBuilder(128);
s.append("local address = ");
- s.append(localAddr.getHostAddress());
- s.append(':');
- s.append(localPort);
+ s.append(addrToString(localAddr, localPort));
if(remoteAddr == null)
{
s.append("\nremote address = <not connected>");
@@ -1113,9 +1111,7 @@ public final class Network
else
{
s.append("\nremote address = ");
- s.append(remoteAddr.getHostAddress());
- s.append(':');
- s.append(remotePort);
+ s.append(addrToString(remoteAddr, remotePort));
}
return s.toString();
@@ -1150,6 +1146,33 @@ public final class Network
(bytes.length == 4 && protocol == EnableIPv4));
}
+ private static String
+ addrToString(java.net.InetAddress addr, int port)
+ {
+ StringBuffer s = new StringBuffer();
+
+ //
+ // In early Android releases, sockets don't correctly report their address and
+ // port information.
+ //
+
+ if(addr == null || addr.isAnyLocalAddress())
+ {
+ s.append("<not available>");
+ }
+ else
+ {
+ s.append(addr.getHostAddress());
+ }
+
+ if(port > 0)
+ {
+ s.append(':');
+ s.append(port);
+ }
+
+ return s.toString();
+ }
private static java.net.InetSocketAddress
getAddressImpl(String host, int port, int protocol, boolean server)