]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/main.c
fix a_nvals according to back-ldap implementation (ITS#2716; at least part of it)
[openldap] / servers / slapd / main.c
index 3667b07a4e16f171466d467338a89559078b651d..61dc82e12186bb0210fdedbaf51460e4b5c37de8 100644 (file)
@@ -151,6 +151,8 @@ int main( int argc, char **argv )
        }
 #endif
 
+       sl_mem_init();
+
 #ifdef HAVE_NT_SERVICE_MANAGER
        {
                int *i;
@@ -360,6 +362,8 @@ int main( int argc, char **argv )
 #endif
 
        extops_init();
+       lutil_passwd_init();
+       slap_op_init();
 
 #ifdef SLAPD_MODULES
        if ( module_init() != 0 ) {
@@ -369,12 +373,6 @@ int main( int argc, char **argv )
        }
 #endif
 
-       if ( slap_init( serverMode, serverName ) != 0 ) {
-               rc = 1;
-               SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 18 );
-               goto destroy;
-       }
-
        if ( slap_schema_init( ) != 0 ) {
 #ifdef NEW_LOGGING
                LDAP_LOG( OPERATION, CRIT, "main: schema initialization error\n", 0, 0, 0 );
@@ -387,6 +385,12 @@ int main( int argc, char **argv )
                goto destroy;
        }
 
+       if ( slap_init( serverMode, serverName ) != 0 ) {
+               rc = 1;
+               SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 18 );
+               goto destroy;
+       }
+
        if ( slap_controls_init( ) != 0 ) {
 #ifdef NEW_LOGGING
                LDAP_LOG( OPERATION, CRIT, "main: controls initialization error\n", 0, 0, 0 );
@@ -520,6 +524,12 @@ int main( int argc, char **argv )
        mal_leaktrace(1);
 #endif
 
+       /*
+        * FIXME: moved here from slapd_daemon_task()
+        * because back-monitor db_open() needs it
+        */
+       time( &starttime );
+
        if ( slap_startup( NULL )  != 0 ) {
                rc = 1;
                SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 21 );
@@ -586,6 +596,8 @@ destroy:
        module_kill();
 #endif
 
+       slap_op_destroy();
+
        extops_kill();
 
 stop:
@@ -614,6 +626,8 @@ stop:
 
        schema_destroy();
 
+       lutil_passwd_destroy();
+
 #ifdef HAVE_TLS
        ldap_pvt_tls_destroy();
 #endif