From b0afb000009276c37ffef960b929779f4e86e850 Mon Sep 17 00:00:00 2001 From: Steve Holme Date: Wed, 11 Sep 2013 18:00:01 +0100 Subject: ftpserver.pl: Added the ability to remember what messages are deleted ...as this will be required for IMAP CLOSE and EXPUNGE commands as well as the POP3 RSET command. --- tests/ftpserver.pl | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl index dc1c0815a..1c63a308e 100755 --- a/tests/ftpserver.pl +++ b/tests/ftpserver.pl @@ -759,6 +759,9 @@ sub RCPT_smtp { $smtp_rcpt = $args; } +# What was deleted by IMAP STORE / POP3 DELE commands +my @deleted; + ################ ################ IMAP commands ################ @@ -965,7 +968,7 @@ sub APPEND_imap { sub STORE_imap { my ($args) = @_; - my ($uid, $what) = split(/ /, $args, 2); + my ($uid, $what, $value) = split(/ /, $args, 3); fix_imap_params($uid); logmsg "STORE_imap got $args\n"; @@ -973,11 +976,15 @@ sub STORE_imap { if ($selected eq "") { sendcontrol "$cmdid BAD Command received in Invalid state\r\n"; } - elsif (($uid eq "") || ($what eq "")) { + elsif (($uid eq "") || ($what ne "+Flags") || ($value eq "")) { sendcontrol "$cmdid BAD Command Argument\r\n"; } else { - sendcontrol "* $uid FETCH (FLAGS (\\Seen \\Deleted))\r\n"; + if($value eq "\\Deleted") { + push(@deleted, $uid); + } + + sendcontrol "* $uid FETCH (FLAGS (\\Seen $value))\r\n"; sendcontrol "$cmdid OK STORE completed\r\n"; } @@ -1345,6 +1352,8 @@ sub DELE_pop3 { sendcontrol "-ERR Protocol error\r\n"; } else { + push (@deleted, $msg); + sendcontrol "+OK\r\n"; } @@ -1448,6 +1457,12 @@ sub TOP_pop3 { } sub QUIT_pop3 { + if(@deleted) { + logmsg "deleting @deleted message(s)\n"; + + @deleted = (); + } + sendcontrol "+OK byebye\r\n"; return 0; -- cgit v1.2.3