From 2399e2536f241a65ae159164a56795421fcbb750 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Fri, 11 Mar 2011 22:16:13 +0000 Subject: [PATCH] More for 6853, add condvar for end condition --- servers/slapd/back-bdb/tools.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/servers/slapd/back-bdb/tools.c b/servers/slapd/back-bdb/tools.c index 94efeae0ab..18bbeeeb35 100644 --- a/servers/slapd/back-bdb/tools.c +++ b/servers/slapd/back-bdb/tools.c @@ -90,6 +90,7 @@ static ldap_pvt_thread_cond_t bdb_tool_index_cond_work; #ifdef USE_TRICKLE static ldap_pvt_thread_mutex_t bdb_tool_trickle_mutex; static ldap_pvt_thread_cond_t bdb_tool_trickle_cond; +static ldap_pvt_thread_cond_t bdb_tool_trickle_cond_end; static void * bdb_tool_trickle_task( void *ctx, void *ptr ); static int bdb_tool_trickle_active; @@ -128,6 +129,7 @@ int bdb_tool_entry_open( #ifdef USE_TRICKLE ldap_pvt_thread_mutex_init( &bdb_tool_trickle_mutex ); ldap_pvt_thread_cond_init( &bdb_tool_trickle_cond ); + ldap_pvt_thread_cond_init( &bdb_tool_trickle_cond_end ); ldap_pvt_thread_pool_submit( &connection_pool, bdb_tool_trickle_task, bdb->bi_dbenv ); #endif @@ -161,10 +163,8 @@ int bdb_tool_entry_close( #ifdef USE_TRICKLE ldap_pvt_thread_mutex_lock( &bdb_tool_trickle_mutex ); ldap_pvt_thread_cond_signal( &bdb_tool_trickle_cond ); - ldap_pvt_thread_mutex_unlock( &bdb_tool_trickle_mutex ); - ldap_pvt_thread_mutex_lock( &bdb_tool_trickle_mutex ); while ( bdb_tool_trickle_active ) - ldap_pvt_thread_cond_wait( &bdb_tool_trickle_cond, + ldap_pvt_thread_cond_wait( &bdb_tool_trickle_cond_end, &bdb_tool_trickle_mutex ); ldap_pvt_thread_mutex_unlock( &bdb_tool_trickle_mutex ); #endif @@ -1264,7 +1264,7 @@ bdb_tool_trickle_task( void *ctx, void *ptr ) env->memp_trickle( env, 30, &wrote ); } bdb_tool_trickle_active = 0; - ldap_pvt_thread_cond_signal( &bdb_tool_trickle_cond ); + ldap_pvt_thread_cond_signal( &bdb_tool_trickle_cond_end ); ldap_pvt_thread_mutex_unlock( &bdb_tool_trickle_mutex ); return NULL; -- 2.39.5