# Make 'requested' hold the non-duplicate pids from 'pidlist'.
@requested = split(' ', $pidlist);
- return if(not defined(@requested));
+ return if(not @requested);
if(scalar(@requested) > 2) {
@requested = sort({$a <=> $b} @requested);
}
}
# Allow all signalled processes five seconds to gracefully die.
- if(defined(@signalled)) {
+ if(@signalled) {
my $twentieths = 5 * 20;
while($twentieths--) {
for(my $i = scalar(@signalled) - 1; $i >= 0; $i--) {
}
# Mercilessly SIGKILL processes still alive.
- if(defined(@signalled)) {
+ if(@signalled) {
foreach my $pid (@signalled) {
if($pid > 0) {
print("RUN: Process with pid $pid forced to die with SIGKILL\n")
}
# Reap processes dead children for sure.
- if(defined(@reapchild)) {
+ if(@reapchild) {
foreach my $pid (@reapchild) {
if($pid > 0) {
waitpid($pid, 0);
#
sub ftpkillslave {
my ($id, $ext, $verbose)=@_;
- my $base;
- for $base (('filt', 'data')) {
+ for my $base (('filt', 'data')) {
my $f = ".sock$base$id$ext.pid";
my $pid = processexists($f);
if($pid > 0) {
- printf ("* kill pid for %s => %d\n", "ftp-$base$id$ext", $pid)
+ printf("* kill pid for %s => %d\n", "ftp-$base$id$ext", $pid)
if($verbose);
kill (9, $pid);
waitpid($pid, 0);
sub ftpkillslaves {
my ($verbose) = @_;
- for $ext (('', 'ipv6')) {
- for $id (('', '2')) {
- for $base (('filt', 'data')) {
+ for my $ext (('', 'ipv6')) {
+ for my $id (('', '2')) {
+ for my $base (('filt', 'data')) {
my $f = ".sock$base$id$ext.pid";
my $pid = processexists($f);
if($pid > 0) {
- printf ("* kill pid for %s => %d\n", "ftp-$base$id$ext",
+ printf("* kill pid for %s => %d\n", "ftp-$base$id$ext",
$pid) if($verbose);
kill (9, $pid);
waitpid($pid, 0);
# better on windows/cygwin
}
-do {
+while(@ARGV) {
if($ARGV[0] eq "-v") {
$verbose=1;
}
$listenaddr =~ s/^\[(.*)\]$/$1/;
shift @ARGV;
}
-} while(shift @ARGV);
+ shift @ARGV;
+};
# a dedicated protocol has been selected, check that it's a fine one
if($proto !~ /^(ftp|imap|pop3|smtp)\z/) {
my $i;
sysread DREAD, $i, 5;
- #print STDERR " GOT: $i";
+ my $size = 0;
+ if($i =~ /^([0-9a-fA-F]{4})\n/) {
+ $size = hex($1);
+ }
- my $size = hex($i);
sysread DREAD, $line, $size;
#print STDERR " GOT: $size bytes\n";
# READ the response size
sysread_or_die(\*DREAD, \$i, 5);
- my $size = hex($i);
-
+ my $size = 0;
+ if($i =~ /^([0-9a-fA-F]{4})\n/) {
+ $size = hex($1);
+ }
+
# READ the response data
sysread_or_die(\*DREAD, \$i, $size);
# SIZE of data
sysread_or_die(\*SFREAD, \$i, 5);
- my $size = hex($i);
+ my $size = 0;
+ if($i =~ /^([0-9a-fA-F]{4})\n/) {
+ $size = hex($1);
+ }
# data
sysread SFREAD, $_, $size;
my $text;
$text = $customreply{$FTPCMD};
my $fake = $text;
- if($text eq "") {
- $text = $displaytext{$FTPCMD};
- }
- else {
+
+ if($text && ($text ne "")) {
if($customcount{$FTPCMD} && (!--$customcount{$FTPCMD})) {
# used enough number of times, now blank the customreply
$customreply{$FTPCMD}="";
}
}
+ else {
+ $text = $displaytext{$FTPCMD};
+ }
my $check;
- if($text) {
- sendcontrol "$cmdid$text\r\n";
+ if($text && ($text ne "")) {
+ if($cmdid && ($cmdid ne "")) {
+ sendcontrol "$cmdid$text\r\n";
+ }
+ else {
+ sendcontrol "$text\r\n";
+ }
}
else {
$check=1; # no response yet
}
- if($fake eq "") {
+ unless($fake && ($fake ne "")) {
# only perform this if we're not faking a reply
my $func = $commandfunc{$FTPCMD};
if($func) {