From: Eric Wong Date: Wed, 10 Jun 2020 07:04:45 +0000 (+0000) Subject: imap: STATUS and LIST are case-insensitive, too X-Git-Tag: v1.6.0~419 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=1c56782dbe1bd38d48c7e94d9aa2265377ba3842 imap: STATUS and LIST are case-insensitive, too Some clients insist on sending "INBOX" in all caps, since it's special in RFC 3501. --- diff --git a/lib/PublicInbox/IMAP.pm b/lib/PublicInbox/IMAP.pm index 5865822f..8c6fa7b6 100644 --- a/lib/PublicInbox/IMAP.pm +++ b/lib/PublicInbox/IMAP.pm @@ -537,7 +537,7 @@ sub uid_fetch_m { # long_response sub cmd_status ($$$;@) { my ($self, $tag, $mailbox, @items) = @_; - my $ibx = $self->{imapd}->{mailboxes}->{$mailbox} or + my $ibx = $self->{imapd}->{mailboxes}->{lc $mailbox} or return "$tag NO Mailbox doesn't exist: $mailbox\r\n"; return "$tag BAD no items\r\n" if !scalar(@items); ($items[0] !~ s/\A\(//s || $items[-1] !~ s/\)\z//s) and @@ -571,7 +571,8 @@ sub cmd_list ($$$$) { # request for hierarchy delimiter $l = [ qq[* LIST (\\Noselect) "." ""\r\n] ]; } elsif ($refname ne '' || $wildcard ne '*') { - $wildcard =~ s!([^a-z0-9_])!$patmap{$1} // "\Q$1"!eig; + $wildcard = lc $wildcard; + $wildcard =~ s!([^a-z0-9_])!$patmap{$1} // "\Q$1"!eg; $l = [ grep(/ \Q$refname\E$wildcard\r\n\z/s, @$l) ]; } \(join('', @$l, "$tag OK List done\r\n"));