]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/result.c
Import slapd.conf mode change (with typo correction) from -devel.
[openldap] / servers / slapd / result.c
index a710e1910f98812e128d928e40764821b69da1a9..04490d3b7274205cc968d2c98d6a76745b74de6d 100644 (file)
@@ -113,13 +113,13 @@ send_ldap_result2(
                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();
@@ -200,7 +200,7 @@ send_search_entry(
                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 ))
@@ -348,8 +348,12 @@ send_search_entry(
                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();