io_flush(NORMAL_FLUSH);
- if ((pid = do_fork()) == 0) {
+ if ((pid = do_fork()) == -1) {
+ rsyserr(FERROR, errno, "fork failed in do_recv()");
+ exit_cleanup(RERR_IPC);
+ }
+
+ if (pid == 0) {
close(error_pipe[0]);
if (need_name_pipe) {
close(name_pipe[1]);