diff options
Diffstat (limited to 'cpp/src/Ice/UdpTransceiver.cpp')
-rw-r--r-- | cpp/src/Ice/UdpTransceiver.cpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/cpp/src/Ice/UdpTransceiver.cpp b/cpp/src/Ice/UdpTransceiver.cpp index fbf00a1048a..8cd68d76edb 100644 --- a/cpp/src/Ice/UdpTransceiver.cpp +++ b/cpp/src/Ice/UdpTransceiver.cpp @@ -457,6 +457,7 @@ IceInternal::UdpTransceiver::getInfo() const { assert(_fd != INVALID_SOCKET); Ice::UdpConnectionInfoPtr info = new Ice::UdpConnectionInfo(); + info->endpoint = _endpointInfo; fdToAddressAndPort(_fd, info->localAddress, info->localPort, info->remoteAddress, info->remotePort); addrToAddressAndPort(_mcastAddr, info->mcastAddress, info->mcastPort); return info; @@ -482,8 +483,10 @@ IceInternal::UdpTransceiver::effectivePort() const return getPort(_addr); } -IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const struct sockaddr_storage& addr, - const string& mcastInterface, int mcastTtl) : +IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, + const Ice::UdpEndpointInfoPtr& endpointInfo, + const struct sockaddr_storage& addr) : + _endpointInfo(endpointInfo), _traceLevels(instance->traceLevels()), _logger(instance->initializationData().logger), _stats(instance->initializationData().stats), @@ -510,24 +513,26 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s if(isMulticast(_addr)) { - if(mcastInterface.length() > 0) + if(endpointInfo->mcastInterface.length() > 0) { - setMcastInterface(_fd, mcastInterface, _addr.ss_family == AF_INET); + setMcastInterface(_fd, endpointInfo->mcastInterface, _addr.ss_family == AF_INET); } - if(mcastTtl != -1) + if(endpointInfo->mcastTtl != -1) { - setMcastTtl(_fd, mcastTtl, _addr.ss_family == AF_INET); + setMcastTtl(_fd, endpointInfo->mcastTtl, _addr.ss_family == AF_INET); } } } -IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const string& host, int port, - const string& mcastInterface, bool connect) : +IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, + const Ice::UdpEndpointInfoPtr& endpointInfo, + bool connect) : + _endpointInfo(endpointInfo), _traceLevels(instance->traceLevels()), _logger(instance->initializationData().logger), _stats(instance->initializationData().stats), _incoming(true), - _addr(getAddressForServer(host, port, instance->protocolSupport())), + _addr(getAddressForServer(_endpointInfo->host, _endpointInfo->port, instance->protocolSupport())), _connect(connect), _warn(instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Datagrams") > 0) #ifdef ICE_USE_IOCP @@ -564,7 +569,7 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s { setPort(_mcastAddr, getPort(_addr)); } - setMcastGroup(_fd, _mcastAddr, mcastInterface); + setMcastGroup(_fd, _mcastAddr, _endpointInfo->mcastInterface); } else { |