diff options
Diffstat (limited to 'java/src/IceSSL/TransceiverI.java')
-rw-r--r-- | java/src/IceSSL/TransceiverI.java | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/java/src/IceSSL/TransceiverI.java b/java/src/IceSSL/TransceiverI.java index b84f4397921..c7efdbbf4f0 100644 --- a/java/src/IceSSL/TransceiverI.java +++ b/java/src/IceSSL/TransceiverI.java @@ -351,8 +351,21 @@ final class TransceiverI implements IceInternal.Transceiver NativeConnectionInfo info = new NativeConnectionInfo(); java.net.Socket socket = _fd.socket(); - info.localAddress = socket.getLocalAddress().getHostAddress(); - info.localPort = socket.getLocalPort(); + if(socket.getLocalAddress() != null) + { + info.localAddress = socket.getLocalAddress().getHostAddress(); + info.localPort = socket.getLocalPort(); + } + else + { + // + // On some platforms (e.g., early Android releases), sockets don't + // correctly return address information. + // + info.localAddress = ""; + info.localPort = -1; + } + if(socket.getInetAddress() != null) { info.remoteAddress = socket.getInetAddress().getHostAddress(); @@ -402,6 +415,7 @@ final class TransceiverI implements IceInternal.Transceiver switch(status) { case FINISHED: + case NOT_HANDSHAKING: handshakeCompleted(); break; case NEED_TASK: @@ -470,9 +484,6 @@ final class TransceiverI implements IceInternal.Transceiver status = result.getHandshakeStatus(); break; } - case NOT_HANDSHAKING: - assert(false); - break; } if(result != null) |