From: Howard Chu Date: Wed, 16 Mar 2011 17:30:24 +0000 (+0000) Subject: More for ITS#6853, check for trickle thread not yet started X-Git-Tag: MIGRATION_CVS2GIT~19 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=31175da39e6d246403b2c177005e8e76be94a17c;p=openldap More for ITS#6853, check for trickle thread not yet started --- diff --git a/servers/slapd/back-bdb/tools.c b/servers/slapd/back-bdb/tools.c index 18bbeeeb35..735845e459 100644 --- a/servers/slapd/back-bdb/tools.c +++ b/servers/slapd/back-bdb/tools.c @@ -162,6 +162,12 @@ int bdb_tool_entry_close( slapd_shutdown = 1; #ifdef USE_TRICKLE ldap_pvt_thread_mutex_lock( &bdb_tool_trickle_mutex ); + + /* trickle thread may not have started yet */ + while ( !bdb_tool_trickle_active ) + ldap_pvt_thread_cond_wait( &bdb_tool_trickle_cond_end, + &bdb_tool_trickle_mutex ); + ldap_pvt_thread_cond_signal( &bdb_tool_trickle_cond ); while ( bdb_tool_trickle_active ) ldap_pvt_thread_cond_wait( &bdb_tool_trickle_cond_end, @@ -1256,6 +1262,7 @@ bdb_tool_trickle_task( void *ctx, void *ptr ) ldap_pvt_thread_mutex_lock( &bdb_tool_trickle_mutex ); bdb_tool_trickle_active = 1; + ldap_pvt_thread_cond_signal( &bdb_tool_trickle_cond_end ); while ( 1 ) { ldap_pvt_thread_cond_wait( &bdb_tool_trickle_cond, &bdb_tool_trickle_mutex );