diff options
Diffstat (limited to 'cpp/src/Ice/IPEndpointI.cpp')
-rw-r--r-- | cpp/src/Ice/IPEndpointI.cpp | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/cpp/src/Ice/IPEndpointI.cpp b/cpp/src/Ice/IPEndpointI.cpp index 10983ccc672..a33405d8118 100644 --- a/cpp/src/Ice/IPEndpointI.cpp +++ b/cpp/src/Ice/IPEndpointI.cpp @@ -623,23 +623,20 @@ IceInternal::EndpointHostResolver::run() } } - r.callback->connectors(r.endpoint->connectors(getAddresses(r.host, - r.port, - protocol, - r.selType, - _preferIPv6, - true), - networkProxy)); + vector<Address> addresses = getAddresses(r.host, r.port, protocol, r.selType, _preferIPv6, true); + if(r.observer) + { + r.observer->detach(); + r.observer = 0; + } + + r.callback->connectors(r.endpoint->connectors(addresses, networkProxy)); if(threadObserver) { threadObserver->stateChanged(ThreadStateInUseForOther, ThreadStateIdle); } - if(r.observer) - { - r.observer->detach(); - } } catch(const Ice::LocalException& ex) { |