]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/main.c
Add search no-op support.
[openldap] / servers / slapd / main.c
index b1beef495d5c19c2537cf587ee6d1493fe19b5c0..53ccf4004767eb5ddae2d1dc302e5ad64165d870 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 #include "portable.h"
 #include "lutil.h"
 #include "ldif.h"
 
-/* I guess this should be declared in ldap_pvt.h */
-extern int ldap_pvt_tls_init_def_ctx( void );
-
 #ifdef LDAP_SIGCHLD
 static RETSIGTYPE wait4child( int sig );
 #endif
 
 #ifdef HAVE_NT_SERVICE_MANAGER
 #define MAIN_RETURN(x) return
-struct sockaddr_in     bind_addr;
-
-/* in nt_main.c */
-LDAP_LUTIL_V(SERVICE_STATUS)           SLAPDServiceStatus;
-LDAP_LUTIL_V(SERVICE_STATUS_HANDLE)    hSLAPDServiceStatus;
-extern ldap_pvt_thread_cond_t  started_event,          stopped_event;
-extern int       is_NT_Service;
+static struct sockaddr_in      bind_addr;
 
 void CommenceStartupProcessing( LPCTSTR serverName,
                                                           void(*stopper)(int));
@@ -144,6 +135,9 @@ int main( int argc, char **argv )
 #ifdef LOG_LOCAL4
     int            syslogUser = DEFAULT_SYSLOG_USER;
 #endif
+       
+       int g_argc = argc;
+       char **g_argv = argv;
 
 #ifdef HAVE_NT_SERVICE_MANAGER
        char            *configfile = ".\\slapd.conf";
@@ -160,8 +154,6 @@ int main( int argc, char **argv )
        }
 #endif
 
-       g_argc = argc;
-       g_argv = argv;
 
 #ifdef HAVE_NT_SERVICE_MANAGER
        {
@@ -316,9 +308,9 @@ int main( int argc, char **argv )
 
        if( serverName == NULL ) {
                if ( (serverName = strrchr( argv[0], *LDAP_DIRSEP )) == NULL ) {
-                       serverName = ch_strdup( argv[0] );
+                       serverName = argv[0];
                } else {
-                       serverName = ch_strdup( serverName + 1 );
+                       serverName = serverName + 1;
                }
        }
 
@@ -371,7 +363,7 @@ int main( int argc, char **argv )
                goto destroy;
        }
 
-       if ( schema_init( ) != 0 ) {
+       if ( slap_schema_init( ) != 0 ) {
 #ifdef NEW_LOGGING
                LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
                           "main: schema initialization error\n" ));
@@ -390,7 +382,19 @@ int main( int argc, char **argv )
                goto destroy;
        }
 
-       if ( schema_prep( ) != 0 ) {
+       if ( glue_sub_init( ) != 0 ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
+                          "main: subordinate config error\n"));
+#else
+               Debug( LDAP_DEBUG_ANY,
+                   "subordinate config error\n",
+                   0, 0, 0 );
+#endif
+               goto destroy;
+       }
+
+       if ( slap_schema_check( ) != 0 ) {
 #ifdef NEW_LOGGING
                LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
                           "main: schema prep error\n"));
@@ -553,6 +557,8 @@ stop:
        ldap_pvt_tls_destroy();
 #endif
 
+       config_destroy();
+
 #ifdef CSRIMALLOC
        mal_dumpleaktrace( leakfile );
 #endif