diff options
author | Steve Holme <steve_holme@hotmail.com> | 2013-09-11 18:00:01 +0100 |
---|---|---|
committer | Steve Holme <steve_holme@hotmail.com> | 2013-09-11 18:10:28 +0100 |
commit | b0afb000009276c37ffef960b929779f4e86e850 (patch) | |
tree | 9a99692f98b04eae8a6a6017d82ff0765ecdf63b | |
parent | 0b5ae7c80eb41ea75b10e5195286e6d0c35cef88 (diff) |
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.
-rwxr-xr-x | tests/ftpserver.pl | 21 |
1 files 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; |