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 /tests | |
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.
Diffstat (limited to 'tests')
-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; |