version 1.18, 1999/07/16 00:45:48
|
version 1.18.2.4, 2000/07/04 18:26:43
|
Line 1
|
Line 1
|
/* init.c - initialize various things */ |
/* init.c - initialize various things */ |
|
/* $OpenLDAP$ */ |
|
/* |
|
* Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. |
|
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file |
|
*/ |
|
|
#include "portable.h" |
#include "portable.h" |
|
|
Line 22 int ldap_syslog = LDAP_DEBUG_STATS;
|
Line 27 int ldap_syslog = LDAP_DEBUG_STATS;
|
int ldap_syslog; |
int ldap_syslog; |
#endif |
#endif |
|
|
|
#ifdef LOG_DEBUG |
int ldap_syslog_level = LOG_DEBUG; |
int ldap_syslog_level = LOG_DEBUG; |
|
#endif |
|
|
struct berval **default_referral = NULL; |
struct berval **default_referral = NULL; |
int g_argc; |
int g_argc; |
char **g_argv; |
char **g_argv; |
Line 30 char **g_argv;
|
Line 38 char **g_argv;
|
/* |
/* |
* global variables that need mutex protection |
* global variables that need mutex protection |
*/ |
*/ |
int active_threads; |
ldap_pvt_thread_pool_t connection_pool; |
ldap_pvt_thread_mutex_t active_threads_mutex; |
|
ldap_pvt_thread_cond_t active_threads_cond; |
|
|
|
ldap_pvt_thread_mutex_t gmtime_mutex; |
ldap_pvt_thread_mutex_t gmtime_mutex; |
#ifdef SLAPD_CRYPT |
#ifdef SLAPD_CRYPT |
ldap_pvt_thread_mutex_t crypt_mutex; |
ldap_pvt_thread_mutex_t crypt_mutex; |
Line 56 ldap_pvt_thread_mutex_t num_sent_mutex;
|
Line 61 ldap_pvt_thread_mutex_t num_sent_mutex;
|
ldap_pvt_thread_mutex_t entry2str_mutex; |
ldap_pvt_thread_mutex_t entry2str_mutex; |
ldap_pvt_thread_mutex_t replog_mutex; |
ldap_pvt_thread_mutex_t replog_mutex; |
|
|
static char* slap_name; |
static const char* slap_name = NULL; |
int slapMode = SLAP_UNDEFINED_MODE; |
int slapMode = SLAP_UNDEFINED_MODE; |
|
|
static ldap_pvt_thread_mutex_t currenttime_mutex; |
static ldap_pvt_thread_mutex_t currenttime_mutex; |
|
|
int |
int |
slap_init( int mode, char *name ) |
slap_init( int mode, const char *name ) |
{ |
{ |
int rc; |
int rc; |
|
|
|
assert( mode ); |
|
|
if( slapMode != SLAP_UNDEFINED_MODE ) { |
if( slapMode != SLAP_UNDEFINED_MODE ) { |
Debug( LDAP_DEBUG_ANY, |
Debug( LDAP_DEBUG_ANY, |
"%s init: init called twice (old=%d, new=%d)\n", |
"%s init: init called twice (old=%d, new=%d)\n", |
Line 75 slap_init( int mode, char *name )
|
Line 82 slap_init( int mode, char *name )
|
|
|
slapMode = mode; |
slapMode = mode; |
|
|
switch ( slapMode ) { |
switch ( slapMode & SLAP_MODE ) { |
|
|
case SLAP_SERVER_MODE: |
case SLAP_SERVER_MODE: |
case SLAP_TOOL_MODE: |
case SLAP_TOOL_MODE: |
#ifdef SLAPD_BDB2 |
|
case SLAP_TIMEDSERVER_MODE: |
|
case SLAP_TOOLID_MODE: |
|
#endif |
|
|
|
Debug( LDAP_DEBUG_TRACE, |
Debug( LDAP_DEBUG_TRACE, |
"%s init: initiated %s.\n", |
"%s init: initiated %s.\n", name, |
name, mode == SLAP_TOOL_MODE ? "tool" : "server", 0 ); |
(mode & SLAP_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_pool_init(&connection_pool, SLAP_MAX_WORKER_THREADS, 0); |
ldap_pvt_thread_cond_init( &active_threads_cond ); |
|
|
|
ldap_pvt_thread_mutex_init( ¤ttime_mutex ); |
ldap_pvt_thread_mutex_init( ¤ttime_mutex ); |
ldap_pvt_thread_mutex_init( &entry2str_mutex ); |
ldap_pvt_thread_mutex_init( &entry2str_mutex ); |
Line 106 slap_init( int mode, char *name )
|
Line 107 slap_init( int mode, char *name )
|
ldap_pvt_thread_mutex_init( &crypt_mutex ); |
ldap_pvt_thread_mutex_init( &crypt_mutex ); |
#endif |
#endif |
|
|
rc = backend_init(); |
rc = backend_init( ); |
break; |
break; |
|
|
default: |
default: |
Line 119 slap_init( int mode, char *name )
|
Line 120 slap_init( int mode, char *name )
|
return rc; |
return rc; |
} |
} |
|
|
int slap_startup(int dbnum) |
int slap_startup( Backend *be ) |
{ |
{ |
int rc; |
int rc; |
|
|
Line 127 int slap_startup(int dbnum)
|
Line 128 int slap_startup(int dbnum)
|
"%s startup: initiated.\n", |
"%s startup: initiated.\n", |
slap_name, 0, 0 ); |
slap_name, 0, 0 ); |
|
|
rc = backend_startup(dbnum); |
rc = backend_startup( be ); |
|
|
|
if( rc == 0 ) { |
|
rc = sasl_init(); |
|
} |
|
|
return rc; |
return rc; |
} |
} |
|
|
int slap_shutdown(int dbnum) |
int slap_shutdown( Backend *be ) |
{ |
{ |
int rc; |
int rc; |
|
|
Line 140 int slap_shutdown(int dbnum)
|
Line 145 int slap_shutdown(int dbnum)
|
"%s shutdown: initiated\n", |
"%s shutdown: initiated\n", |
slap_name, 0, 0 ); |
slap_name, 0, 0 ); |
|
|
|
sasl_destroy(); |
|
|
/* let backends do whatever cleanup they need to do */ |
/* let backends do whatever cleanup they need to do */ |
rc = backend_shutdown(dbnum); |
rc = backend_shutdown( be ); |
|
|
return rc; |
return rc; |
} |
} |
Line 156 int slap_destroy(void)
|
Line 163 int slap_destroy(void)
|
|
|
rc = backend_destroy(); |
rc = backend_destroy(); |
|
|
|
entry_destroy(); |
|
|
ldap_pvt_thread_destroy(); |
ldap_pvt_thread_destroy(); |
|
|
/* should destory the above mutex */ |
/* should destory the above mutex */ |