From 877faea723ecc5721291b0b2f53e34f7921e0f7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Kuzn=C3=ADk?= <ondra@mistotebe.net> Date: Fri, 21 Jun 2019 12:19:38 +0200 Subject: [PATCH] ITS#7996 Use a separate mutex in ldap_int_initialize --- libraries/libldap/init.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/libraries/libldap/init.c b/libraries/libldap/init.c index e08e5d06db..7582485226 100644 --- a/libraries/libldap/init.c +++ b/libraries/libldap/init.c @@ -589,14 +589,14 @@ char * ldap_int_hostname = NULL; void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl ) { #ifdef LDAP_R_COMPILE - LDAP_PVT_MUTEX_FIRSTCREATE( gopts->ldo_mutex ); -#endif + static ldap_pvt_thread_mutex_t init_mutex; + LDAP_PVT_MUTEX_FIRSTCREATE( init_mutex ); - LDAP_MUTEX_LOCK( &gopts->ldo_mutex ); + LDAP_MUTEX_LOCK( &init_mutex ); +#endif if ( gopts->ldo_valid == LDAP_INITIALIZED ) { /* someone else got here first */ - LDAP_MUTEX_UNLOCK( &gopts->ldo_mutex ); - return; + goto done; } ldap_int_error_init(); @@ -718,6 +718,8 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl ) openldap_ldap_init_w_env(gopts, NULL); -done: - LDAP_MUTEX_UNLOCK( &gopts->ldo_mutex ); +done:; +#ifdef LDAP_R_COMPILE + LDAP_MUTEX_UNLOCK( &init_mutex ); +#endif } -- GitLab