summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/UdpTransceiver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/UdpTransceiver.cpp')
-rw-r--r--cpp/src/Ice/UdpTransceiver.cpp25
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
{