httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jchamp...@apache.org
Subject svn commit: r1791730 - /httpd/httpd/branches/trunk-openssl-threadid/modules/ssl/ssl_util.c
Date Tue, 18 Apr 2017 00:19:27 GMT
Author: jchampion
Date: Tue Apr 18 00:19:27 2017
New Revision: 1791730

URL: http://svn.apache.org/viewvc?rev=1791730&view=rev
Log:
ssl_util.c: pull up duplicated code in ssl_util_thr_id()

Should make it easier to see what's going on in the next few changes.

Modified:
    httpd/httpd/branches/trunk-openssl-threadid/modules/ssl/ssl_util.c

Modified: httpd/httpd/branches/trunk-openssl-threadid/modules/ssl/ssl_util.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/trunk-openssl-threadid/modules/ssl/ssl_util.c?rev=1791730&r1=1791729&r2=1791730&view=diff
==============================================================================
--- httpd/httpd/branches/trunk-openssl-threadid/modules/ssl/ssl_util.c (original)
+++ httpd/httpd/branches/trunk-openssl-threadid/modules/ssl/ssl_util.c Tue Apr 18 00:19:27
2017
@@ -363,9 +363,11 @@ static void ssl_dyn_destroy_function(str
     apr_pool_destroy(l->pool);
 }
 
-#if OPENSSL_VERSION_NUMBER >= 0x10000000L
-
-static void ssl_util_thr_id(CRYPTO_THREADID *id)
+/**
+ * Used by both versions of ssl_util_thr_id(). Returns an unsigned long that
+ * should be unique to the currently executing thread.
+ */
+static unsigned long ssl_util_thr_id_internal(void)
 {
     /* OpenSSL needs this to return an unsigned long.  On OS/390, the pthread
      * id is a structure twice that big.  Use the TCB pointer instead as a
@@ -377,46 +379,39 @@ static void ssl_util_thr_id(CRYPTO_THREA
         unsigned long PSATOLD;
     } *psaptr = 0; /* PSA is at address 0 */
 
-    CRYPTO_THREADID_set_numeric(id, psaptr->PSATOLD);
+    return psaptr->PSATOLD;
 #else
-    CRYPTO_THREADID_set_numeric(id, (unsigned long) apr_os_thread_current());
+    return (unsigned long) apr_os_thread_current();
 #endif
 }
 
-static apr_status_t ssl_util_thr_id_cleanup(void *old)
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+
+static void ssl_util_thr_id(CRYPTO_THREADID *id)
 {
-    CRYPTO_THREADID_set_callback(old);
-    return APR_SUCCESS;
+    CRYPTO_THREADID_set_numeric(id, ssl_util_thr_id_internal());
 }
 
 #else
 
 static unsigned long ssl_util_thr_id(void)
 {
-    /* OpenSSL needs this to return an unsigned long.  On OS/390, the pthread
-     * id is a structure twice that big.  Use the TCB pointer instead as a
-     * unique unsigned long.
-     */
-#ifdef __MVS__
-    struct PSA {
-        char unmapped[540];
-        unsigned long PSATOLD;
-    } *psaptr = 0;
+    return ssl_util_thr_id_internal();
+}
 
-    return psaptr->PSATOLD;
-#else
-    return (unsigned long) apr_os_thread_current();
 #endif
-}
 
 static apr_status_t ssl_util_thr_id_cleanup(void *old)
 {
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+    CRYPTO_THREADID_set_callback(old);
+#else
     CRYPTO_set_id_callback(old);
+#endif
+
     return APR_SUCCESS;
 }
 
-#endif
-
 static apr_status_t ssl_util_thread_cleanup(void *data)
 {
     CRYPTO_set_locking_callback(NULL);



Mime
View raw message