You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by jm...@apache.org on 2006/11/14 19:26:24 UTC
svn commit: r474909 -
/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Check.pm
Author: jm
Date: Tue Nov 14 10:26:23 2006
New Revision: 474909
URL: http://svn.apache.org/viewvc?view=rev&rev=474909
Log:
optimise out tflags-multiple support code in header rules when it's not necessary
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Check.pm
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Check.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Check.pm?view=diff&rev=474909&r1=474908&r2=474909
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Check.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Check.pm Tue Nov 14 10:26:23 2006
@@ -388,6 +388,8 @@
return;
}
+ my $conf = $pms->{conf};
+ my $tflags = $conf->{tflags};
my $use_rule_subs = $self->{main}->{use_rule_subs};
my $evalstr = $self->start_rules_plugin_code("header");
@@ -397,7 +399,7 @@
my %ordered = ();
my %testcode = ();
- while (my($rulename, $rule) = each %{$pms->{conf}{head_tests}->{$priority}}) {
+ while (my($rulename, $rule) = each %{$conf->{head_tests}->{$priority}}) {
my $def = '';
my ($hdrname, $testtype, $pat) =
$rule =~ /^\s*(\S+)\s*(\=|\!)\~\s*(\S.*?\S)\s*$/;
@@ -454,13 +456,23 @@
else {
my $testcode = $testcode{$rulename};
+ my $posline = '';
+ my $ifwhile = 'if';
+ my $hitdone = '';
+ if (($tflags->{$rulename}||'') =~ /\bmultiple\b/)
+ {
+ $posline = 'pos $hval = 0;';
+ $ifwhile = 'while';
+ $hitdone = 'last';
+ }
+
$evalstr .= '
if ($scoresptr->{q#'.$rulename.'#}) {
- pos $hval = 0;
+ '.$posline.'
'.$self->hash_line_for_rule($pms, $rulename).'
- while ($hval '.$testcode.') {
+ '.$ifwhile.' ($hval '.$testcode.') {
$self->got_hit(q#'.$rulename.'#, "", ruletype => "header");
- '.$self->hit_rule_plugin_code($pms, $rulename, "header", "last").'
+ '.$self->hit_rule_plugin_code($pms, $rulename, "header", $hitdone).'
}
'.$self->ran_rule_plugin_code($pms, $rulename, "header").'
}
@@ -550,7 +562,7 @@
while (my($rulename, $pat) = each %{$pms->{conf}{body_tests}->{$priority}}) {
my $sub;
if (($pms->{conf}->{tflags}->{$rulename}||'') =~ /\bmultiple\b/)
- {
+ {
# support multiple matches
$loopid++;
$sub = '
@@ -813,7 +825,7 @@
while (my($rulename, $pat) = each %{$pms->{conf}{rawbody_tests}->{$priority}}) {
my $sub;
if (($pms->{conf}->{tflags}->{$rulename}||'') =~ /\bmultiple\b/)
- {
+ {
# support multiple matches
$loopid++;
$sub = '