diff options
-rw-r--r-- | tests/ftp.pm | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/tests/ftp.pm b/tests/ftp.pm index 0f4976c7c..2be547fc7 100644 --- a/tests/ftp.pm +++ b/tests/ftp.pm @@ -177,36 +177,43 @@ sub killpid { # killsockfilters kills sockfilter processes for a given server. # sub killsockfilters { - my ($proto, $ipvnum, $idnum, $verbose) = @_; + my ($proto, $ipvnum, $idnum, $verbose, $which) = @_; my $server; my $pidfile; my $pid; return if($proto !~ /^(ftp|imap|pop3|smtp)$/); + die "unsupported sockfilter: $which" + if($which && ($which !~ /^(main|data)$/)); + $server = servername_id($proto, $ipvnum, $idnum) if($verbose); - $pidfile = mainsockf_pidfilename($proto, $ipvnum, $idnum); - $pid = processexists($pidfile); - if($pid > 0) { - printf("* kill pid for %s-%s => %d\n", $server, - ($proto eq 'ftp')?'ctrl':'filt', $pid) if($verbose); - kill("KILL", $pid); - waitpid($pid, 0); + if(!$which || ($which eq 'main')) { + $pidfile = mainsockf_pidfilename($proto, $ipvnum, $idnum); + $pid = processexists($pidfile); + if($pid > 0) { + printf("* kill pid for %s-%s => %d\n", $server, + ($proto eq 'ftp')?'ctrl':'filt', $pid) if($verbose); + kill("KILL", $pid); + waitpid($pid, 0); + } + unlink($pidfile) if(-f $pidfile); } - unlink($pidfile) if(-f $pidfile); return if($proto ne 'ftp'); - $pidfile = datasockf_pidfilename($proto, $ipvnum, $idnum); - $pid = processexists($pidfile); - if($pid > 0) { - printf("* kill pid for %s-data => %d\n", $server, - $pid) if($verbose); - kill("KILL", $pid); - waitpid($pid, 0); + if(!$which || ($which eq 'data')) { + $pidfile = datasockf_pidfilename($proto, $ipvnum, $idnum); + $pid = processexists($pidfile); + if($pid > 0) { + printf("* kill pid for %s-data => %d\n", $server, + $pid) if($verbose); + kill("KILL", $pid); + waitpid($pid, 0); + } + unlink($pidfile) if(-f $pidfile); } - unlink($pidfile) if(-f $pidfile); } ####################################################################### |