lib/PublicInbox/IMAP.pm | 11 +++++++++-- diff --git a/lib/PublicInbox/IMAP.pm b/lib/PublicInbox/IMAP.pm index 3cc68e668720814a9135ace5901ce43af2cf02c3..fe3c7d1a85bba20174642fb9399dce902bcdf0f8 100644 --- a/lib/PublicInbox/IMAP.pm +++ b/lib/PublicInbox/IMAP.pm @@ -792,6 +792,7 @@ $eml = eml_body_idx($eml, $section_idx) or return; } my $str = $eml->header_obj->as_string; $str =~ s/$hdrs_re//g; + $str =~ s/(?header_obj->as_string; - join('', ($str =~ m/($hdrs_re)/g), "\r\n"); + $str = join('', ($str =~ m/($hdrs_re)/g)); + $str =~ s/(?{$att} = [ $2 ? \&partial_hdr_not : \&partial_hdr_get, $1, undef, $4, $5 ]; $tmp->[2] = hdrs_regexp($3); - $$need |= CRLF_HDR|EML_HDR; + + # don't emit CRLF_HDR instruction, here, partial_hdr_* + # will do CRLF conversion with only the extracted result + # and not waste time converting lines we don't care about. + $$need |= EML_HDR; } else { undef; }