active_threads--;
conn->c_writewaiter = 1;
-#ifdef HAVE_LINUX_THREADS
- pthread_kill( listener_tid, SIGSTKFLT );
-#else /* !linux */
- pthread_kill( listener_tid, SIGUSR1 );
-#endif /* !linux */
+ pthread_kill( listener_tid, LDAP_SIGUSR1 );
pthread_cond_wait( &conn->c_wcv, &active_threads_mutex );
+
+ if( active_threads < 1 ) {
+ pthread_cond_signal(&active_threads_cond);
+ }
pthread_mutex_unlock( &active_threads_mutex );
pthread_yield();
return( 1 );
}
- edn = dn_normalize_case( strdup( e->e_dn ) );
+ edn = dn_normalize_case( ch_strdup( e->e_dn ) );
#ifdef LDAP_COMPAT30
if ( (ber = ber_alloc_t( conn->c_version == 30 ? 0 : LBER_USE_DER ))
pthread_mutex_lock( &active_threads_mutex );
active_threads--;
conn->c_writewaiter = 1;
- pthread_kill( listener_tid, SIGUSR1 );
+ pthread_kill( listener_tid, LDAP_SIGUSR1 );
pthread_cond_wait( &conn->c_wcv, &active_threads_mutex );
+
+ if( active_threads < 1 ) {
+ pthread_cond_signal(&active_threads_cond);
+ }
pthread_mutex_unlock( &active_threads_mutex );
pthread_yield();