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/Ice/UdpConnector.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/Ice/UdpConnector.cpp')
-rw-r--r-- | cpp/src/Ice/UdpConnector.cpp | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/cpp/src/Ice/UdpConnector.cpp b/cpp/src/Ice/UdpConnector.cpp index de3c38175bf..d35b0904190 100644 --- a/cpp/src/Ice/UdpConnector.cpp +++ b/cpp/src/Ice/UdpConnector.cpp @@ -20,7 +20,7 @@ using namespace IceInternal; TransceiverPtr IceInternal::UdpConnector::connect() { - return new UdpTransceiver(_instance, _addr, _mcastInterface, _mcastTtl); + return new UdpTransceiver(_instance, _addr, _sourceAddr, _mcastInterface, _mcastTtl); } Short @@ -63,6 +63,11 @@ IceInternal::UdpConnector::operator==(const Connector& r) const return false; } + if(compareAddress(_sourceAddr, p->_sourceAddr) != 0) + { + return false; + } + return true; } @@ -107,13 +112,27 @@ IceInternal::UdpConnector::operator<(const Connector& r) const { return false; } + + int rc = compareAddress(_sourceAddr, p->_sourceAddr); + if(rc < 0) + { + return true; + } + else if(rc > 0) + { + return false; + } return compareAddress(_addr, p->_addr) == -1; } -IceInternal::UdpConnector::UdpConnector(const ProtocolInstancePtr& instance, const Address& addr, - const string& mcastInterface, int mcastTtl, const std::string& connectionId) : +IceInternal::UdpConnector::UdpConnector(const ProtocolInstancePtr& instance, const Address& addr, + const Address& sourceAddr, const string& mcastInterface, int mcastTtl, + const std::string& connectionId) : _instance(instance), _addr(addr), +#ifndef ICE_OS_WINRT + _sourceAddr(sourceAddr), +#endif _mcastInterface(mcastInterface), _mcastTtl(mcastTtl), _connectionId(connectionId) |