mrc0mmand / rpms / openldap

Forked from rpms/openldap 3 years ago
Clone

Blame SOURCES/openldap-ssl-deadlock-revert.patch

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;