From: Howard Chu Date: Sat, 5 Apr 2008 00:45:59 +0000 (+0000) Subject: ITS#5454 proposed fix. May still need to change initial trylock to a X-Git-Tag: OPENLDAP_REL_ENG_2_4_9~20^2~35 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=8027d8afb0f1ba9c49899c16f2be9db5ac2bc201;p=openldap ITS#5454 proposed fix. May still need to change initial trylock to a regular mutex_lock. --- diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c index a3444b5c07..5be4424468 100644 --- a/servers/slapd/syncrepl.c +++ b/servers/slapd/syncrepl.c @@ -1157,7 +1157,7 @@ do_syncrepl( OperationBuffer opbuf; Operation *op; int rc = LDAP_SUCCESS; - int dostop = 0; + int dostop = 0, do_setup = 0; ber_socket_t s; int i, defer = 1, fail = 0; Backend *be; @@ -1268,8 +1268,9 @@ reload: if ( rc == LDAP_SUCCESS ) { if ( si->si_conn ) { connection_client_enable( si->si_conn ); + goto success; } else { - si->si_conn = connection_client_setup( s, do_syncrepl, arg ); + do_setup = 1; } } else if ( si->si_conn ) { dostop = 1; @@ -1335,6 +1336,11 @@ reload: } ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex ); + + if ( do_setup ) + si->si_conn = connection_client_setup( s, do_syncrepl, arg ); + +success: ldap_pvt_thread_mutex_unlock( &si->si_mutex ); if ( rc ) {