summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/UdpConnector.java
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2014-08-07 12:18:42 -0230
committerDwayne Boone <dwayne@zeroc.com>2014-08-07 12:18:42 -0230
commit232fa424a7339659b6ad2cd02fbfe89420457601 (patch)
tree978d9e9286c2915b771f8bea019276ab216eecc4 /java/src/IceInternal/UdpConnector.java
parentWindows SSL SChannel implementation & OS X Secure Transport fixes. (diff)
downloadice-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.java17
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;