diff options
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/Ice/src/main/java/IceInternal/ConnectRequestHandler.java | 3 | ||||
-rw-r--r-- | java/src/Ice/src/main/java/IceInternal/QueueRequestHandler.java | 14 |
2 files changed, 11 insertions, 6 deletions
diff --git a/java/src/Ice/src/main/java/IceInternal/ConnectRequestHandler.java b/java/src/Ice/src/main/java/IceInternal/ConnectRequestHandler.java index 198625eeef8..11628f7fa41 100644 --- a/java/src/Ice/src/main/java/IceInternal/ConnectRequestHandler.java +++ b/java/src/Ice/src/main/java/IceInternal/ConnectRequestHandler.java @@ -349,6 +349,7 @@ public class ConnectRequestHandler // if(_reference.getCacheConnection() && exception == null) { + RequestHandler previous = _requestHandler; _requestHandler = new ConnectionRequestHandler(_reference, _connection, _compress); if(_reference.getInstance().queueRequests()) { @@ -356,7 +357,7 @@ public class ConnectRequestHandler } for(Ice.ObjectPrxHelperBase proxy : _proxies) { - proxy.__updateRequestHandler(this, _requestHandler); + proxy.__updateRequestHandler(previous, _requestHandler); } } diff --git a/java/src/Ice/src/main/java/IceInternal/QueueRequestHandler.java b/java/src/Ice/src/main/java/IceInternal/QueueRequestHandler.java index 6952862e508..c0054cdae09 100644 --- a/java/src/Ice/src/main/java/IceInternal/QueueRequestHandler.java +++ b/java/src/Ice/src/main/java/IceInternal/QueueRequestHandler.java @@ -30,17 +30,21 @@ public class QueueRequestHandler implements RequestHandler // // Only update to new handler if the previous handler matches this one. // - if(previousHandler == this || previousHandler == _delegate) + try { - if(newHandler != null) + if(previousHandler == this || previousHandler == _delegate) { - return new QueueRequestHandler(_delegate.getReference().getInstance(), newHandler); + return newHandler; } - else + else if(previousHandler.getConnection() == _delegate.getConnection()) { - return null; + return newHandler; } } + catch(Ice.Exception ex) + { + // Ignore + } return this; } |