diff options
author | Alex Clayton <alex.clayton@isode.com> | 2016-03-15 12:20:50 (GMT) |
---|---|---|
committer | Alex Clayton <alex.clayton@isode.com> | 2016-03-15 14:14:14 (GMT) |
commit | b1ac3f64bfa7924da8bdeaf01308259018fe5148 (patch) | |
tree | 5e8b5d40888b80b4ab12de771a3e0b6f661f178f /src/com/isode/stroke/network/JavaConnection.java | |
parent | 3205cbf499196b32379c66cb0bea4ccd77334210 (diff) | |
download | stroke-b1ac3f64bfa7924da8bdeaf01308259018fe5148.zip stroke-b1ac3f64bfa7924da8bdeaf01308259018fe5148.tar.bz2 |
Add getRemoteAddress() method to Connection.
Added a getRemoteAddress() method to connection as per patch 'Listen
to IPv6 any address instead of only IPv4'
(13801557b6664426cac26384441ab0b19ff9abb5). Also some modifications
to SOCKS5BytestreamServerManager to use IPv6 address.
Test-information: Unit tests pass ok.
Change-Id: Ic0536745db9052ec1c5fc0832ed90eb5ec609429
Diffstat (limited to 'src/com/isode/stroke/network/JavaConnection.java')
-rw-r--r-- | src/com/isode/stroke/network/JavaConnection.java | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/com/isode/stroke/network/JavaConnection.java b/src/com/isode/stroke/network/JavaConnection.java index 29e3633..745655f 100644 --- a/src/com/isode/stroke/network/JavaConnection.java +++ b/src/com/isode/stroke/network/JavaConnection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2015, Isode Limited, London, England. + * Copyright (c) 2010-2016, Isode Limited, London, England. * All rights reserved. */ package com.isode.stroke.network; @@ -7,8 +7,10 @@ package com.isode.stroke.network; import java.io.IOException; import java.net.InetSocketAddress; import java.net.Socket; +import java.net.SocketAddress; import java.nio.ByteBuffer; import java.nio.channels.CancelledKeyException; +import java.nio.channels.ClosedChannelException; import java.nio.channels.ClosedSelectorException; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; @@ -515,6 +517,31 @@ public class JavaConnection extends Connection implements EventOwner { } @Override + public HostAddressPort getRemoteAddress() { + if (socketChannel_ == null) { + return null; + } + SocketAddress remoteAddress; + try { + remoteAddress = socketChannel_.getRemoteAddress(); + } catch (ClosedChannelException e) { + return null; + } catch (IOException e) { + return null; + } + if (!(remoteAddress instanceof InetSocketAddress)) { + // SocketChannel.getRemoteAddress should return a + // InetSocketAddress if it is bound to an IP Socket + // Address so return null if it does not + return null; + } + InetSocketAddress remoteInetAddress = (InetSocketAddress) remoteAddress; + return new HostAddressPort( + new HostAddress(remoteInetAddress.getAddress()), + remoteInetAddress.getPort()); + } + + @Override public String toString() { return "JavaConnection " + |