From ddb61e55bc645975063673f346fceb96be7b2d70 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 19 Apr 2018 22:42:05 +0000 Subject: filter/rubylang: do not set altid on spam training 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/ --- lib/PublicInbox/Filter/Base.pm | 5 +++-- lib/PublicInbox/Filter/RubyLang.pm | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'lib/PublicInbox/Filter') 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); -- cgit v1.2.3-24-ge0c7