- case SLAP_SERVER_MODE:
- case SLAP_TOOL_MODE:
- Debug( LDAP_DEBUG_TRACE,
- "%s init: initiated %s.\n",
- name, ( mode & SLAP_TOOL_MODE ) ? "tool" : "server", 0 );
-
- slap_name = name;
-
- (void) ldap_pvt_thread_initialize();
-
- ldap_pvt_thread_mutex_init( &active_threads_mutex );
- ldap_pvt_thread_cond_init( &active_threads_cond );
-
- ldap_pvt_thread_mutex_init( ¤ttime_mutex );
- ldap_pvt_thread_mutex_init( &entry2str_mutex );
- ldap_pvt_thread_mutex_init( &replog_mutex );
- ldap_pvt_thread_mutex_init( &num_ops_mutex );
- ldap_pvt_thread_mutex_init( &num_sent_mutex );
-
- ldap_pvt_thread_mutex_init( &gmtime_mutex );
-#ifdef SLAPD_CRYPT
- ldap_pvt_thread_mutex_init( &crypt_mutex );
+ case SLAP_SERVER_MODE:
+ ldap_pvt_thread_pool_init( &connection_pool,
+ connection_pool_max, 0);
+
+ /* FALLTHRU */
+ case SLAP_TOOL_MODE:
+ Debug( LDAP_DEBUG_TRACE,
+ "%s init: initiated %s.\n", name,
+ (mode & SLAP_MODE) == SLAP_TOOL_MODE ? "tool" : "server",
+ 0 );
+
+ slap_name = name;
+
+ ldap_pvt_thread_mutex_init( &entry2str_mutex );
+ ldap_pvt_thread_mutex_init( &replog_mutex );
+
+ ldap_pvt_thread_mutex_init( &slap_counters.sc_sent_mutex );
+ ldap_pvt_thread_mutex_init( &slap_counters.sc_ops_mutex );
+ ldap_pvt_mp_init( slap_counters.sc_bytes );
+ ldap_pvt_mp_init( slap_counters.sc_pdu );
+ ldap_pvt_mp_init( slap_counters.sc_entries );
+ ldap_pvt_mp_init( slap_counters.sc_refs );
+
+ ldap_pvt_mp_init( slap_counters.sc_ops_initiated );
+ ldap_pvt_mp_init( slap_counters.sc_ops_completed );
+
+ ldap_pvt_thread_mutex_init( &slapd_rq.rq_mutex );
+ LDAP_STAILQ_INIT( &slapd_rq.task_list );
+ LDAP_STAILQ_INIT( &slapd_rq.run_list );
+
+#ifdef SLAPD_MONITOR
+ for ( i = 0; i < SLAP_OP_LAST; i++ ) {
+ ldap_pvt_mp_init( slap_counters.sc_ops_initiated_[ i ] );
+ ldap_pvt_mp_init( slap_counters.sc_ops_completed_[ i ] );
+ }
+#endif /* SLAPD_MONITOR */
+
+#ifndef HAVE_GMTIME_R
+ ldap_pvt_thread_mutex_init( &gmtime_mutex );