diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2014-08-07 12:18:42 -0230 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2014-08-07 12:18:42 -0230 |
commit | 232fa424a7339659b6ad2cd02fbfe89420457601 (patch) | |
tree | 978d9e9286c2915b771f8bea019276ab216eecc4 /java/src/IceInternal/UdpConnector.java | |
parent | Windows SSL SChannel implementation & OS X Secure Transport fixes. (diff) | |
download | ice-232fa424a7339659b6ad2cd02fbfe89420457601.tar.bz2 ice-232fa424a7339659b6ad2cd02fbfe89420457601.tar.xz ice-232fa424a7339659b6ad2cd02fbfe89420457601.zip |
ICE-5457 added ability to set source address for connections
Diffstat (limited to 'java/src/IceInternal/UdpConnector.java')
-rw-r--r-- | java/src/IceInternal/UdpConnector.java | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/java/src/IceInternal/UdpConnector.java b/java/src/IceInternal/UdpConnector.java index 94ddf2d14cd..0bcd3a536e9 100644 --- a/java/src/IceInternal/UdpConnector.java +++ b/java/src/IceInternal/UdpConnector.java @@ -13,7 +13,7 @@ final class UdpConnector implements Connector { public Transceiver connect() { - return new UdpTransceiver(_instance, _addr, _mcastInterface, _mcastTtl); + return new UdpTransceiver(_instance, _addr, _sourceAddr, _mcastInterface, _mcastTtl); } public java.nio.channels.SelectableChannel fd() @@ -40,11 +40,12 @@ final class UdpConnector implements Connector // // Only for use by UdpEndpointI // - UdpConnector(ProtocolInstance instance, java.net.InetSocketAddress addr, String mcastInterface, int mcastTtl, - String connectionId) + UdpConnector(ProtocolInstance instance, java.net.InetSocketAddress addr, java.net.InetSocketAddress sourceAddr, + String mcastInterface, int mcastTtl, String connectionId) { _instance = instance; _addr = addr; + _sourceAddr = sourceAddr; _mcastInterface = mcastInterface; _mcastTtl = mcastTtl; _connectionId = connectionId; @@ -52,6 +53,10 @@ final class UdpConnector implements Connector _hashCode = 5381; _hashCode = IceInternal.HashUtil.hashAdd(_hashCode , _addr.getAddress().getHostAddress()); _hashCode = IceInternal.HashUtil.hashAdd(_hashCode , _addr.getPort()); + if(_sourceAddr != null) + { + _hashCode = IceInternal.HashUtil.hashAdd(_hashCode , _sourceAddr.getAddress().getHostAddress()); + } _hashCode = IceInternal.HashUtil.hashAdd(_hashCode , _mcastInterface); _hashCode = IceInternal.HashUtil.hashAdd(_hashCode , _mcastTtl); _hashCode = IceInternal.HashUtil.hashAdd(_hashCode , _connectionId); @@ -85,11 +90,17 @@ final class UdpConnector implements Connector return false; } + if(Network.compareAddress(_sourceAddr, p._sourceAddr) != 0) + { + return false; + } + return Network.compareAddress(_addr, p._addr) == 0; } private ProtocolInstance _instance; private java.net.InetSocketAddress _addr; + private java.net.InetSocketAddress _sourceAddr; private String _mcastInterface; private int _mcastTtl; private String _connectionId; |