lib/PublicInbox/IMAP.pm | 6 ++++++ t/imapd.t | 3 ++- diff --git a/lib/PublicInbox/IMAP.pm b/lib/PublicInbox/IMAP.pm index 54c616eee2fd307f39a102384be59dcd9416f99e..0852ffab868dc61bfba42d9ca8f1858911ddcfd0 100644 --- a/lib/PublicInbox/IMAP.pm +++ b/lib/PublicInbox/IMAP.pm @@ -121,6 +121,12 @@ my ($self, $tag) = @_; # ignore ($user, $password) = ($_[2], $_[3]) login_success($self, $tag); } +sub cmd_close ($$) { + my ($self, $tag) = @_; + delete $self->{ibx} ? "$tag OK Close done\r\n" + : "$tag BAD No mailbox\r\n"; +} + sub cmd_logout ($$) { my ($self, $tag) = @_; delete $self->{logged_in}; diff --git a/t/imapd.t b/t/imapd.t index 1ec0d5c370fcd6220e2c95d5f527f605bf598d19..8172a91923d3777de714a989ed03d5716942f75d 100644 --- a/t/imapd.t +++ b/t/imapd.t @@ -327,7 +327,8 @@ or BAIL_OUT "FETCH $@"; is($r2->{2}->{'BODY[HEADER.FIELDS (MESSAGE-ID)]'}, 'Message-ID: <20200418222508.GA13918@dcvr>'."\r\n\r\n", 'BODY.PEEK[HEADER.FIELDS ...] drops .PEEK'); - +ok($mic->close, 'CLOSE works'); +ok(!$mic->close, 'CLOSE not idempotent'); ok($mic->logout, 'logged out'); $td->kill;