aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/ftp.pm21
-rw-r--r--tests/ftpserver.pl43
2 files changed, 39 insertions, 25 deletions
diff --git a/tests/ftp.pm b/tests/ftp.pm
index 10ad79eda..af4871733 100644
--- a/tests/ftp.pm
+++ b/tests/ftp.pm
@@ -87,7 +87,7 @@ sub killpid {
# 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);
}
@@ -121,7 +121,7 @@ sub killpid {
}
# 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--) {
@@ -141,7 +141,7 @@ sub killpid {
}
# 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")
@@ -155,7 +155,7 @@ sub killpid {
}
# Reap processes dead children for sure.
- if(defined(@reapchild)) {
+ if(@reapchild) {
foreach my $pid (@reapchild) {
if($pid > 0) {
waitpid($pid, 0);
@@ -169,13 +169,12 @@ sub killpid {
#
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);
@@ -191,13 +190,13 @@ sub ftpkillslave {
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);
diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl
index f783b2402..38cf2af72 100644
--- a/tests/ftpserver.pl
+++ b/tests/ftpserver.pl
@@ -157,7 +157,7 @@ sub ftpmsg {
# better on windows/cygwin
}
-do {
+while(@ARGV) {
if($ARGV[0] eq "-v") {
$verbose=1;
}
@@ -192,7 +192,8 @@ do {
$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/) {
@@ -768,9 +769,11 @@ sub STOR_ftp {
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";
@@ -840,8 +843,11 @@ sub PASV_ftp {
# 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);
@@ -1111,7 +1117,10 @@ while(1) {
# 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;
@@ -1163,24 +1172,30 @@ while(1) {
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) {