]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/main.c
Partial revert of f30269f5d2e4bb5ee7486fe6542078d1b59dba6d
[openldap] / servers / slapd / main.c
index 46629e73aa098ef947dc2b6a8e67a525d1b1a572..6dd6da0cddd8258d6318b92d0c8454f541a9596a 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2011 The OpenLDAP Foundation.
+ * Copyright 1998-2012 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -906,23 +906,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 */
 
@@ -995,8 +997,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