X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FSearchIdx.pm;h=63be68101b40c8ae7f4f8d8e39ee94492594a589;hb=3cda6050b7c8f73e7fd86f88efc5cd42d0c13f73;hp=67272997b22149faf3db8b9018a86ac8569f83ae;hpb=4c2c2325d2948ec5340e2fcafbee798cf568f5fd;p=public-inbox.git diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm index 67272997..63be6810 100644 --- a/lib/PublicInbox/SearchIdx.pm +++ b/lib/PublicInbox/SearchIdx.pm @@ -10,7 +10,7 @@ package PublicInbox::SearchIdx; use strict; use warnings; use base qw(PublicInbox::Search); -use PublicInbox::MID qw/mid_clean id_compress/; +use PublicInbox::MID qw/mid_clean id_compress mid_mime/; require PublicInbox::Git; *xpfx = *PublicInbox::Search::xpfx; @@ -54,7 +54,7 @@ sub add_message { my $db = $self->{xdb}; my $doc_id; - my $mid = mid_clean($mime->header('Message-ID')); + my $mid = mid_clean(mid_mime($mime)); my $was_ghost = 0; my $ct_msg = $mime->header('Content-Type') || 'text/plain'; @@ -222,9 +222,10 @@ sub link_message_to_parents { my $doc = $smsg->{doc}; my $mid = $smsg->mid; my $mime = $smsg->mime; - my $refs = $mime->header('References'); + my $hdr = $mime->header_obj; + my $refs = $hdr->header_raw('References'); my @refs = $refs ? ($refs =~ /<([^>]+)>/g) : (); - if (my $irt = $mime->header('In-Reply-To')) { + if (my $irt = $hdr->header_raw('In-Reply-To')) { # last References should be $irt # we will de-dupe later push @refs, mid_clean($irt); @@ -274,29 +275,29 @@ sub index_blob { sub unindex_blob { my ($self, $git, $mime) = @_; - my $mid = mid_clean($mime->header('Message-ID')); + my $mid = eval { mid_clean(mid_mime($mime)) }; $self->remove_message($mid) if defined $mid; } sub index_mm { my ($self, $git, $mime) = @_; - $self->{mm}->mid_insert(mid_clean($mime->header('Message-ID'))); + $self->{mm}->mid_insert(mid_clean(mid_mime($mime))); } sub unindex_mm { my ($self, $git, $mime) = @_; - $self->{mm}->mid_delete(mid_clean($mime->header('Message-ID'))); + $self->{mm}->mid_delete(mid_clean(mid_mime($mime))); } sub index_mm2 { my ($self, $git, $mime, $bytes) = @_; - my $num = $self->{mm}->num_for(mid_clean($mime->header('Message-ID'))); + my $num = $self->{mm}->num_for(mid_clean(mid_mime($mime))); index_blob($self, $git, $mime, $bytes, $num); } sub unindex_mm2 { my ($self, $git, $mime) = @_; - $self->{mm}->mid_delete(mid_clean($mime->header('Message-ID'))); + $self->{mm}->mid_delete(mid_clean(mid_mime($mime))); unindex_blob($self, $git, $mime); } @@ -337,7 +338,7 @@ sub rlog { --raw -r --no-abbrev/, $range); my $latest; my $bytes; - while (my $line = <$log>) { + while (defined(my $line = <$log>)) { if ($line =~ /$addmsg/o) { my $mime = do_cat_mail($git, $1, \$bytes) or next; $add_cb->($self, $git, $mime, $bytes); @@ -348,7 +349,6 @@ sub rlog { $latest = $1; } } - close $log; $latest; } @@ -446,7 +446,6 @@ sub _read_git_config_perm { my @cmd = qw(config core.sharedRepository); my $fh = PublicInbox::Git->new($self->{git_dir})->popen(@cmd); my $perm = <$fh>; - close $fh; chomp $perm if defined $perm; $perm; }