aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSteve Holme <steve_holme@hotmail.com>2013-09-11 18:00:01 +0100
committerSteve Holme <steve_holme@hotmail.com>2013-09-11 18:10:28 +0100
commitb0afb000009276c37ffef960b929779f4e86e850 (patch)
tree9a99692f98b04eae8a6a6017d82ff0765ecdf63b /tests
parent0b5ae7c80eb41ea75b10e5195286e6d0c35cef88 (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-xtests/ftpserver.pl21
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;