diff options
author | Benoit Foucher <benoit@zeroc.com> | 2012-08-09 17:33:52 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2012-08-09 17:33:52 +0200 |
commit | 378a42f769dde1490ed7bf1a020cbe35390bf986 (patch) | |
tree | f24e749304b1228042c3f87c702a6864b934eb12 /cpp/src/Ice/EndpointI.cpp | |
parent | Fix (diff) | |
download | ice-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.cpp | 12 |
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)); |