diff options
Diffstat (limited to 'java-compat/src')
-rw-r--r-- | java-compat/src/Ice/src/main/java/IceInternal/EndpointHostResolver.java | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/java-compat/src/Ice/src/main/java/IceInternal/EndpointHostResolver.java b/java-compat/src/Ice/src/main/java/IceInternal/EndpointHostResolver.java index 89cc00f4a3a..d3b88ed87a2 100644 --- a/java-compat/src/Ice/src/main/java/IceInternal/EndpointHostResolver.java +++ b/java-compat/src/Ice/src/main/java/IceInternal/EndpointHostResolver.java @@ -31,7 +31,7 @@ class EndpointHostResolver } } - synchronized void resolve(final String host, final int port, final Ice.EndpointSelectionType selType, + synchronized void resolve(final String host, final int port, final Ice.EndpointSelectionType selType, final IPEndpointI endpoint, final EndpointI_connectors callback) { // @@ -45,8 +45,8 @@ class EndpointHostResolver NetworkProxy networkProxy = _instance.networkProxy(); if(networkProxy == null) { - java.util.List<java.net.InetSocketAddress> addrs = Network.getAddresses(host, port, _protocol, selType, - _preferIPv6, false); + java.util.List<java.net.InetSocketAddress> addrs = + Network.getAddresses(host, port, _protocol, selType, _preferIPv6, false); if(addrs != null) { callback.connectors(endpoint.connectors(addrs, networkProxy)); @@ -87,6 +87,7 @@ class EndpointHostResolver Ice.Instrumentation.ThreadState.ThreadStateInUseForOther); } + Ice.Instrumentation.Observer obsv = observer; try { int protocol = _protocol; @@ -100,19 +101,22 @@ class EndpointHostResolver } } - callback.connectors(endpoint.connectors(Network.getAddresses(host, - port, - protocol, - selType, - _preferIPv6, - true), - networkProxy)); + java.util.List<java.net.InetSocketAddress> addresses = + Network.getAddresses(host, port, protocol, selType, _preferIPv6, true); + if(obsv != null) + { + obsv.detach(); + obsv = null; + } + + callback.connectors(endpoint.connectors(addresses, networkProxy)); } catch(Ice.LocalException ex) { - if(observer != null) + if(obsv != null) { - observer.failed(ex.ice_id()); + obsv.failed(ex.ice_id()); + obsv.detach(); } callback.exception(ex); } @@ -123,10 +127,6 @@ class EndpointHostResolver threadObserver.stateChanged(Ice.Instrumentation.ThreadState.ThreadStateInUseForOther, Ice.Instrumentation.ThreadState.ThreadStateIdle); } - if(observer != null) - { - observer.detach(); - } } } }); |