]> git.sur5r.net Git - openldap/commitdiff
ITS#4583 use mutex around SSL_accept()
authorHoward Chu <hyc@openldap.org>
Thu, 8 Jun 2006 19:35:42 +0000 (19:35 +0000)
committerHoward Chu <hyc@openldap.org>
Thu, 8 Jun 2006 19:35:42 +0000 (19:35 +0000)
libraries/libldap/tls.c

index 9dfbd73ef478a126db7e71cc49dcfaf83dec1578..3d8333f64ab0c62534d0b71f3715436a8ff2177f 100644 (file)
@@ -93,6 +93,7 @@ static void tls_locking_cb( int mode, int type, const char *file, int line )
  */
 
 static ldap_pvt_thread_mutex_t tls_def_ctx_mutex;
+static ldap_pvt_thread_mutex_t tls_connect_mutex;
 
 static void tls_init_threads( void )
 {
@@ -105,6 +106,7 @@ static void tls_init_threads( void )
        /* FIXME: the thread id should be added somehow... */
 
        ldap_pvt_thread_mutex_init( &tls_def_ctx_mutex );
+       ldap_pvt_thread_mutex_init( &tls_connect_mutex );
 }
 #endif /* LDAP_R_COMPILE */
 
@@ -862,7 +864,13 @@ ldap_pvt_tls_accept( Sockbuf *sb, void *ctx_arg )
                        LBER_SBIOD_LEVEL_TRANSPORT, (void *)ssl );
        }
 
+#ifdef LDAP_R_COMPILE
+       ldap_pvt_thread_mutex_lock( &tls_connect_mutex );
+#endif
        err = SSL_accept( ssl );
+#ifdef LDAP_R_COMPILE
+       ldap_pvt_thread_mutex_unlock( &tls_connect_mutex );
+#endif
 
 #ifdef HAVE_WINSOCK
        errno = WSAGetLastError();