From c6512b2859b138829bda426b7f37dc275c8595ab Mon Sep 17 00:00:00 2001 From: Jeff Trawick Date: Thu, 9 May 2002 10:53:28 +0000 Subject: [PATCH] Fix a mod_ssl build problem on OS/390. This is admittedly rather ugly code to come up with a unique 4-byte identifier for the thread. Since our threads are pthreads and a pthread maps 1:1 to a TCB, the address of the TCB is sufficient. Yes, every TCB sees a different piece of real storage mapped to the first page, so the code does make sense. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@95016 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 2 ++ modules/ssl/ssl_util.c | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/CHANGES b/CHANGES index e48607bf01..b7f4b73b2a 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,7 @@ Changes with Apache 2.0.37 + *) Fix a mod_ssl build problem on OS/390. [Jeff Trawick] + *) Fixed If-Modified-Since on Win32, which would give false positives because of the sub-second resolution of file timestamps on that platform. [Cliff Woolley] diff --git a/modules/ssl/ssl_util.c b/modules/ssl/ssl_util.c index b01f18db41..2147473638 100644 --- a/modules/ssl/ssl_util.c +++ b/modules/ssl/ssl_util.c @@ -419,7 +419,20 @@ static void ssl_util_thr_lock(int mode, int type, 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 psaptr->PSATOLD; +#else return (unsigned long) apr_os_thread_current(); +#endif } static apr_status_t ssl_util_thread_cleanup(void *data) -- 2.40.0