]> git.sur5r.net Git - openldap/commitdiff
ITS#6037: don't loop forever on EINTR in wait4child()
authorHallvard Furuseth <hallvard@openldap.org>
Thu, 26 Mar 2009 22:12:12 +0000 (22:12 +0000)
committerHallvard Furuseth <hallvard@openldap.org>
Thu, 26 Mar 2009 22:12:12 +0000 (22:12 +0000)
servers/slapd/main.c

index fa008ee2cff64d22bd77aa1d9b08ab38746e3e14..b22e8b70f139c65beb1c76d52e92689e134126ce 100644 (file)
@@ -1056,13 +1056,12 @@ wait4child( int sig )
     int save_errno = errno;
 
 #ifdef WNOHANG
-    errno = 0;
+    do
+        errno = 0;
 #ifdef HAVE_WAITPID
-    while ( waitpid( (pid_t)-1, NULL, WNOHANG ) > 0 || errno == EINTR )
-       ;       /* NULL */
+    while ( waitpid( (pid_t)-1, NULL, WNOHANG ) > 0 || errno == EINTR );
 #else
-    while ( wait3( NULL, WNOHANG, NULL ) > 0 || errno == EINTR )
-       ;       /* NULL */
+    while ( wait3( NULL, WNOHANG, NULL ) > 0 || errno == EINTR );
 #endif
 #else
     (void) wait( NULL );
@@ -1072,4 +1071,3 @@ wait4child( int sig )
 }
 
 #endif /* LDAP_SIGCHLD */
-