X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=public-inbox-mda;h=1a9469badfecd1c179601d5d7f7cba48b718ccc6;hb=f76f265a851944b5dedcc3be5f3b5224b6ebda89;hp=047a4827914184a824b1c1ad8c52d69381f88c59;hpb=23a51954b6bc4d75fe8d157b60b07ffd24a2f4e1;p=public-inbox.git diff --git a/public-inbox-mda b/public-inbox-mda index 047a4827..1a9469ba 100755 --- a/public-inbox-mda +++ b/public-inbox-mda @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright (C) 2013, Eric Wong and all contributors +# Copyright (C) 2013-2015 all contributors # License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt) use strict; use warnings; @@ -38,7 +38,7 @@ if (PublicInbox::MDA->precheck($filter, $dst->{address}) && $filtered = undef; $filter->simple($msg); - if (PublicInbox::Filter->run($msg)) { + if (PublicInbox::Filter->run($msg, $filter)) { # run spamc again on the HTML-free message if (do_spamc($msg, \$filtered)) { $msg = Email::MIME->new(\$filtered); @@ -47,6 +47,11 @@ if (PublicInbox::MDA->precheck($filter, $dst->{address}) && my ($name, $email, $date) = PublicInbox::MDA->author_info($msg); + + END { + search_index_sync($main_repo) if ($? == 0); + }; + local $ENV{GIT_AUTHOR_NAME} = $name; local $ENV{GIT_AUTHOR_EMAIL} = $email; local $ENV{GIT_AUTHOR_DATE} = $date; @@ -59,7 +64,7 @@ if (PublicInbox::MDA->precheck($filter, $dst->{address}) && } else { # Ensure emergency spam gets spamassassin headers. # This makes it easier to prioritize obvious spam from less obvious - if (defined($filtered) && length($filtered)) { + if (defined($filtered) && $filtered ne '') { my $drop = Email::MIME->new(\$filtered); $filtered = undef; $filter->simple($drop); @@ -77,5 +82,13 @@ sub do_spamc { run([qw/spamc -E --headers/], \$orig, $out); }; - return ($@ || $? || !defined($$out) || length($$out) == 0) ? 0 : 1; + return ($@ || $? || !defined($$out) || $$out eq '') ? 0 : 1; +} + +sub search_index_sync { + my ($git_dir) = @_; + eval { + require PublicInbox::SearchIdx; + PublicInbox::SearchIdx->new($git_dir, 2)->index_sync; + }; }