Author: markt
Date: Tue Jun 28 14:05:49 2016
New Revision: 1750514
URL: http://svn.apache.org/viewvc?rev=1750514&view=rev
Log:
Correct a potential performance problem identified by Nate Clark due to Tomcat
Native providing OpenSSL with thread identifiers poorly suited to the hash
function used by OpenSSL when selecting a bucket for the hash that holds the
per thread error data.
Tomcat Native on Windows was not affected.
This fix applies to OSX and Linux.
Other platforms may still be affected.
Modified:
tomcat/native/trunk/native/src/ssl.c
tomcat/native/trunk/xdocs/miscellaneous/changelog.xml
Modified: tomcat/native/trunk/native/src/ssl.c
URL:
http://svn.apache.org/viewvc/tomcat/native/trunk/native/src/ssl.c?rev=1750514&r1=1750513&r2=1750514&view=diff
==============================================================================
--- tomcat/native/trunk/native/src/ssl.c (original)
+++ tomcat/native/trunk/native/src/ssl.c Tue Jun 28 14:05:49 2016
@@ -20,6 +20,10 @@
#include "apr_atomic.h"
#include "apr_poll.h"
+#ifdef __linux__
+#include <sys/syscall.h>
+#endif
+
#ifdef HAVE_OPENSSL
#include "ssl_private.h"
@@ -420,6 +424,12 @@ static unsigned long ssl_thread_id(void)
return psaptr->PSATOLD;
#elif defined(WIN32)
return (unsigned long)GetCurrentThreadId();
+#elif defined(DARWIN)
+ uint64_t tid;
+ pthread_threadid_np(NULL, &tid);
+ return (unsigned long)tid;
+#elif defined(__linux__)
+ return (unsigned long)syscall(SYS_gettid);
#else
return (unsigned long)(apr_os_thread_current());
#endif
Modified: tomcat/native/trunk/xdocs/miscellaneous/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/native/trunk/xdocs/miscellaneous/changelog.xml?rev=1750514&r1=1750513&r2=1750514&view=diff
==============================================================================
--- tomcat/native/trunk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/native/trunk/xdocs/miscellaneous/changelog.xml Tue Jun 28 14:05:49
2016
@@ -44,6 +44,14 @@
Correctly handle OS level EAGAIN return codes during non-blocking TLS
I/O.
(markt)
</fix>
+ <fix>
+ Correct a potential performance problem identified by Nate Clark due to
+ Tomcat Native providing OpenSSL with thread identifiers poorly suited to
+ the hash function used by OpenSSL when selecting a bucket for the hash
+ that holds the per thread error data. Tomcat Native on Windows was not
+ affected. A fix has been applied for OSX and Linux. Other platforms may
+ still be affected. (markt/rjung)
+ </fix>
</changelog>
</section>
<section name="Changes in 1.2.7">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]