diff options
author | Yang Tse <yangsita@gmail.com> | 2009-12-23 15:20:20 +0000 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2009-12-23 15:20:20 +0000 |
commit | c74875d94e9fee0c3778ea4d3896961ceab16a53 (patch) | |
tree | 8d62ddb6386bbee462efbeb4da1e512be88855a4 /tests/ftpserver.pl | |
parent | 271dc9c5821d05c454936a0b8acad5aa0a09c8a7 (diff) |
Back out some pingpong server stopping changes introduced last week in
order to re-use 'classic' stopping and allow taking test-suite run time
references from this state.
Diffstat (limited to 'tests/ftpserver.pl')
-rw-r--r-- | tests/ftpserver.pl | 41 |
1 files changed, 14 insertions, 27 deletions
diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl index 0f5aa55fb..f783b2402 100644 --- a/tests/ftpserver.pl +++ b/tests/ftpserver.pl @@ -96,12 +96,6 @@ my $exit_signal; # first signal handled in exit_signal_handler # sub exit_signal_handler { my $signame = shift; - local $!; # preserve errno - if($got_exit_signal == 0) { - $got_exit_signal = 1; - $exit_signal = $signame; - } - $SIG{$signame} = \&exit_signal_handler; # For now, simply mimic old behavior. ftpkillslaves($verbose); unlink($pidfile); @@ -113,19 +107,6 @@ sub exit_signal_handler { } #********************************************************************** -# 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. # sub getlogfilename { @@ -220,7 +201,6 @@ 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; @@ -236,7 +216,8 @@ sub sysread_or_die { ($fcaller, $lcaller) = (caller)[1,2]; logmsg "Failed to read input\n"; logmsg "Error: ftp$ftpdnum$ext sysread error: $!\n"; - killpid($verbose, $sfpid); + kill(9, $sfpid); + waitpid($sfpid, 0); logmsg "Exited from sysread_or_die() at $fcaller " . "line $lcaller. ftp$ftpdnum$ext sysread error: $!\n"; unlink($pidfile); @@ -250,7 +231,8 @@ sub sysread_or_die { ($fcaller, $lcaller) = (caller)[1,2]; logmsg "Failed to read input\n"; logmsg "Error: ftp$ftpdnum$ext read zero\n"; - killpid($verbose, $sfpid); + kill(9, $sfpid); + waitpid($sfpid, 0); logmsg "Exited from sysread_or_die() at $fcaller " . "line $lcaller. ftp$ftpdnum$ext read zero\n"; unlink($pidfile); @@ -276,7 +258,8 @@ sub startsf { if($pong !~ /^PONG/) { logmsg "Failed sockfilt command: $cmd\n"; - killpid($verbose, $sfpid); + kill(9, $sfpid); + waitpid($sfpid, 0); unlink($pidfile); if($serverlogslocked) { $serverlogslocked = 0; @@ -824,7 +807,8 @@ sub PASV_ftp { my $prev = processexists($pidf); if($prev > 0) { print "kill existing server: $prev\n" if($verbose); - killpid($verbose, $prev); + kill(9, $prev); + waitpid($prev, 0); } # We fire up a new sockfilt to do the data transfer for us. @@ -837,7 +821,8 @@ sub PASV_ftp { sysread_or_die(\*DREAD, \$pong, 5); if($pong !~ /^PONG/) { - killpid($verbose, $slavepid); + kill(9, $slavepid); + waitpid($slavepid, 0); sendcontrol "500 no free ports!\r\n"; logmsg "failed to run sockfilt for data connection\n"; return 0; @@ -971,7 +956,8 @@ sub PORT_ftp { if($pong !~ /^PONG/) { logmsg "Failed sockfilt for data connection\n"; - killpid($verbose, $slavepid); + kill(9, $slavepid); + waitpid($slavepid, 0); } logmsg "====> Client DATA connect to port $port\n"; @@ -1091,7 +1077,8 @@ while(1) { # flush data: $| = 1; - killpid($verbose, $slavepid); + kill(9, $slavepid) if($slavepid); + waitpid($slavepid, 0) if($slavepid); $slavepid=0; &customize(); # read test control instructions |