]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/main.c
Use AC_STRERROR_R
[openldap] / servers / slapd / main.c
index 97ca93576ee81f3393328814476be3fcf30d8608..0fdef6bc8702a406b0c7d725b848d8f71a4d4421 100644 (file)
@@ -132,6 +132,8 @@ static int   cnvt_str2int( char *, STRDISP_P, int );
 static int check = CHECK_NONE;
 static int version = 0;
 
+void *slap_tls_ctx;
+
 static void
 usage( char *name )
 {
@@ -208,7 +210,7 @@ int main( int argc, char **argv )
        char    *serverNamePrefix = "";
        size_t  l;
 
-       sl_mem_init();
+       slap_sl_mem_init();
 
        serverName = lutil_progname( "slapd", argc, argv );
 
@@ -622,18 +624,32 @@ int main( int argc, char **argv )
                goto destroy;
        }
 
-       rc = ldap_pvt_tls_init_def_ctx();
-       if( rc != 0) {
+       {
+               void *def_ctx = NULL;
+
+               /* Save existing default ctx, if any */
+               ldap_pvt_tls_get_option( NULL, LDAP_OPT_X_TLS_CTX, &def_ctx );
+
+               /* Force new ctx to be created */
+               ldap_pvt_tls_set_option( NULL, LDAP_OPT_X_TLS_CTX, NULL );
+
+               rc = ldap_pvt_tls_init_def_ctx();
+               if( rc != 0) {
 #ifdef NEW_LOGGING
-               LDAP_LOG( SLAPD, CRIT, "main: tls init def ctx failed: %d\n", rc, 0, 0 );
+                       LDAP_LOG( SLAPD, CRIT, "main: tls init def ctx failed: %d\n", rc, 0, 0 );
 #else
-               Debug( LDAP_DEBUG_ANY,
-                   "main: TLS init def ctx failed: %d\n",
-                   rc, 0, 0 );
+                       Debug( LDAP_DEBUG_ANY,
+                           "main: TLS init def ctx failed: %d\n",
+                           rc, 0, 0 );
 #endif
-               rc = 1;
-               SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 20 );
-               goto destroy;
+                       rc = 1;
+                       SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 20 );
+                       goto destroy;
+               }
+               /* Retrieve slapd's own ctx */
+               ldap_pvt_tls_get_option( NULL, LDAP_OPT_X_TLS_CTX, &slap_tls_ctx );
+               /* Restore previous ctx */
+               ldap_pvt_tls_set_option( NULL, LDAP_OPT_X_TLS_CTX, def_ctx );
        }
 #endif