|
|
d198f9 |
fix: deadlock during SSL_ForceHandshake when getting connection to replica
|
|
|
d198f9 |
|
|
|
d198f9 |
Resolves: #1125152
|
|
|
d198f9 |
Author: Jan Synacek <jsynacek@redhat.com>
|
|
|
d198f9 |
|
|
|
d198f9 |
--- a/libraries/libldap/tls_m.c 2015-05-25 12:28:30.326645997 +0200
|
|
|
d198f9 |
+++ b/libraries/libldap/tls_m.c 2015-05-25 12:33:38.143399149 +0200
|
|
|
d198f9 |
@@ -141,7 +141,6 @@ static int tlsm_init( void );
|
|
|
d198f9 |
*/
|
|
|
d198f9 |
static ldap_pvt_thread_mutex_t tlsm_ctx_count_mutex;
|
|
|
d198f9 |
static ldap_pvt_thread_mutex_t tlsm_init_mutex;
|
|
|
d198f9 |
-static ldap_pvt_thread_mutex_t tlsm_pem_mutex;
|
|
|
d198f9 |
static PRCallOnceType tlsm_init_mutex_callonce = {0,0};
|
|
|
d198f9 |
|
|
|
d198f9 |
static PRStatus PR_CALLBACK
|
|
|
d198f9 |
@@ -159,12 +158,6 @@ tlsm_thr_init_callonce( void )
|
|
|
d198f9 |
return PR_FAILURE;
|
|
|
d198f9 |
}
|
|
|
d198f9 |
|
|
|
d198f9 |
- if ( ldap_pvt_thread_mutex_init( &tlsm_pem_mutex ) ) {
|
|
|
d198f9 |
- Debug( LDAP_DEBUG_ANY,
|
|
|
d198f9 |
- "TLS: could not create mutex for PEM module: %d\n", errno, 0, 0 );
|
|
|
d198f9 |
- return PR_FAILURE;
|
|
|
d198f9 |
- }
|
|
|
d198f9 |
-
|
|
|
d198f9 |
return PR_SUCCESS;
|
|
|
d198f9 |
}
|
|
|
d198f9 |
|
|
|
d198f9 |
@@ -2037,7 +2030,6 @@ tlsm_destroy( void )
|
|
|
d198f9 |
#ifdef LDAP_R_COMPILE
|
|
|
d198f9 |
ldap_pvt_thread_mutex_destroy( &tlsm_ctx_count_mutex );
|
|
|
d198f9 |
ldap_pvt_thread_mutex_destroy( &tlsm_init_mutex );
|
|
|
d198f9 |
- ldap_pvt_thread_mutex_destroy( &tlsm_pem_mutex );
|
|
|
d198f9 |
#endif
|
|
|
d198f9 |
}
|
|
|
d198f9 |
|
|
|
d198f9 |
@@ -2672,16 +2664,9 @@ static int
|
|
|
d198f9 |
tlsm_session_accept_or_connect( tls_session *session, int is_accept )
|
|
|
d198f9 |
{
|
|
|
d198f9 |
tlsm_session *s = (tlsm_session *)session;
|
|
|
d198f9 |
- int rc;
|
|
|
d198f9 |
+ int rc = SSL_ForceHandshake( s );
|
|
|
d198f9 |
const char *op = is_accept ? "accept" : "connect";
|
|
|
d198f9 |
|
|
|
d198f9 |
- if ( pem_module ) {
|
|
|
d198f9 |
- LDAP_MUTEX_LOCK( &tlsm_pem_mutex );
|
|
|
d198f9 |
- }
|
|
|
d198f9 |
- rc = SSL_ForceHandshake( s );
|
|
|
d198f9 |
- if ( pem_module ) {
|
|
|
d198f9 |
- LDAP_MUTEX_UNLOCK( &tlsm_pem_mutex );
|
|
|
d198f9 |
- }
|
|
|
d198f9 |
if ( rc ) {
|
|
|
d198f9 |
PRErrorCode err = PR_GetError();
|
|
|
d198f9 |
rc = -1;
|