Re: OO 4.0.5 SSL shutdown deadlock & patch
Jonathan Biggar <[email protected]> Mon, 11 Apr 2005 14:58:00 -0700
| Newsgroups | gmane.comp.corba.omniorb.devel |
|---|---|
| Message-ID | <[email protected]> |
Jonathan Biggar wrote:
> Here's a patch that works around the problem by making sslEndpoint::Poke
> set a timeout on the call to sslAddress::Connect. If the timeout
> happens, you'll get the error message "Warning: Fail to connect to
> myself", but that's far better than a deadlock.
Turns out that patch was inadequately tested. It would work when other
clients were still trying to connect to the server, but not when the
server was idle. This patch does it right:
--- sslEndpoint.cc.orig 2004-10-18 04:47:02.000000000 -0700
+++ sslEndpoint.cc 2005-04-11 14:48:41.000000000 -0700
@@ -329,7 +329,10 @@
sslAddress* target = new sslAddress(pd_address,pd_ctx);
giopActiveConnection* conn;
- if ((conn = target->Connect()) == 0) {
+ unsigned long abs_secs, abs_nanosecs;
+
+ omni_thread::get_time(&abs_secs, &abs_nanosecs, 1, 0);
+ if ((conn = target->Connect(abs_secs, abs_nanosecs)) == 0) {
if (omniORB::trace(1)) {
omniORB::logger log;
log << "Warning: Fail to connect to myself ("
--
Jon Biggar
Levanta
[email protected]