You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by jg...@apache.org on 2005/10/15 01:12:50 UTC

svn commit: r321240 - in /spamassassin/trunk/lib/Mail: SpamAssassin.pm SpamAssassin/EvalTests.pm SpamAssassin/PerMsgStatus.pm

Author: jgmyers
Date: Fri Oct 14 16:12:47 2005
New Revision: 321240

URL: http://svn.apache.org/viewcvs?rev=321240&view=rev
Log:
bug 4206: Don't load Bayes if it's disabled

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/EvalTests.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin.pm
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin.pm?rev=321240&r1=321239&r2=321240&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin.pm Fri Oct 14 16:12:47 2005
@@ -70,7 +70,6 @@
 use Mail::SpamAssassin::Conf::LDAP;
 use Mail::SpamAssassin::PerMsgStatus;
 use Mail::SpamAssassin::Message;
-use Mail::SpamAssassin::Bayes;
 use Mail::SpamAssassin::PluginHandler;
 use Mail::SpamAssassin::DnsResolver;
 
@@ -548,7 +547,7 @@
 sub rebuild_learner_caches {
   my $self = shift;
   my $opts = shift;
-  $self->{bayes_scanner}->sync(1,1,$opts);
+  $self->{bayes_scanner}->sync(1,1,$opts) if $self->{bayes_scanner};
   1;
 }
 
@@ -560,7 +559,7 @@
 
 sub finish_learner {
   my $self = shift;
-  $self->{bayes_scanner}->finish();
+  $self->{bayes_scanner}->finish() if $self->{bayes_scanner};
   1;
 }
 
@@ -572,7 +571,7 @@
 
 sub dump_bayes_db {
   my($self,@opts) = @_;
-  $self->{bayes_scanner}->dump_bayes_db(@opts);
+  $self->{bayes_scanner}->dump_bayes_db(@opts) if $self->{bayes_scanner};
 }
 
 =item $f->signal_user_changed ( [ { opt => val, ... } ] )
@@ -626,14 +625,19 @@
   }
 
   # reopen bayes dbs for this user
-  $self->{bayes_scanner}->finish();
-  $self->{bayes_scanner} = new Mail::SpamAssassin::Bayes ($self);
+  $self->{bayes_scanner}->finish() if $self->{bayes_scanner};
+  if ($self->{conf}->{use_bayes}) {
+      require Mail::SpamAssassin::Bayes;
+      $self->{bayes_scanner} = new Mail::SpamAssassin::Bayes ($self);
+  } else {
+      delete $self->{bayes_scanner} if $self->{bayes_scanner};
+  }
 
   # this user may have a different learn_to_journal setting, so reset appropriately
   $self->{'learn_to_journal'} = $self->{conf}->{bayes_learn_to_journal};
 
   $set |= 1 unless $self->{local_tests_only};
-  $set |= 2 if $self->{bayes_scanner}->is_scan_available();
+  $set |= 2 if $self->{bayes_scanner} && $self->{bayes_scanner}->is_scan_available();
 
   $self->{conf}->set_score_set ($set);
 
@@ -1186,7 +1190,7 @@
   }
 
   # make sure things are ready for scanning
-  $self->{bayes_scanner}->sanity_check_is_untied();
+  $self->{bayes_scanner}->sanity_check_is_untied() if $self->{bayes_scanner};
   $self->call_plugins("compile_now_finish",
 		      { use_user_prefs => $use_user_prefs,
 			keep_userstate => $deal_with_userstate});
@@ -1377,13 +1381,16 @@
   delete $self->{config_text};
 
   # Initialize the Bayes subsystem
-  $self->{bayes_scanner} = new Mail::SpamAssassin::Bayes ($self);
+  if ($self->{conf}->{use_bayes}) {
+      require Mail::SpamAssassin::Bayes;
+      $self->{bayes_scanner} = new Mail::SpamAssassin::Bayes ($self);
+  }
   $self->{'learn_to_journal'} = $self->{conf}->{bayes_learn_to_journal};
 
   # Figure out/set our initial scoreset
   my $set = 0;
   $set |= 1 unless $self->{local_tests_only};
-  $set |= 2 if $self->{bayes_scanner}->is_scan_available();
+  $set |= 2 if $self->{bayes_scanner} && $self->{bayes_scanner}->is_scan_available();
   $self->{conf}->set_score_set ($set);
 
   if ($self->{only_these_rules}) {

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/EvalTests.pm
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/EvalTests.pm?rev=321240&r1=321239&r2=321240&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/EvalTests.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/EvalTests.pm Fri Oct 14 16:12:47 2005
@@ -2500,7 +2500,7 @@
 sub check_bayes {
   my ($self, $fulltext, $min, $max) = @_;
 
-  return 0 if (!$self->{conf}->{use_bayes_rules});
+  return 0 if (!$self->{conf}->{use_bayes} || !$self->{conf}->{use_bayes_rules});
 
   if (!exists ($self->{bayes_score})) {
     $self->{bayes_score} = $self->{main}->{bayes_scanner}->scan ($self, $self->{msg});

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm?rev=321240&r1=321239&r2=321240&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm Fri Oct 14 16:12:47 2005
@@ -139,7 +139,7 @@
   # to see if we should go from {0,1} to {2,3}.  We of course don't need
   # to do this switch if we're already using bayes ... ;)
   my $set = $self->{conf}->get_score_set();
-  if (($set & 2) == 0 && $self->{main}->{bayes_scanner}->is_scan_available()) {
+  if (($set & 2) == 0 && $self->{main}->{bayes_scanner} && $self->{main}->{bayes_scanner}->is_scan_available()) {
     dbg("check: scoreset $set but bayes is available, switching scoresets");
     $self->{conf}->set_score_set ($set|2);
   }
@@ -1040,6 +1040,7 @@
   return "" unless $amt;
 
   my $Bayes = $self->{main}{bayes_scanner};
+  return "Bayes not available" unless defined $Bayes;
   my $ns = $self->{bayes_nspam};
   my $nh = $self->{bayes_nham};
   my $digit = sub { $_[0] > 9 ? "+" : $_[0] };