From 1189ecdca2b43769ebc92eb1dcbfc63418396e2c Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 10 Jun 2020 07:04:17 +0000 Subject: imap: do not include ".PEEK" in responses They're not specified in RFC 3501 for responses, and at least mutt fails to handle it. --- t/imap.t | 12 ++++++------ t/imapd.t | 14 ++++++++++---- 2 files changed, 16 insertions(+), 10 deletions(-) (limited to 't') diff --git a/t/imap.t b/t/imap.t index 9b64f164..fe6352b6 100644 --- a/t/imap.t +++ b/t/imap.t @@ -27,11 +27,11 @@ use PublicInbox::IMAPD; { my $partial_prepare = \&PublicInbox::IMAP::partial_prepare; my $x = {}; - my $r = $partial_prepare->($x, [], my $p = 'BODY.PEEK[9]'); + my $r = $partial_prepare->($x, [], my $p = 'BODY[9]'); ok($r, $p); - $r = $partial_prepare->($x, [], $p = 'BODY.PEEK[9]<5>'); + $r = $partial_prepare->($x, [], $p = 'BODY[9]<5>'); ok($r, $p); - $r = $partial_prepare->($x, [], $p = 'BODY.PEEK[9]<5.1>'); + $r = $partial_prepare->($x, [], $p = 'BODY[9]<5.1>'); ok($r, $p); $r = $partial_prepare->($x, [], $p = 'BODY[1.1]'); ok($r, $p); @@ -47,9 +47,9 @@ use PublicInbox::IMAPD; my $partial_hdr_get = \&PublicInbox::IMAP::partial_hdr_get; my $partial_hdr_not = \&PublicInbox::IMAP::partial_hdr_not; is_deeply($x, { - 'BODY.PEEK[9]' => [ $partial_body, 9, undef, undef, undef ], - 'BODY.PEEK[9]<5>' => [ $partial_body, 9, undef, 5, undef ], - 'BODY.PEEK[9]<5.1>' => [ $partial_body, 9, undef, 5, 1 ], + 'BODY[9]' => [ $partial_body, 9, undef, undef, undef ], + 'BODY[9]<5>' => [ $partial_body, 9, undef, 5, undef ], + 'BODY[9]<5.1>' => [ $partial_body, 9, undef, 5, 1 ], 'BODY[1.1]' => [ $partial_body, '1.1', undef, undef, undef ], 'BODY[HEADER.FIELDS (DATE FROM)]' => [ $partial_hdr_get, undef, 'DATE FROM', undef, undef ], diff --git a/t/imapd.t b/t/imapd.t index fc90948e..1ec0d5c3 100644 --- a/t/imapd.t +++ b/t/imapd.t @@ -317,11 +317,17 @@ is(scalar keys %$ret, 3, 'got all 3 messages'); my @cmd = qw(-learn rm --all); run_script(\@cmd, $env, $rdr) or BAIL_OUT('-learn rm'); } -my $r2 = $mic->fetch_hash('1:*', 'RFC822') or BAIL_OUT "FETCH $@"; +my $r2 = $mic->fetch_hash('1:*', 'BODY.PEEK[]') or BAIL_OUT "FETCH $@"; is(scalar keys %$r2, 3, 'still got all 3 messages'); -like($r2->{1}->{RFC822}, qr/dummy message #1/, 'got dummy message 1'); -is($r2->{2}->{RFC822}, $ret->{2}->{RFC822}, 'message 2 unchanged'); -is($r2->{3}->{RFC822}, $ret->{3}->{RFC822}, 'message 3 unchanged'); +like($r2->{1}->{'BODY[]'}, qr/dummy message #1/, 'got dummy message 1'); +is($r2->{2}->{'BODY[]'}, $ret->{2}->{RFC822}, 'message 2 unchanged'); +is($r2->{3}->{'BODY[]'}, $ret->{3}->{RFC822}, 'message 3 unchanged'); +$r2 = $mic->fetch_hash(2, 'BODY.PEEK[HEADER.FIELDS (message-id)]') + 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->logout, 'logged out'); $td->kill; -- cgit v1.2.3-24-ge0c7