]> Sergey Matveev's repositories - public-inbox.git/commitdiff
search: use raw headers without MIME decoding
authorEric Wong <e@80x24.org>
Mon, 17 Aug 2015 02:41:14 +0000 (02:41 +0000)
committerEric Wong <e@80x24.org>
Mon, 17 Aug 2015 03:13:47 +0000 (03:13 +0000)
This should be less error-prone in case somebody tries to screw with
us and our thread_id mechanism or somehow waste our resources.
Unfortunately Mail::Thread isn't smart enough for this, yet, so we
may need to downgrade to Email::Simple objects as a workaround.

Or simply not worry about the display so much if somebody is
intentionally trying to make it thread badly/incorrectly.

lib/PublicInbox/Search.pm

index 6fd46f442d66d1f8a000f969f6b3077541bfb7ee..051f7a54f253a9be907d178c5d045f5ef50711d6 100644 (file)
@@ -74,7 +74,7 @@ sub add_message {
        my $db = $self->{xdb};
 
        my $doc_id;
-       my $mid = mid_clean($mime->header('Message-ID'));
+       my $mid = mid_clean($mime->header_obj->header_raw('Message-ID'));
        $mid = mid_compressed($mid);
        my $was_ghost = 0;
        my $ct_msg = $mime->header('Content-Type') || 'text/plain';
@@ -341,9 +341,9 @@ sub link_message_to_parents {
        my $doc = $smsg->{doc};
        my $mid = mid_compressed($smsg->mid);
        my $mime = $smsg->mime;
-       my $refs = $mime->header('References');
+       my $refs = $mime->header_obj->header_raw('References');
        my @refs = $refs ? ($refs =~ /<([^>]+)>/g) : ();
-       my $irt = $mime->header('In-Reply-To');
+       my $irt = $mime->header_obj->header_raw('In-Reply-To');
        if ($irt) {
                if ($irt =~ /<([^>]+)>/) {
                        $irt = $1;
@@ -498,7 +498,7 @@ sub index_blob {
 sub unindex_blob {
        my ($self, $git, $blob) = @_;
        my $mime = do_cat_mail($git, $blob) or return;
-       my $mid = $mime->header('Message-ID');
+       my $mid = $mime->header_obj->header_raw('Message-ID');
        eval { $self->remove_message($mid) } if defined $mid;
        warn "W: unindex_blob $blob: $@\n" if $@;
 }