In sigchild_handler(), finish with waitpid() before reinitializing
[rsync/rsync.git] / socket.c
index 772bb92..140480b 100644 (file)
--- a/socket.c
+++ b/socket.c
@@ -431,10 +431,10 @@ int is_a_socket(int fd)
 
 static RETSIGTYPE sigchld_handler(UNUSED(int val))
 {
-       signal(SIGCHLD, sigchld_handler);
 #ifdef WNOHANG
        while (waitpid(-1, NULL, WNOHANG) > 0) {}
 #endif
+       signal(SIGCHLD, sigchld_handler);
 }