"signaling write waiter on %d\n", i, 0, 0 );
ldap_pvt_thread_mutex_lock( &active_threads_mutex );
- ldap_pvt_thread_cond_signal( &c[i].c_wcv );
- c[i].c_writewaiter = 0;
active_threads++;
+ c[i].c_writewaiter = 0;
+ ldap_pvt_thread_cond_signal( &c[i].c_wcv );
ldap_pvt_thread_mutex_unlock( &active_threads_mutex );
}
ldap_pvt_thread_yield();
}
+ Debug( LDAP_DEBUG_TRACE,
+ "slapd shutdown: shutdown initiated.\n",
+ 0, 0, 0 );
+
close( tcps );
ldap_pvt_thread_mutex_lock( &active_threads_mutex );
Debug( LDAP_DEBUG_ANY,
- "slapd shutting down - waiting for %d threads to terminate\n",
+ "slapd shutdown: waiting for %d threads to terminate\n",
active_threads, 0, 0 );
while ( active_threads > 0 ) {
ldap_pvt_thread_cond_wait(&active_threads_cond, &active_threads_mutex);
/* let backends do whatever cleanup they need to do */
Debug( LDAP_DEBUG_TRACE,
- "slapd shutting down - waiting for backends to close down\n", 0, 0,
- 0 );
+ "slapd shutdown: closing each backends.\n",
+ 0, 0, 0 );
be_close();
- Debug( LDAP_DEBUG_ANY, "slapd stopping\n", 0, 0, 0 );
+
+ Debug( LDAP_DEBUG_TRACE,
+ "slapd shutdown: shutdown backends.\n",
+ 0, 0, 0 );
+ be_shutdown();
+ Debug( LDAP_DEBUG_ANY, "slapd: stopped\n", 0, 0, 0 );
+
return NULL;
}