summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/EndpointI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2012-08-09 17:33:52 +0200
committerBenoit Foucher <benoit@zeroc.com>2012-08-09 17:33:52 +0200
commit378a42f769dde1490ed7bf1a020cbe35390bf986 (patch)
treef24e749304b1228042c3f87c702a6864b934eb12 /cpp/src/Ice/EndpointI.cpp
parentFix (diff)
downloadice-378a42f769dde1490ed7bf1a020cbe35390bf986.tar.bz2
ice-378a42f769dde1490ed7bf1a020cbe35390bf986.tar.xz
ice-378a42f769dde1490ed7bf1a020cbe35390bf986.zip
More fixes
Diffstat (limited to 'cpp/src/Ice/EndpointI.cpp')
-rw-r--r--cpp/src/Ice/EndpointI.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/cpp/src/Ice/EndpointI.cpp b/cpp/src/Ice/EndpointI.cpp
index b084d8f4a8b..d53cf2ec612 100644
--- a/cpp/src/Ice/EndpointI.cpp
+++ b/cpp/src/Ice/EndpointI.cpp
@@ -191,7 +191,16 @@ IceInternal::EndpointHostResolver::EndpointHostResolver(const InstancePtr& insta
vector<ConnectorPtr>
IceInternal::EndpointHostResolver::resolve(const string& host, int port, const EndpointIPtr& endpoint)
{
- vector<ConnectorPtr> connectors;
+ //
+ // Try to get the addresses without DNS lookup. If this doesn't
+ // work, we retry with DNS lookup (and observer).
+ //
+ vector<struct sockaddr_storage> addrs = getAddresses(host, port, _instance->protocolSupport(), false);
+ if(!addrs.empty())
+ {
+ return endpoint->connectors(addrs);
+ }
+
ObserverHelperT<> observer;
const CommunicatorObserverPtr& obsv = _instance->initializationData().observer;
if(obsv)
@@ -199,6 +208,7 @@ IceInternal::EndpointHostResolver::resolve(const string& host, int port, const E
observer.attach(obsv->getEndpointLookupObserver(endpoint->getInfo(), endpoint->toString()));
}
+ vector<ConnectorPtr> connectors;
try
{
connectors = endpoint->connectors(getAddresses(host, port, _instance->protocolSupport(), true));