summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp/src/Glacier2Lib/SessionHelper.cpp5
-rw-r--r--cpp/test/Glacier2/sessionHelper/Client.cpp2
-rw-r--r--csharp/src/Glacier2/SessionHelper.cs8
-rw-r--r--csharp/test/Glacier2/sessionHelper/Client.cs4
-rw-r--r--java/src/Glacier2/src/main/java/Glacier2/SessionHelper.java12
-rw-r--r--java/test/src/main/java/test/Glacier2/sessionHelper/Client.java12
6 files changed, 41 insertions, 2 deletions
diff --git a/cpp/src/Glacier2Lib/SessionHelper.cpp b/cpp/src/Glacier2Lib/SessionHelper.cpp
index fde5247a843..7ce2d2c3eb9 100644
--- a/cpp/src/Glacier2Lib/SessionHelper.cpp
+++ b/cpp/src/Glacier2Lib/SessionHelper.cpp
@@ -572,6 +572,11 @@ public:
{
_communicator->setDefaultRouter(finder->getRouter());
}
+ catch(const Ice::CommunicatorDestroyedException& ex)
+ {
+ _session->dispatchCallback(new ConnectFailed(_callback, _session, ex), 0);
+ return;
+ }
catch(const Ice::Exception&)
{
//
diff --git a/cpp/test/Glacier2/sessionHelper/Client.cpp b/cpp/test/Glacier2/sessionHelper/Client.cpp
index 748108965ac..54b29c28741 100644
--- a/cpp/test/Glacier2/sessionHelper/Client.cpp
+++ b/cpp/test/Glacier2/sessionHelper/Client.cpp
@@ -316,6 +316,8 @@ public:
_factory->setPort(12011);
_factory->setProtocol(protocol);
_session = _factory->connect("userid", "abc123");
+
+ IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(100));
_session->destroy();
//
diff --git a/csharp/src/Glacier2/SessionHelper.cs b/csharp/src/Glacier2/SessionHelper.cs
index d1f60742c74..ec7b026e2af 100644
--- a/csharp/src/Glacier2/SessionHelper.cs
+++ b/csharp/src/Glacier2/SessionHelper.cs
@@ -448,6 +448,14 @@ public class SessionHelper
{
_communicator.setDefaultRouter(finder.getRouter());
}
+ catch(Ice.CommunicatorDestroyedException ex)
+ {
+ dispatchCallback(() =>
+ {
+ _callback.connectFailed(this, ex);
+ }, null);
+ return;
+ }
catch(Exception)
{
//
diff --git a/csharp/test/Glacier2/sessionHelper/Client.cs b/csharp/test/Glacier2/sessionHelper/Client.cs
index 969db0cfe61..e53263f9f20 100644
--- a/csharp/test/Glacier2/sessionHelper/Client.cs
+++ b/csharp/test/Glacier2/sessionHelper/Client.cs
@@ -253,6 +253,8 @@ public class Client
_factory.setPort(12011);
_factory.setProtocol(protocol);
_session = _factory.connect("userid", "abc123");
+
+ System.Threading.Thread.Sleep(100);
_session.destroy();
while(true)
@@ -273,8 +275,6 @@ public class Client
}
}
-
-
_factory = new Glacier2.SessionFactoryHelper(_initData, new SessionCalback2());
lock(this)
{
diff --git a/java/src/Glacier2/src/main/java/Glacier2/SessionHelper.java b/java/src/Glacier2/src/main/java/Glacier2/SessionHelper.java
index b5bc909c113..83adf1fc6e1 100644
--- a/java/src/Glacier2/src/main/java/Glacier2/SessionHelper.java
+++ b/java/src/Glacier2/src/main/java/Glacier2/SessionHelper.java
@@ -516,6 +516,18 @@ public class SessionHelper
{
_communicator.setDefaultRouter(finder.getRouter());
}
+ catch(final Ice.CommunicatorDestroyedException ex)
+ {
+ dispatchCallback(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ _callback.connectFailed(SessionHelper.this, ex);
+ }
+ }, null);
+ return;
+ }
catch(Exception ex)
{
//
diff --git a/java/test/src/main/java/test/Glacier2/sessionHelper/Client.java b/java/test/src/main/java/test/Glacier2/sessionHelper/Client.java
index 1135d01231f..2e91bb23dab 100644
--- a/java/test/src/main/java/test/Glacier2/sessionHelper/Client.java
+++ b/java/test/src/main/java/test/Glacier2/sessionHelper/Client.java
@@ -181,6 +181,18 @@ public class Client extends test.Util.Application
_factory.setPort(12011);
_factory.setProtocol(protocol);
_session = _factory.connect("userid", "abc123");
+
+ while(true)
+ {
+ try
+ {
+ Thread.sleep(100);
+ break;
+ }
+ catch(java.lang.InterruptedException ex)
+ {
+ }
+ }
_session.destroy();
while(true)