summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/UdpConnector.cpp
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 /cpp/src/Ice/UdpConnector.cpp
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 'cpp/src/Ice/UdpConnector.cpp')
-rw-r--r--cpp/src/Ice/UdpConnector.cpp25
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)