ITS#6853 wait for trickle task to quit

This commit is contained in:
Howard Chu 2011-03-04 23:54:10 +00:00
parent f5b4d0fbac
commit 7dd1089706

View file

@ -92,6 +92,7 @@ static ldap_pvt_thread_mutex_t bdb_tool_trickle_mutex;
static ldap_pvt_thread_cond_t bdb_tool_trickle_cond;
static void * bdb_tool_trickle_task( void *ctx, void *ptr );
static int bdb_tool_trickle_active;
#endif
static void * bdb_tool_index_task( void *ctx, void *ptr );
@ -161,6 +162,11 @@ int bdb_tool_entry_close(
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,
&bdb_tool_trickle_mutex );
ldap_pvt_thread_mutex_unlock( &bdb_tool_trickle_mutex );
#endif
ldap_pvt_thread_mutex_lock( &bdb_tool_index_mutex );
@ -1249,6 +1255,7 @@ bdb_tool_trickle_task( void *ctx, void *ptr )
int wrote;
ldap_pvt_thread_mutex_lock( &bdb_tool_trickle_mutex );
bdb_tool_trickle_active = 1;
while ( 1 ) {
ldap_pvt_thread_cond_wait( &bdb_tool_trickle_cond,
&bdb_tool_trickle_mutex );
@ -1256,6 +1263,8 @@ bdb_tool_trickle_task( void *ctx, void *ptr )
break;
env->memp_trickle( env, 30, &wrote );
}
bdb_tool_trickle_active = 0;
ldap_pvt_thread_cond_signal( &bdb_tool_trickle_cond );
ldap_pvt_thread_mutex_unlock( &bdb_tool_trickle_mutex );
return NULL;