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 | |
| 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')
7 files changed, 59 insertions, 9 deletions
diff --git a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerManager.java b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerManager.java index 729193a..590ee60 100644 --- a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerManager.java +++ b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerManager.java @@ -1,3 +1,3 @@ /* - * Copyright (c) 2012-2015 Isode Limited. + * Copyright (c) 2012-2016 Isode Limited. * All rights reserved. @@ -178,3 +178,3 @@ public class SOCKS5BytestreamServerManager { logger_.fine("Trying to start server on port " + port + "\n"); - connectionServer = connectionServerFactory.createConnectionServer(new HostAddress("0.0.0.0"), port); + connectionServer = connectionServerFactory.createConnectionServer(new HostAddress("::"), port); ConnectionServer.Error error = connectionServer.tryStart(); diff --git a/src/com/isode/stroke/network/Connection.java b/src/com/isode/stroke/network/Connection.java index b0e4799..ad01553 100644 --- a/src/com/isode/stroke/network/Connection.java +++ b/src/com/isode/stroke/network/Connection.java @@ -6,3 +6,3 @@ /* - * Copyright (c) 2010, Isode Limited, London, England. + * Copyright (c) 2010-2016, Isode Limited, London, England. * All rights reserved. @@ -35,2 +35,3 @@ public abstract class Connection { public abstract HostAddressPort getLocalAddress(); + public abstract HostAddressPort getRemoteAddress(); public final Signal1<Boolean /*error*/> onConnectFinished = new Signal1<Boolean>(); diff --git a/src/com/isode/stroke/network/DummyConnection.java b/src/com/isode/stroke/network/DummyConnection.java index 51018ef..7cc302b 100644 --- a/src/com/isode/stroke/network/DummyConnection.java +++ b/src/com/isode/stroke/network/DummyConnection.java @@ -1,3 +1,3 @@ /* - * Copyright (c) 2010 Isode Limited. + * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. @@ -60,6 +60,12 @@ public class DummyConnection extends Connection implements EventOwner { - public Signal1<SafeByteArray> onDataSent = new Signal1<SafeByteArray>(); + @Override + public HostAddressPort getRemoteAddress() { + return remoteAddress; + } - public EventLoop eventLoop; - public HostAddressPort localAddress; + public Signal1<SafeByteArray> onDataSent = new Signal1<SafeByteArray>(); + + public EventLoop eventLoop; + public HostAddressPort localAddress = new HostAddressPort(); + public HostAddressPort remoteAddress = new HostAddressPort(); }
\ No newline at end of file diff --git a/src/com/isode/stroke/network/FakeConnection.java b/src/com/isode/stroke/network/FakeConnection.java index ebcf239..1ce5c7b 100644 --- a/src/com/isode/stroke/network/FakeConnection.java +++ b/src/com/isode/stroke/network/FakeConnection.java @@ -1,3 +1,3 @@ /* - * Copyright (c) 2010-2014 Isode Limited. + * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. @@ -17,2 +17,3 @@ import com.isode.stroke.eventloop.Event; import com.isode.stroke.base.SafeByteArray; + import java.util.Vector; @@ -42,2 +43,7 @@ public class FakeConnection extends Connection { } + + @Override + public HostAddressPort getRemoteAddress() { + return new HostAddressPort(); + } 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,3 +1,3 @@ /* - * Copyright (c) 2010-2015, Isode Limited, London, England. + * Copyright (c) 2010-2016, Isode Limited, London, England. * All rights reserved. @@ -9,4 +9,6 @@ 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; @@ -517,2 +519,27 @@ 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() diff --git a/src/com/isode/stroke/network/ProxiedConnection.java b/src/com/isode/stroke/network/ProxiedConnection.java index 6f4c044..5eac083 100644 --- a/src/com/isode/stroke/network/ProxiedConnection.java +++ b/src/com/isode/stroke/network/ProxiedConnection.java @@ -89,2 +89,7 @@ public abstract class ProxiedConnection extends Connection { } + + @Override + public HostAddressPort getRemoteAddress() { + return connection_.getRemoteAddress(); + } diff --git a/src/com/isode/stroke/network/TLSConnection.java b/src/com/isode/stroke/network/TLSConnection.java index d64f88b..4e7f304 100644 --- a/src/com/isode/stroke/network/TLSConnection.java +++ b/src/com/isode/stroke/network/TLSConnection.java @@ -126,2 +126,7 @@ public class TLSConnection extends Connection { + @Override + public HostAddressPort getRemoteAddress() { + return connection.getRemoteAddress(); + } + public TLSContext getContext() { |
Swift