Commit fa188eec authored by Yang Tse's avatar Yang Tse
Browse files

dead_child_handler also takes care of reaping pingpong server dead child processes

parent bdd37639
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -110,6 +110,19 @@ sub exit_signal_handler {
    exit;
}

#**********************************************************************
# dead_child_handler takes care of reaping dead child processes.
#
sub dead_child_handler {
    use POSIX ":sys_wait_h";
    local $!; # preserve errno
    local $?; # preserve exit status
    while (waitpid(-1, &WNOHANG) > 0) {
        select(undef, undef, undef, 0.05);
    }
    $SIG{CHLD} = \&dead_child_handler;
}

#**********************************************************************
# getlogfilename returns a log file name depending on given arguments.
#
@@ -204,6 +217,7 @@ if($proto !~ /^(ftp|imap|pop3|smtp)\z/) {

$SIG{INT} = \&exit_signal_handler;
$SIG{TERM} = \&exit_signal_handler;
$SIG{CHLD} = \&dead_child_handler;

sub sysread_or_die {
    my $FH     = shift;