diff options
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/Ice/src/main/java/Ice/ConnectionI.java | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/java/src/Ice/src/main/java/Ice/ConnectionI.java b/java/src/Ice/src/main/java/Ice/ConnectionI.java index b593d25c47c..9cc6722421c 100644 --- a/java/src/Ice/src/main/java/Ice/ConnectionI.java +++ b/java/src/Ice/src/main/java/Ice/ConnectionI.java @@ -1317,7 +1317,24 @@ public final class ConnectionI extends IceInternal.EventHandler if(_startCallback != null) { - _startCallback.connectionStartFailed(this, _exception); + if(_instance.queueRequests()) + { + // The connectStartFailed method might try to connect with another + // connector. + _instance.getQueueExecutor().executeNoThrow(new Callable<Void>() + { + @Override + public Void call() throws Exception + { + _startCallback.connectionStartFailed(ConnectionI.this, _exception); + return null; + } + }); + } + else + { + _startCallback.connectionStartFailed(this, _exception); + } _startCallback = null; } |