X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=perl%2FPrefork.pm;h=4fbc2b58ad85f9cf613136e3471d60b62e4e8c90;hb=094a6b0812569672d6e24ca15ca73bca5def16cc;hp=3eb9a27e2e466b64ae12db6988121297980a1994;hpb=d807bc85bb73ad26154640aeeb2ff5c481e6a143;p=chiark-utils.git diff --git a/perl/Prefork.pm b/perl/Prefork.pm index 3eb9a27..4fbc2b5 100644 --- a/perl/Prefork.pm +++ b/perl/Prefork.pm @@ -36,8 +36,7 @@ sub become_monitor () { open ::STDIN , "<& $call_fds[0]" or fail_log("dup for fd0"); open ::STDOUT, ">& $call_fds[1]" or fail_log("dup for fd1"); open ::STDERR, ">& $call_fds[2]" or fail_log("dup for fd2"); - POSIX::close($_) foreach @call_fds; - close CALL; + close_call_fds(); return; } @@ -49,6 +48,14 @@ sub become_monitor () { _exit(0); } +sub close_call_fds () { + foreach (@call_fds) { + next if $_ <= 2; + POSIX::close($_); + } + close CALL; +} + sub protocol_write ($) { my ($d) = @_; return if (print CALL $d and flush CALL); @@ -160,8 +167,7 @@ sub initialisation_complete { open STDERR, ">&NULL" or fail_log("dup null onto stderr: $!"); close NULL; - POSIX::close($_) foreach @call_fds; - close CALL; + close_call_fds(); my $flags = fcntl(LISTEN, F_GETFL, 0) or fail_log("F_GETFL listen socket: $!");