summaryrefslogtreecommitdiff
path: root/cpp/src/IceDiscovery/PluginI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2015-08-13 18:21:31 +0200
committerBenoit Foucher <benoit@zeroc.com>2015-08-13 18:21:31 +0200
commit406e393f2be3a29830a7758e58e4e674afc5e21e (patch)
tree00a28864d0855177a639dd34be623185de3cc9a2 /cpp/src/IceDiscovery/PluginI.cpp
parentICE-6407 java udp test failure (diff)
downloadice-406e393f2be3a29830a7758e58e4e674afc5e21e.tar.bz2
ice-406e393f2be3a29830a7758e58e4e674afc5e21e.tar.xz
ice-406e393f2be3a29830a7758e58e4e674afc5e21e.zip
Fixed ICE-6707 - default interface for discovery is now Ice.Default.Host if it is set
Diffstat (limited to 'cpp/src/IceDiscovery/PluginI.cpp')
-rw-r--r--cpp/src/IceDiscovery/PluginI.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/cpp/src/IceDiscovery/PluginI.cpp b/cpp/src/IceDiscovery/PluginI.cpp
index e0e1a7f9849..cbc9a22c5f0 100644
--- a/cpp/src/IceDiscovery/PluginI.cpp
+++ b/cpp/src/IceDiscovery/PluginI.cpp
@@ -14,6 +14,8 @@
#include <IceDiscovery/LocatorI.h>
#include <IceDiscovery/LookupI.h>
+#include <Ice/Network.h>
+
using namespace std;
using namespace IceDiscovery;
@@ -72,6 +74,27 @@ PluginI::initialize()
}
int port = properties->getPropertyAsIntWithDefault("IceDiscovery.Port", 4061);
string interface = properties->getProperty("IceDiscovery.Interface");
+ string defaultHost = properties->getProperty("Ice.Default.Host");
+ if(interface.empty() && !defaultHost.empty())
+ {
+ //
+ // Make sure the interface is an IP address, the UDP --interface option
+ // doesn't support DNS names.
+ //
+ IceInternal::ProtocolSupport protocol = ipv4 && !preferIPv6 ? IceInternal::EnableIPv4 : IceInternal::EnableIPv6;
+ try
+ {
+ IceInternal::Address address = IceInternal::getAddressForServer(defaultHost, 0, protocol, preferIPv6);
+ if(IceInternal::isAddressValid(address))
+ {
+ interface = IceInternal::inetAddrToString(address);
+ }
+ }
+ catch(const Ice::LocalException&)
+ {
+ // Ignore
+ }
+ }
if(properties->getProperty("IceDiscovery.Multicast.Endpoints").empty())
{