X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Finit.c;h=0990d4b533bfa5f201ece1ffef1612042e9dd8c1;hb=63498d1a2199eeca1db4ca7d27e665cbd73cb095;hp=5f7e6a3ef82eee5a4aaf65ced7fd7e50e7522dca;hpb=216049bd12861357e0bf080fe10816103c3c3bda;p=openldap diff --git a/servers/slapd/init.c b/servers/slapd/init.c index 5f7e6a3ef8..0990d4b533 100644 --- a/servers/slapd/init.c +++ b/servers/slapd/init.c @@ -8,7 +8,6 @@ #include #include -#include "portable.h" #include "slap.h" /* @@ -25,8 +24,6 @@ int ldap_syslog; int ldap_syslog_level = LOG_DEBUG; char *default_referral; -time_t starttime; -ldap_pvt_thread_t listener_tid; int g_argc; char **g_argv; @@ -37,19 +34,15 @@ int active_threads; ldap_pvt_thread_mutex_t active_threads_mutex; ldap_pvt_thread_cond_t active_threads_cond; -time_t currenttime; -ldap_pvt_thread_mutex_t currenttime_mutex; - -ldap_pvt_thread_mutex_t new_conn_mutex; - +ldap_pvt_thread_mutex_t gmtime_mutex; #ifdef SLAPD_CRYPT ldap_pvt_thread_mutex_t crypt_mutex; #endif int num_conns; -long ops_initiated; -long ops_completed; -ldap_pvt_thread_mutex_t ops_mutex; +long num_ops_initiated; +long num_ops_completed; +ldap_pvt_thread_mutex_t num_ops_mutex; long num_entries_sent; long num_bytes_sent; @@ -62,14 +55,16 @@ ldap_pvt_thread_mutex_t entry2str_mutex; ldap_pvt_thread_mutex_t replog_mutex; static char* slap_name; -int slapMode = 0; +int slapMode = SLAP_UNDEFINED_MODE; + +static ldap_pvt_thread_mutex_t currenttime_mutex; int slap_init( int mode, char *name ) { int rc; - if( slapMode ) { + if( slapMode != SLAP_UNDEFINED_MODE ) { Debug( LDAP_DEBUG_ANY, "%s init: init called twice (old=%d, new=%d)\n", name, slapMode, mode ); @@ -78,37 +73,46 @@ slap_init( int mode, char *name ) slapMode = mode; - if(!slapMode) { - Debug( LDAP_DEBUG_ANY, - "%s init: undefined mode (%d).\n", - name, mode, 0 ); - return 1; - } + switch ( slapMode ) { - Debug( LDAP_DEBUG_TRACE, - "%s init: initiated %s.\n", - name, - mode == SLAP_SERVER_MODE ? "server" : "tool", - 0 ); + case SLAP_SERVER_MODE: + case SLAP_TOOL_MODE: +#ifdef SLAPD_BDB2 + case SLAP_TIMEDSERVER_MODE: + case SLAP_TOOLID_MODE: +#endif + + Debug( LDAP_DEBUG_TRACE, + "%s init: initiated %s.\n", + name, mode == SLAP_TOOL_MODE ? "tool" : "server", 0 ); - slap_name = name; + slap_name = name; - (void) ldap_pvt_thread_initialize(); + (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( &active_threads_mutex ); + ldap_pvt_thread_cond_init( &active_threads_cond ); - ldap_pvt_thread_mutex_init( &new_conn_mutex ); - 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( &ops_mutex ); - ldap_pvt_thread_mutex_init( &num_sent_mutex ); + 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 ); + ldap_pvt_thread_mutex_init( &crypt_mutex ); #endif - rc = backend_init(); + rc = backend_init(); + break; + + default: + Debug( LDAP_DEBUG_ANY, + "%s init: undefined mode (%d).\n", name, mode, 0 ); + rc = 1; + break; + } return rc; } @@ -150,7 +154,18 @@ int slap_destroy(void) rc = backend_destroy(); + ldap_pvt_thread_destroy(); + /* should destory the above mutex */ return rc; } +/* should create a utils.c for these */ +time_t slap_get_time(void) +{ + time_t t; + ldap_pvt_thread_mutex_lock( ¤ttime_mutex ); + time( &t ); + ldap_pvt_thread_mutex_unlock( ¤ttime_mutex ); + return t; +}