ftpserver.pl: Added support for UID command
authorSteve Holme <steve_holme@hotmail.com>
Wed, 11 Sep 2013 19:26:43 +0000 (20:26 +0100)
committerSteve Holme <steve_holme@hotmail.com>
Wed, 11 Sep 2013 19:27:13 +0000 (20:27 +0100)
tests/ftpserver.pl

index beca829..a74a84a 100755 (executable)
@@ -600,6 +600,7 @@ sub protocolsetup {
             'SELECT'     => \&SELECT_imap,
             'STATUS'     => \&STATUS_imap,
             'STORE'      => \&STORE_imap
+            'UID'        => \&UID_imap,
         );
         %displaytext = (
             'LOGIN'   => ' OK LOGIN completed',
@@ -1292,6 +1293,44 @@ sub COPY_imap {
     return 0;
 }
 
+sub UID_imap {
+    my ($args) = @_;
+    my ($command) = split(/ /, $args, 1);
+    fix_imap_params($command, $mailbox);
+
+    logmsg "UID_imap got $args\n";
+
+    if ($selected eq "") {
+        sendcontrol "$cmdid BAD Command received in Invalid state\r\n";
+    }
+    elsif (($command ne "COPY") && ($command ne "FETCH") &&
+           ($command ne "STORE") && ($command ne "SEARCH")) {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        my $testno = $selected;
+
+        $testno =~ s/^([^0-9]*)//;
+        my $testpart = "";
+        if ($testno > 10000) {
+            $testpart = $testno % 10000;
+            $testno = int($testno / 10000);
+        }
+
+        loadtest("$srcdir/data/test$testno");
+
+        my @data = getpart("reply", "data$testpart");
+
+        for my $d (@data) {
+            sendcontrol $d;
+        }
+
+        sendcontrol "$cmdid OK $command completed\r\n";
+    }
+
+    return 0;
+}
+
 sub LOGOUT_imap {
     sendcontrol "* BYE cURL IMAP server signing off\r\n";
     sendcontrol "$cmdid OK LOGOUT completed\r\n";