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,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2012-2015 Isode Limited. | 2 | * Copyright (c) 2012-2016 Isode Limited. |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * See the COPYING file for more information. | 4 | * See the COPYING file for more information. |
| 5 | */ | 5 | */ |
| @@ -176,7 +176,7 @@ public class SOCKS5BytestreamServerManager { | |||
| 176 | int port; | 176 | int port; |
| 177 | for (port = LISTEN_PORTS_BEGIN; port < LISTEN_PORTS_END; ++port) { | 177 | for (port = LISTEN_PORTS_BEGIN; port < LISTEN_PORTS_END; ++port) { |
| 178 | logger_.fine("Trying to start server on port " + port + "\n"); | 178 | logger_.fine("Trying to start server on port " + port + "\n"); |
| 179 | connectionServer = connectionServerFactory.createConnectionServer(new HostAddress("0.0.0.0"), port); | 179 | connectionServer = connectionServerFactory.createConnectionServer(new HostAddress("::"), port); |
| 180 | ConnectionServer.Error error = connectionServer.tryStart(); | 180 | ConnectionServer.Error error = connectionServer.tryStart(); |
| 181 | if (error == null) { | 181 | if (error == null) { |
| 182 | break; | 182 | break; |
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 | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | * See Documentation/Licenses/GPLv3.txt for more information. | 4 | * See Documentation/Licenses/GPLv3.txt for more information. |
| 5 | */ | 5 | */ |
| 6 | /* | 6 | /* |
| 7 | * Copyright (c) 2010, Isode Limited, London, England. | 7 | * Copyright (c) 2010-2016, Isode Limited, London, England. |
| 8 | * All rights reserved. | 8 | * All rights reserved. |
| 9 | */ | 9 | */ |
| 10 | package com.isode.stroke.network; | 10 | package com.isode.stroke.network; |
| @@ -33,6 +33,7 @@ public abstract class Connection { | |||
| 33 | public abstract void write(SafeByteArray data); | 33 | public abstract void write(SafeByteArray data); |
| 34 | 34 | ||
| 35 | public abstract HostAddressPort getLocalAddress(); | 35 | public abstract HostAddressPort getLocalAddress(); |
| 36 | public abstract HostAddressPort getRemoteAddress(); | ||
| 36 | public final Signal1<Boolean /*error*/> onConnectFinished = new Signal1<Boolean>(); | 37 | public final Signal1<Boolean /*error*/> onConnectFinished = new Signal1<Boolean>(); |
| 37 | public final Signal1<Error> onDisconnected = new Signal1<Error>(); | 38 | public final Signal1<Error> onDisconnected = new Signal1<Error>(); |
| 38 | public final Signal1<SafeByteArray> onDataRead = new Signal1<SafeByteArray>(); | 39 | public final Signal1<SafeByteArray> onDataRead = new Signal1<SafeByteArray>(); |
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,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2010 Isode Limited. | 2 | * Copyright (c) 2010-2016 Isode Limited. |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * See the COPYING file for more information. | 4 | * See the COPYING file for more information. |
| 5 | */ | 5 | */ |
| @@ -58,8 +58,14 @@ public class DummyConnection extends Connection implements EventOwner { | |||
| 58 | return localAddress; | 58 | return localAddress; |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | public Signal1<SafeByteArray> onDataSent = new Signal1<SafeByteArray>(); | 61 | @Override |
| 62 | public HostAddressPort getRemoteAddress() { | ||
| 63 | return remoteAddress; | ||
| 64 | } | ||
| 62 | 65 | ||
| 63 | public EventLoop eventLoop; | 66 | public Signal1<SafeByteArray> onDataSent = new Signal1<SafeByteArray>(); |
| 64 | public HostAddressPort localAddress; | 67 | |
| 68 | public EventLoop eventLoop; | ||
| 69 | public HostAddressPort localAddress = new HostAddressPort(); | ||
| 70 | public HostAddressPort remoteAddress = new HostAddressPort(); | ||
| 65 | } \ No newline at end of file | 71 | } \ 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,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2010-2014 Isode Limited. | 2 | * Copyright (c) 2010-2016 Isode Limited. |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * See the COPYING file for more information. | 4 | * See the COPYING file for more information. |
| 5 | */ | 5 | */ |
| @@ -15,6 +15,7 @@ import com.isode.stroke.eventloop.EventOwner; | |||
| 15 | import com.isode.stroke.eventloop.EventLoop; | 15 | import com.isode.stroke.eventloop.EventLoop; |
| 16 | import com.isode.stroke.eventloop.Event; | 16 | import com.isode.stroke.eventloop.Event; |
| 17 | import com.isode.stroke.base.SafeByteArray; | 17 | import com.isode.stroke.base.SafeByteArray; |
| 18 | |||
| 18 | import java.util.Vector; | 19 | import java.util.Vector; |
| 19 | 20 | ||
| 20 | public class FakeConnection extends Connection { | 21 | public class FakeConnection extends Connection { |
| @@ -40,6 +41,11 @@ public class FakeConnection extends Connection { | |||
| 40 | public HostAddressPort getLocalAddress() { | 41 | public HostAddressPort getLocalAddress() { |
| 41 | return new HostAddressPort(); | 42 | return new HostAddressPort(); |
| 42 | } | 43 | } |
| 44 | |||
| 45 | @Override | ||
| 46 | public HostAddressPort getRemoteAddress() { | ||
| 47 | return new HostAddressPort(); | ||
| 48 | } | ||
| 43 | 49 | ||
| 44 | public void setError(final Error e) { | 50 | public void setError(final Error e) { |
| 45 | error = e; | 51 | error = e; |
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 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2010-2015, Isode Limited, London, England. | 2 | * Copyright (c) 2010-2016, Isode Limited, London, England. |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | */ | 4 | */ |
| 5 | package com.isode.stroke.network; | 5 | package com.isode.stroke.network; |
| @@ -7,8 +7,10 @@ package com.isode.stroke.network; | |||
| 7 | import java.io.IOException; | 7 | import java.io.IOException; |
| 8 | import java.net.InetSocketAddress; | 8 | import java.net.InetSocketAddress; |
| 9 | import java.net.Socket; | 9 | import java.net.Socket; |
| 10 | import java.net.SocketAddress; | ||
| 10 | import java.nio.ByteBuffer; | 11 | import java.nio.ByteBuffer; |
| 11 | import java.nio.channels.CancelledKeyException; | 12 | import java.nio.channels.CancelledKeyException; |
| 13 | import java.nio.channels.ClosedChannelException; | ||
| 12 | import java.nio.channels.ClosedSelectorException; | 14 | import java.nio.channels.ClosedSelectorException; |
| 13 | import java.nio.channels.SelectionKey; | 15 | import java.nio.channels.SelectionKey; |
| 14 | import java.nio.channels.Selector; | 16 | import java.nio.channels.Selector; |
| @@ -515,6 +517,31 @@ public class JavaConnection extends Connection implements EventOwner { | |||
| 515 | } | 517 | } |
| 516 | 518 | ||
| 517 | @Override | 519 | @Override |
| 520 | public HostAddressPort getRemoteAddress() { | ||
| 521 | if (socketChannel_ == null) { | ||
| 522 | return null; | ||
| 523 | } | ||
| 524 | SocketAddress remoteAddress; | ||
| 525 | try { | ||
| 526 | remoteAddress = socketChannel_.getRemoteAddress(); | ||
| 527 | } catch (ClosedChannelException e) { | ||
| 528 | return null; | ||
| 529 | } catch (IOException e) { | ||
| 530 | return null; | ||
| 531 | } | ||
| 532 | if (!(remoteAddress instanceof InetSocketAddress)) { | ||
| 533 | // SocketChannel.getRemoteAddress should return a | ||
| 534 | // InetSocketAddress if it is bound to an IP Socket | ||
| 535 | // Address so return null if it does not | ||
| 536 | return null; | ||
| 537 | } | ||
| 538 | InetSocketAddress remoteInetAddress = (InetSocketAddress) remoteAddress; | ||
| 539 | return new HostAddressPort( | ||
| 540 | new HostAddress(remoteInetAddress.getAddress()), | ||
| 541 | remoteInetAddress.getPort()); | ||
| 542 | } | ||
| 543 | |||
| 544 | @Override | ||
| 518 | public String toString() | 545 | public String toString() |
| 519 | { | 546 | { |
| 520 | return "JavaConnection " + | 547 | return "JavaConnection " + |
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 | |||
| @@ -87,6 +87,11 @@ public abstract class ProxiedConnection extends Connection { | |||
| 87 | public HostAddressPort getLocalAddress() { | 87 | public HostAddressPort getLocalAddress() { |
| 88 | return connection_.getLocalAddress(); | 88 | return connection_.getLocalAddress(); |
| 89 | } | 89 | } |
| 90 | |||
| 91 | @Override | ||
| 92 | public HostAddressPort getRemoteAddress() { | ||
| 93 | return connection_.getRemoteAddress(); | ||
| 94 | } | ||
| 90 | 95 | ||
| 91 | private void handleConnectFinished(Connection connection) { | 96 | private void handleConnectFinished(Connection connection) { |
| 92 | cancelConnector(); | 97 | cancelConnector(); |
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 | |||
| @@ -124,6 +124,11 @@ public class TLSConnection extends Connection { | |||
| 124 | return connection.getLocalAddress(); | 124 | return connection.getLocalAddress(); |
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | @Override | ||
| 128 | public HostAddressPort getRemoteAddress() { | ||
| 129 | return connection.getRemoteAddress(); | ||
| 130 | } | ||
| 131 | |||
| 127 | public TLSContext getContext() { | 132 | public TLSContext getContext() { |
| 128 | return context; | 133 | return context; |
| 129 | } | 134 | } |
Swift