diff options
Diffstat (limited to 'java/src/IceInternal/BatchOutgoing.java')
-rw-r--r-- | java/src/IceInternal/BatchOutgoing.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/java/src/IceInternal/BatchOutgoing.java b/java/src/IceInternal/BatchOutgoing.java index 8dfeefcf49d..69bb30285a5 100644 --- a/java/src/IceInternal/BatchOutgoing.java +++ b/java/src/IceInternal/BatchOutgoing.java @@ -53,11 +53,6 @@ public final class BatchOutgoing implements OutgoingMessageCallback } } - if(_remoteObserver != null) - { - _remoteObserver.detach(); - _remoteObserver = null; - } if(_exception != null) { throw _exception; @@ -81,11 +76,22 @@ public final class BatchOutgoing implements OutgoingMessageCallback { _sent = true; } + if(_remoteObserver != null) + { + _remoteObserver.detach(); + _remoteObserver = null; + } } public synchronized void finished(Ice.LocalException ex, boolean sent) { + if(_remoteObserver != null) + { + _remoteObserver.failed(ex.ice_name()); + _remoteObserver.detach(); + _remoteObserver = null; + } _exception = ex; notify(); } |