From 8a2bfd38285c8fe3333b7fbbfe520879d5d720cf Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Mon, 9 Jun 2003 20:09:11 +0000 Subject: Also exit waitpid() loop when pid == 0. Fixes a problem where the sudo process would spin eating up CPU until sendmail finished when it has to send mail. --- usr.bin/sudo/logging.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'usr.bin') diff --git a/usr.bin/sudo/logging.c b/usr.bin/sudo/logging.c index 28068fb6e8d..9fd2e1fc6a4 100644 --- a/usr.bin/sudo/logging.c +++ b/usr.bin/sudo/logging.c @@ -592,10 +592,12 @@ reapchild(sig) int sig; { int status, serrno = errno; - #ifdef sudo_waitpid - while (sudo_waitpid(-1, &status, WNOHANG) != -1 || errno == EINTR) - ; + pid_t pid; + + do { + pid = sudo_waitpid(-1, &status, WNOHANG); + } while (pid != 0 && (pid != -1 || errno == EINTR)); #else (void) wait(&status); #endif -- cgit v1.2.3