about summary refs log tree commit homepage
path: root/lib/PublicInbox/Filter
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2018-04-19 22:42:05 +0000
committerEric Wong <e@80x24.org>2018-04-19 22:43:03 +0000
commitddb61e55bc645975063673f346fceb96be7b2d70 (patch)
tree67e0a446c890d113e8a28d593a0777c4256ed418 /lib/PublicInbox/Filter
parent03c7d76f08b78d43452463d95dcf3a38fb9c8bfe (diff)
downloadpublic-inbox-ddb61e55bc645975063673f346fceb96be7b2d70.tar.gz
I suppose it's a bug or inconsistency that altid is write-only
and their deletions do not get reflected.  But for now, we
do not set it when training spam so there's no window where
an invalid NNTP article number shows up.

This should solve the problem where there's massive gaps
in messages solved by spam training for ruby groups:

	https://public-inbox.org/meta/20180307093754.GA27748@dcvr/
Diffstat (limited to 'lib/PublicInbox/Filter')
-rw-r--r--lib/PublicInbox/Filter/Base.pm5
-rw-r--r--lib/PublicInbox/Filter/RubyLang.pm4
2 files changed, 5 insertions, 4 deletions
diff --git a/lib/PublicInbox/Filter/Base.pm b/lib/PublicInbox/Filter/Base.pm
index 5d070132..638b627a 100644
--- a/lib/PublicInbox/Filter/Base.pm
+++ b/lib/PublicInbox/Filter/Base.pm
@@ -66,9 +66,10 @@ sub reject ($$) {
 sub err ($) { $_[0]->{err} }
 
 # by default, scrub is a no-op, see PublicInbox::Filter::Vger::scrub
-# for an example of the override
+# for an example of the override.  The $for_remove arg is set to
+# disable altid setting for spam removal.
 sub scrub {
-        my ($self, $mime) = @_;
+        my ($self, $mime, $for_remove) = @_;
         $self->ACCEPT($mime);
 }
 
diff --git a/lib/PublicInbox/Filter/RubyLang.pm b/lib/PublicInbox/Filter/RubyLang.pm
index cb69e38a..a43d67a9 100644
--- a/lib/PublicInbox/Filter/RubyLang.pm
+++ b/lib/PublicInbox/Filter/RubyLang.pm
@@ -30,7 +30,7 @@ sub new {
 }
 
 sub scrub {
-        my ($self, $mime) = @_;
+        my ($self, $mime, $for_remove) = @_;
         # no msg_iter here, that is only for read-only access
         $mime->walk_parts(sub {
                 my ($part) = $_[0];
@@ -43,7 +43,7 @@ sub scrub {
                 }
         });
         my $altid = $self->{-altid};
-        if ($altid) {
+        if ($altid && !$for_remove) {
                 my $hdr = $mime->header_obj;
                 my $mids = mids($hdr);
                 return $self->REJECT('Message-ID missing') unless (@$mids);