ftpserver.pl: Moved invalid RCPT TO: address detection to RCPT handler
authorSteve Holme <steve_holme@hotmail.com>
Sun, 22 Sep 2013 10:03:18 +0000 (11:03 +0100)
committerSteve Holme <steve_holme@hotmail.com>
Sun, 22 Sep 2013 10:03:18 +0000 (11:03 +0100)
Rather than detecting the TO address as missing in the DATA handler,
moved the detection to the RCPT command handler where an error response
can be generated.

tests/ftpserver.pl

index 1c1512b..2120c85 100755 (executable)
@@ -813,16 +813,26 @@ sub MAIL_smtp {
     return 0;
 }
 
-sub DATA_smtp {
-    my $testno;
+sub RCPT_smtp {
+    my ($args) = @_;
 
-    if($smtp_rcpt =~ /^TO:(.*)/) {
-        $testno = $1;
+    logmsg "RCPT_smtp got $args\n";
+
+    if($args !~ /^TO:(.*)/) {
+        sendcontrol "501 Unrecognized parameter\r\n";
     }
     else {
-        return; # failure
+        $smtp_rcpt = $1;
+
+        sendcontrol "200 Receivers accepted\r\n";
     }
 
+    return 0;
+}
+
+sub DATA_smtp {
+    my $testno = $smtp_rcpt;
+
     $testno =~ s/^([^0-9]*)([0-9]+).*/$2/;
     sendcontrol "354 Show me the mail\r\n";
 
@@ -885,18 +895,6 @@ sub DATA_smtp {
 
 }
 
-sub RCPT_smtp {
-    my ($args) = @_;
-
-    logmsg "RCPT_smtp got $args\n";
-
-    $smtp_rcpt = $args;
-
-    sendcontrol "200 Receivers accepted\r\n";
-
-    return 0;
-}
-
 sub HELO_smtp {
     my ($client) = @_;