#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;
#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
#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
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;