You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by mm...@apache.org on 2012/09/06 15:17:25 UTC
svn commit: r1381591 - in /spamassassin/trunk:
lib/Mail/SpamAssassin/Message.pm lib/Mail/SpamAssassin/Plugin/BodyEval.pm
rulesrc/sandbox/kmcgrail/20_body_tests.cf
Author: mmartinec
Date: Thu Sep 6 13:17:24 2012
New Revision: 1381591
URL: http://svn.apache.org/viewvc?rev=1381591&view=rev
Log:
Bug 6830: check_body_length - provide a has_check_body_length feature test capability, deal with truncated messages
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/BodyEval.pm
spamassassin/trunk/rulesrc/sandbox/kmcgrail/20_body_tests.cf
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm?rev=1381591&r1=1381590&r2=1381591&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm Thu Sep 6 13:17:24 2012
@@ -292,9 +292,19 @@ sub new {
# Store the pristine body for later -- store as a copy since @message
# will get modified below
$self->{'pristine_body'} = join('', @message);
- # This is currently used by an eval test check_body_length.
- # Possible To-Do: Base the length on the @message array later down? Or a different copy of the message post decoding?
- $self->{'pristine_body_length'} = length($self->{'pristine_body'});
+
+ # pristine_body_length is currently used by an eval test check_body_length.
+ # Possible To-Do: Base the length on the @message array later down?
+ # Or a different copy of the message post decoding?
+ if ($self->{suppl_attrib} && defined $self->{suppl_attrib}{body_size}) {
+ # optional info provided by a caller; should reflect the original
+ # message body size if provided, and as such it may differ from the
+ # $self->{pristine_body} size, e.g. when the caller passed a truncated
+ # message to SpamAssassin, or when counting line-endings differently
+ $self->{'pristine_body_length'} = $self->{suppl_attrib}{body_size};
+ } else {
+ $self->{'pristine_body_length'} = length($self->{'pristine_body'});
+ }
# CRLF -> LF
# also merge multiple blank lines into a single one
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/BodyEval.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/BodyEval.pm?rev=1381591&r1=1381590&r2=1381591&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/BodyEval.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/BodyEval.pm Thu Sep 6 13:17:24 2012
@@ -286,15 +286,16 @@ sub _check_stock_info {
sub check_body_length {
my ($self, $pms, undef, $min) = @_;
- #print "DEBUG: KAM $min - $pms->{msg}->{pristine_body_length}\n";
+ my $body_length = $pms->{msg}->{pristine_body_length};
+ dbg("eval: body_length - %s - check for min of %s", $body_length, $min);
- dbg("eval: body_length - $pms->{msg}->{pristine_body_length} - check for min of $min");
-
- if (defined($pms->{msg}->{pristine_body_length}) and $pms->{msg}->{pristine_body_length} <= $min) {
- return 1;
- } else {
- return 0;
- }
+ return (defined $body_length && $body_length <= $min) ? 1 : 0;
}
+# ---------------------------------------------------------------------------
+
+# capability checks for "if can()":
+#
+sub has_check_body_length { 1 }
+
1;
Modified: spamassassin/trunk/rulesrc/sandbox/kmcgrail/20_body_tests.cf
URL: http://svn.apache.org/viewvc/spamassassin/trunk/rulesrc/sandbox/kmcgrail/20_body_tests.cf?rev=1381591&r1=1381590&r2=1381591&view=diff
==============================================================================
--- spamassassin/trunk/rulesrc/sandbox/kmcgrail/20_body_tests.cf (original)
+++ spamassassin/trunk/rulesrc/sandbox/kmcgrail/20_body_tests.cf Thu Sep 6 13:17:24 2012
@@ -24,8 +24,7 @@
###########################################################################
ifplugin Mail::SpamAssassin::Plugin::BodyEval
- if (version >= 3.004000)
-
+ if can(Mail::SpamAssassin::Plugin::BodyEval::has_check_body_length)
body __KAM_BODY_LENGTH_LT_128 eval:check_body_length('128')
describe __KAM_BODY_LENGTH_LT_128 The length of the body of the email is less than 128 bytes.