From 422a7869be706eac6fa19c0fbbcfcaa348ffb2e4 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Wed, 20 Jan 2010 20:39:56 +0000 Subject: Allow killsockfilters() to take a 5th optional parameter that when provided indicates that only one of the two possible sockfilter processes should be killed. Valid values for this parameter are 'main' and 'data'. --- tests/ftp.pm | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) (limited to 'tests/ftp.pm') 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); } ####################################################################### -- cgit v1.2.3