]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/main.c
silence warning
[openldap] / servers / slapd / main.c
index 8298f9a3c7505c3d5f334369cec5b8e05ff17f9b..a70698f2f449dee3663350ad2dc8a321858e4074 100644 (file)
@@ -447,13 +447,13 @@ int main( int argc, char **argv )
 
                newConfigFile = (char*)lutil_getRegParam( regService, "ConfigFile" );
                if ( newConfigFile != NULL ) {
-                       configfile = newConfigFile;
+                       configfile = ch_strdup(newConfigFile);
                        Debug ( LDAP_DEBUG_ANY, "new config file from registry is: %s\n", configfile, 0, 0 );
                }
 
                newConfigDir = (char*)lutil_getRegParam( regService, "ConfigDir" );
                if ( newConfigDir != NULL ) {
-                       configdir = newConfigDir;
+                       configdir = ch_strdup(newConfigDir);
                        Debug ( LDAP_DEBUG_ANY, "new config dir from registry is: %s\n", configdir, 0, 0 );
                }
        }
@@ -907,23 +907,25 @@ unhandled_option:;
 #endif
 
 #ifndef HAVE_WINSOCK
-       if ( lutil_pair( waitfds ) < 0 ) {
-               Debug( LDAP_DEBUG_ANY,
-                       "main: lutil_pair failed: %d\n",
-                       0, 0, 0 );
-               rc = 1;
-               goto destroy;
-       }
-       pid = lutil_detach( no_detach, 0 );
-       if ( pid ) {
-               char buf[4];
-               rc = EXIT_SUCCESS;
-               close( waitfds[1] );
-               if ( read( waitfds[0], buf, 1 ) != 1 )
-                       rc = EXIT_FAILURE;
-               _exit( rc );
-       } else {
-               close( waitfds[0] );
+       if ( !no_detach ) {
+               if ( lutil_pair( waitfds ) < 0 ) {
+                       Debug( LDAP_DEBUG_ANY,
+                               "main: lutil_pair failed: %d\n",
+                               0, 0, 0 );
+                       rc = 1;
+                       goto destroy;
+               }
+               pid = lutil_detach( no_detach, 0 );
+               if ( pid ) {
+                       char buf[4];
+                       rc = EXIT_SUCCESS;
+                       close( waitfds[1] );
+                       if ( read( waitfds[0], buf, 1 ) != 1 )
+                               rc = EXIT_FAILURE;
+                       _exit( rc );
+               } else {
+                       close( waitfds[0] );
+               }
        }
 #endif /* HAVE_WINSOCK */
 
@@ -996,8 +998,10 @@ unhandled_option:;
        Debug( LDAP_DEBUG_ANY, "slapd starting\n", 0, 0, 0 );
 
 #ifndef HAVE_WINSOCK
-       write( waitfds[1], "1", 1 );
-       close( waitfds[1] );
+       if ( !no_detach ) {
+               write( waitfds[1], "1", 1 );
+               close( waitfds[1] );
+       }
 #endif
 
 #ifdef HAVE_NT_EVENT_LOG