diff options
author | Eric Wong <e@80x24.org> | 2016-04-30 02:02:53 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2016-04-30 02:02:53 +0000 |
commit | 777eadff478fde1aca20148e0c5dd85567a8aa15 (patch) | |
tree | 0d0b0fdba28f962f8313def96e77b59c9adf48c2 | |
parent | 1acd8fdc49c270335257251ea3f1fd3798f09b8f (diff) | |
download | public-inbox-777eadff478fde1aca20148e0c5dd85567a8aa15.tar.gz |
Noticed when using a long URL in the subject.
-rw-r--r-- | lib/PublicInbox/SearchMsg.pm | 7 | ||||
-rw-r--r-- | t/search.t | 25 |
2 files changed, 26 insertions, 6 deletions
diff --git a/lib/PublicInbox/SearchMsg.pm b/lib/PublicInbox/SearchMsg.pm index a0899159..1244aeea 100644 --- a/lib/PublicInbox/SearchMsg.pm +++ b/lib/PublicInbox/SearchMsg.pm @@ -148,12 +148,9 @@ sub ensure_metadata { sub mini_mime { my ($self) = @_; $self->ensure_metadata; - my @hs = ( + my @h = ( 'Subject' => $self->subject, 'X-PI-From' => $self->from_name, - ); - - my @h = ( # prevent Email::Simple::Creator from running, # this header is useless for threading as we use X-PI-TS # for sorting and display: @@ -164,7 +161,7 @@ sub mini_mime { if (my $refs = $self->{references}) { push @h, References => $refs; } - my $mime = Email::MIME->create(header_str => \@hs, header => \@h); + my $mime = Email::MIME->create(header => \@h); my $h = $mime->header_obj; # set these headers manually since Encode::encode('MIME-Q', ...) @@ -274,10 +274,11 @@ sub filter_mids { # circular references { + my $s = 'foo://'. ('Circle' x 15).'/foo'; my $doc_id = $rw->add_message(Email::MIME->create( + header => [ Subject => $s ], header_str => [ Date => 'Sat, 02 Oct 2010 00:00:01 +0000', - Subject => 'Circle', 'Message-ID' => '<circle@a>', 'References' => '<circle@a>', 'In-Reply-To' => '<circle@a>', @@ -289,6 +290,28 @@ sub filter_mids { my $smsg = $rw->lookup_message('circle@a'); $smsg->ensure_metadata; is($smsg->references, '', "no references created"); + my $msg = PublicInbox::SearchMsg->load_doc($smsg->{doc}); + is($s, $msg->mini_mime->header('Subject'), 'long subject not rewritten'); +} + +{ + my $str = eval { + my $mbox = 't/utf8.mbox'; + open(my $fh, '<', $mbox) or die "failed to open mbox: $mbox\n"; + local $/; + <$fh> + }; + $str =~ s/\AFrom [^\n]+\n//s; + my $mime = Email::MIME->new($str); + my $doc_id = $rw->add_message($mime); + ok($doc_id > 0, 'message indexed doc_id with UTF-8'); + my $smsg = $rw->lookup_message('testmessage@example.com'); + my $msg = PublicInbox::SearchMsg->load_doc($smsg->{doc}); + + # mini_mime technically not valid (I think), + # but good enough for displaying HTML: + is($mime->header('Subject'), $msg->mini_mime->header('Subject'), + 'UTF-8 subject preserved'); } done_testing(); |