X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FImport.pm;h=27f36a7e486b84337e1e4e4586ab9ec5251e4c65;hb=2c69f7bc34a2b12dc7f55e2bb24fa28565f24f03;hp=e3d65f4aa73b8eb28fa3e9024361c057e2284b9c;hpb=23a4e44bedabe5b8b651346cabc2a870c5377a30;p=public-inbox.git diff --git a/lib/PublicInbox/Import.pm b/lib/PublicInbox/Import.pm index e3d65f4a..27f36a7e 100644 --- a/lib/PublicInbox/Import.pm +++ b/lib/PublicInbox/Import.pm @@ -112,8 +112,11 @@ sub remove { defined($n) or die "read final byte of cat-blob failed: $!"; die "bad read on final byte: <$lf>" if $lf ne "\n"; my $cur = Email::MIME->new($buf); - if ($cur->header('Subject') ne $mime->header('Subject') || - norm_body($cur) ne norm_body($mime)) { + my $cur_s = $cur->header('Subject'); + $cur_s = '' unless defined $cur_s; + my $cur_m = $mime->header('Subject'); + $cur_m = '' unless defined $cur_m; + if ($cur_s ne $cur_m || norm_body($cur) ne norm_body($mime)) { return ('MISMATCH', $cur); } @@ -137,7 +140,7 @@ sub remove { # returns undef on duplicate sub add { - my ($self, $mime) = @_; # mime = Email::MIME + my ($self, $mime, $check_cb) = @_; # mime = Email::MIME my $from = $mime->header('From'); my ($email) = ($from =~ /([^<\s]+\@[^>\s]+)/g); @@ -167,6 +170,10 @@ sub add { # kill potentially confusing/misleading headers $mime->header_set($_) for qw(bytes lines content-length status); + if ($check_cb) { + $mime = $check_cb->($mime) or return; + } + $mime = $mime->as_string; my $blob = $self->{mark}++; print $w "blob\nmark :$blob\ndata ", length($mime), "\n" or wfail; @@ -226,6 +233,11 @@ sub done { waitpid($pid, 0) == $pid or die 'update-server-info did not finish'; $? == 0 or die "failed to update-server-info: $?\n"; + + eval { + require PublicInbox::SearchIdx; + PublicInbox::SearchIdx->new($git_dir, 2)->index_sync; + }; } my $lockfh = delete $self->{lockfh} or die "BUG: not locked: $!";