about summary refs log tree commit homepage
path: root/lib/PublicInbox/WatchMaildir.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-01-05 10:41:15 +0000
committerEric Wong <e@80x24.org>2019-01-05 10:41:15 +0000
commit97c6b564fd79e47ae6fca8de273c2aeaf2f5bea5 (patch)
treeb6f2433ceafc18e00ff6dab20eca02352deb833e /lib/PublicInbox/WatchMaildir.pm
parent847c0309da7af8a16935f92bb1965f6a1ba538e7 (diff)
downloadpublic-inbox-97c6b564fd79e47ae6fca8de273c2aeaf2f5bea5.tar.gz
Clearly the AltId stuff was never tested for v2.  Ensure
this tricky filter (which reuses Msgmap to avoid introducing
new serial numbers) doesn't trigger deadlocks SQLite due
to opening a DB for writing multiple times.

I went through several iterations of this change before
going with this one, which is the least intrusive I could
fine.
Diffstat (limited to 'lib/PublicInbox/WatchMaildir.pm')
-rw-r--r--lib/PublicInbox/WatchMaildir.pm5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/PublicInbox/WatchMaildir.pm b/lib/PublicInbox/WatchMaildir.pm
index 84080ba9..2d4c6f43 100644
--- a/lib/PublicInbox/WatchMaildir.pm
+++ b/lib/PublicInbox/WatchMaildir.pm
@@ -121,7 +121,7 @@ sub _remove_spam {
                 eval {
                         my $im = _importer_for($self, $ibx);
                         $im->remove($mime, 'spam');
-                        if (my $scrub = $ibx->filter) {
+                        if (my $scrub = $ibx->filter($im)) {
                                 my $scrubbed = $scrub->scrub($mime, 1);
                                 $scrubbed or return;
                                 $scrubbed == REJECT() and return;
@@ -159,7 +159,8 @@ sub _try_path {
                         my $v = $mime->header_obj->header_raw($wm->[0]);
                         next unless ($v && $v =~ $wm->[1]);
                 }
-                if (my $scrub = $ibx->filter) {
+
+                if (my $scrub = $ibx->filter($im)) {
                         my $ret = $scrub->scrub($mime) or next;
                         $ret == REJECT() and next;
                         $mime = $ret;