diff options
-rw-r--r-- | tests/data/Makefile.am | 2 | ||||
-rw-r--r-- | tests/data/test126 | 33 | ||||
-rw-r--r-- | tests/ftpserver.pl | 35 |
3 files changed, 61 insertions, 9 deletions
diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 71e0a60f5..575c1ecb9 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -14,4 +14,4 @@ test103 test112 test121 test17 test22 test300 test401 test8 \ test104 test113 test122 test18 test23 test301 test402 test9 \ test105 test114 test123 test19 test24 test302 test43 \ test106 test115 test124 test190 test25 test303 test44 \ -test107 test116 test125 test2 test26 test33 test45 +test107 test116 test125 test2 test26 test33 test45 test126 diff --git a/tests/data/test126 b/tests/data/test126 new file mode 100644 index 000000000..55abb5af6 --- /dev/null +++ b/tests/data/test126 @@ -0,0 +1,33 @@ +# Server-side +<reply> +<data> +this is file contents +</data> +</reply> + +# Client-side +<client> + <name> +FTP download with multiple replies at once in RETR + </name> + <command> +ftp://%HOSTIP:%FTPPORT/blalbla/lululul/126 +</command> +<file name="log/ftpserver.cmd"> +RETRWEIRDO +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<protocol> +USER anonymous
+PASS curl_by_daniel@haxx.se
+PWD
+CWD blalbla/lululul
+EPSV
+TYPE I
+SIZE 126
+RETR 126
+</protocol> +</verify> diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl index beae5fa14..c0094b3a9 100644 --- a/tests/ftpserver.pl +++ b/tests/ftpserver.pl @@ -26,6 +26,7 @@ sub logmsg { print FTPLOG "$$: "; print FTPLOG @_; } sub ftpmsg { print INPUT @_; } my $verbose=0; # set to 1 for debugging +my $retrweirdo=0; my $port = 8921; # just a default do { @@ -226,16 +227,30 @@ sub RETR_command { logmsg "REST $rest was removed from size, makes $size left\n"; $rest = 0; # reset REST offset again } - print "150 Binary data connection for $testno () ($size bytes).\r\n"; - logmsg "150 Binary data connection for $testno ($size bytes).\n"; - - for(@data) { - my $send = $_; - print SOCK $send; + if($retrweirdo) { + print "150 Binary data connection for $testno () ($size bytes).\r\n", + "226 File transfer complete\r\n"; + logmsg "150+226 in one shot!\n"; + + for(@data) { + my $send = $_; + print SOCK $send; + } + close(SOCK); + $retrweirdo=0; # switch off the weirdo again! } - close(SOCK); + else { + print "150 Binary data connection for $testno () ($size bytes).\r\n"; + logmsg "150 Binary data connection for $testno ($size bytes).\n"; - print "226 File transfer complete\r\n"; + for(@data) { + my $send = $_; + print SOCK $send; + } + close(SOCK); + + print "226 File transfer complete\r\n"; + } } else { print "550 $testno: No such file or directory.\r\n"; @@ -367,6 +382,10 @@ sub customize { elsif($_ =~ /DELAY ([A-Z]+) (\d*)/) { $delayreply{$1}=$2; } + elsif($_ =~ /RETRWEIRDO/) { + print "instructed to use RETRWEIRDO\n"; + $retrweirdo=1; + } } close(CUSTOM); } |