--- sysklogd-1.4.2rh/syslogd.c.startFailed 2007-05-07 15:49:48.000000000 +0200 +++ sysklogd-1.4.2rh/syslogd.c 2007-05-07 15:53:50.000000000 +0200 @@ -788,6 +788,7 @@ void exit_signal_handler(int sig); #ifndef TESTING void doexit(int sig); +void doExitFail(int sig); #endif void init(); void cfline(char *line, register struct filed *f); @@ -945,7 +946,8 @@ dprintf("Checking pidfile.\n"); if (!check_pid(PidFile)) { - signal (SIGTERM, doexit); + signal(SIGTERM, doexit); + signal(SIGCHLD, doExitFail); if (fork()) { /* * Parent process @@ -962,6 +964,7 @@ exit(1); } signal (SIGTERM, SIG_DFL); + signal (SIGCHLD, SIG_DFL); num_fds = getdtablesize(); for (i= 0; i < num_fds; i++) (void) close(i); @@ -2408,6 +2411,13 @@ { exit (0); } + +void doExitFail(sig) + int sig; +{ + exit (1); +} + #endif /*