[Pkg-corba-commits] r153 - in /trunk/omniorb4: include/omniORB4/sslContext.h src/lib/omniORB/orbcore/ssl/sslContext.cc

tgg at users.alioth.debian.org tgg at users.alioth.debian.org
Thu Apr 3 18:18:38 UTC 2008


Author: tgg
Date: Thu Apr  3 18:18:38 2008
New Revision: 153

URL: http://svn.debian.org/wsvn/pkg-corba/?sc=1&rev=153
Log:
revert the change that was made to sslContext not to break the ABI

The "SSL-owner" mechanism is now hidden in `sslContext.cc'.

I've submitted this change for review to upstream.

Modified:
    trunk/omniorb4/include/omniORB4/sslContext.h
    trunk/omniorb4/src/lib/omniORB/orbcore/ssl/sslContext.cc

Modified: trunk/omniorb4/include/omniORB4/sslContext.h
URL: http://svn.debian.org/wsvn/pkg-corba/trunk/omniorb4/include/omniORB4/sslContext.h?rev=153&op=diff
==============================================================================
--- trunk/omniorb4/include/omniORB4/sslContext.h (original)
+++ trunk/omniorb4/include/omniORB4/sslContext.h Thu Apr  3 18:18:38 2008
@@ -159,7 +159,6 @@
   const char* 	    pd_password;
   SSL_CTX*    	    pd_ctx;
   omni_tracedmutex* pd_locks;
-  CORBA::Boolean    pd_ssl_owner;
 };
 
 #undef _core_attr

Modified: trunk/omniorb4/src/lib/omniORB/orbcore/ssl/sslContext.cc
URL: http://svn.debian.org/wsvn/pkg-corba/trunk/omniorb4/src/lib/omniORB/orbcore/ssl/sslContext.cc?rev=153&op=diff
==============================================================================
--- trunk/omniorb4/src/lib/omniORB/orbcore/ssl/sslContext.cc (original)
+++ trunk/omniorb4/src/lib/omniORB/orbcore/ssl/sslContext.cc Thu Apr  3 18:18:38 2008
@@ -118,19 +118,42 @@
 
 sslContext* sslContext::singleton = 0;
 
+static sslContext* ssl_owner = 0;
+
+static bool become_ssl_owner(sslContext* context) {
+  bool become_owner = false;
+
+  if (ssl_owner == 0 && CRYPTO_get_locking_callback() == 0) {
+    ssl_owner = context;
+    become_owner = true;
+  }
+
+  return become_owner;
+}
+
+static bool was_ssl_owner(sslContext* context) {
+  bool was_owner = false;
+
+  if (ssl_owner != 0 && ssl_owner == context) {
+    was_owner = true;
+    ssl_owner = 0;
+  }
+
+  return was_owner;
+}
 
 /////////////////////////////////////////////////////////////////////////
 sslContext::sslContext(const char* cafile,
 		       const char* keyfile,
 		       const char* password) :
   pd_cafile(cafile), pd_keyfile(keyfile), pd_password(password), pd_ctx(0),
-  pd_locks(0), pd_ssl_owner(0) {}
+  pd_locks(0) {}
 
 
 /////////////////////////////////////////////////////////////////////////
 sslContext::sslContext() :
   pd_cafile(0), pd_keyfile(0), pd_password(0), pd_ctx(0),
-  pd_locks(0), pd_ssl_owner(0) {
+  pd_locks(0) {
 }
 
 /////////////////////////////////////////////////////////////////////////
@@ -140,7 +163,7 @@
   if (pd_ctx) return;
 
   // Assume we own the ssl if no locking callback yet.
-  pd_ssl_owner = CRYPTO_get_locking_callback() == 0;
+  bool pd_ssl_owner = become_ssl_owner(this);
 
   if (pd_ssl_owner) {
     SSL_library_init();
@@ -172,7 +195,7 @@
   if (pd_ctx) {
     SSL_CTX_free(pd_ctx);
   }
-  if (pd_ssl_owner)
+  if (was_ssl_owner(this))
     thread_cleanup();
 }
 




More information about the Pkg-corba-commits mailing list