summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2011-04-12 12:12:55 +0200
committerBenoit Foucher <benoit@zeroc.com>2011-04-12 12:12:55 +0200
commit1d4c8cf9f9a75394da3c0383fbcd787e2545a58c (patch)
tree0b50055f2506b099752b13ffb48a18f6d7fb5454 /java/src
parentUpdated MSDN menu names for SDK (diff)
downloadice-1d4c8cf9f9a75394da3c0383fbcd787e2545a58c.tar.bz2
ice-1d4c8cf9f9a75394da3c0383fbcd787e2545a58c.tar.xz
ice-1d4c8cf9f9a75394da3c0383fbcd787e2545a58c.zip
Fixed bug 4993 & 5001, addition fix for bug 4914
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Ice/ConnectionI.java13
-rw-r--r--java/src/IceInternal/ProxyFactory.java3
-rw-r--r--java/src/IceInternal/RouterInfo.java5
3 files changed, 20 insertions, 1 deletions
diff --git a/java/src/Ice/ConnectionI.java b/java/src/Ice/ConnectionI.java
index e938f5c1d37..f720448fdbf 100644
--- a/java/src/Ice/ConnectionI.java
+++ b/java/src/Ice/ConnectionI.java
@@ -1219,7 +1219,18 @@ public final class ConnectionI extends IceInternal.EventHandler implements Conne
{
if(--_dispatchCount == 0)
{
- if(_state == StateFinished)
+ if(_state == StateClosing)
+ {
+ try
+ {
+ initiateShutdown();
+ }
+ catch(LocalException ex)
+ {
+ setState(StateClosed, ex);
+ }
+ }
+ else if(_state == StateFinished)
{
_reaper.add(this);
}
diff --git a/java/src/IceInternal/ProxyFactory.java b/java/src/IceInternal/ProxyFactory.java
index ab75548f14e..15091ed1fe5 100644
--- a/java/src/IceInternal/ProxyFactory.java
+++ b/java/src/IceInternal/ProxyFactory.java
@@ -129,6 +129,9 @@ public final class ProxyFactory
// must *always* retry, so that the missing proxy is added
// to the router.
//
+
+ ref.getRouterInfo().clearCache(ref);
+
if(traceLevels.retry >= 1)
{
String s = "retrying operation call to add proxy to router\n" + ex.toString();
diff --git a/java/src/IceInternal/RouterInfo.java b/java/src/IceInternal/RouterInfo.java
index 5517fc5bb87..21dcab3bc1e 100644
--- a/java/src/IceInternal/RouterInfo.java
+++ b/java/src/IceInternal/RouterInfo.java
@@ -223,6 +223,11 @@ public final class RouterInfo
return _adapter;
}
+ public synchronized void clearCache(Reference ref)
+ {
+ _identities.remove(ref.getIdentity());
+ }
+
private synchronized EndpointI[]
setClientEndpoints(Ice.ObjectPrx clientProxy)
{