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 /cpp/src/IceSSL/ConnectorI.cpp | |
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 'cpp/src/IceSSL/ConnectorI.cpp')
-rw-r--r-- | cpp/src/IceSSL/ConnectorI.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/cpp/src/IceSSL/ConnectorI.cpp b/cpp/src/IceSSL/ConnectorI.cpp index f1640673ba7..b8cb1144b5b 100644 --- a/cpp/src/IceSSL/ConnectorI.cpp +++ b/cpp/src/IceSSL/ConnectorI.cpp @@ -45,7 +45,7 @@ IceSSL::ConnectorI::connect() try { - return new TransceiverI(_instance, IceInternal::createSocket(false, _addr), _proxy, _host, _addr); + return new TransceiverI(_instance, IceInternal::createSocket(false, _addr), _proxy, _host, _addr, _sourceAddr); } catch(const Ice::LocalException& ex) { @@ -89,6 +89,11 @@ IceSSL::ConnectorI::operator==(const IceInternal::Connector& r) const return false; } + if(IceInternal::compareAddress(_sourceAddr, p->_sourceAddr) != 0) + { + return false; + } + if(_connectionId != p->_connectionId) { return false; @@ -121,6 +126,16 @@ IceSSL::ConnectorI::operator<(const IceInternal::Connector& r) const return false; } + int rc = compareAddress(_sourceAddr, p->_sourceAddr); + if(rc < 0) + { + return true; + } + else if(rc > 0) + { + return false; + } + if(_connectionId < p->_connectionId) { return true; @@ -134,12 +149,13 @@ IceSSL::ConnectorI::operator<(const IceInternal::Connector& r) const } IceSSL::ConnectorI::ConnectorI(const InstancePtr& instance, const string& host, const IceInternal::Address& addr, - const IceInternal::NetworkProxyPtr& proxy, Ice::Int timeout, - const string& connectionId) : + const IceInternal::NetworkProxyPtr& proxy, const IceInternal::Address& sourceAddr, + Ice::Int timeout, const string& connectionId) : _instance(instance), _host(host), _addr(addr), _proxy(proxy), + _sourceAddr(sourceAddr), _timeout(timeout), _connectionId(connectionId) { |