Author: felicity
Date: Sun Feb 15 15:25:09 2004
New Revision: 6669
Modified:
incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm
Log:
bug 3024: trying to forget() a message that hasn't been learned caused a fatal error to be reported incorrectly. also added in code to learn() to check the result of the forget() call (if it was called) and propagate up fatal errors appropriately.
Modified: incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm
==============================================================================
--- incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm (original)
+++ incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm Sun Feb 15 15:25:09 2004
@@ -700,10 +700,16 @@
my $orig = $self->{main}->{learn_caller_will_untie};
$self->{main}->{learn_caller_will_untie} = 1;
- $self->forget ($msg);
+ my $fatal = !defined $self->forget ($msg);
# reset the value post-forget() ...
$self->{main}->{learn_caller_will_untie} = $orig;
+
+ # forget() gave us a fatal error, so propagate that up
+ if ($fatal) {
+ dbg("forget() returned a fatal error, so learn() will too");
+ return;
+ }
}
}
@@ -795,11 +801,11 @@
$isspam = 0;
} else {
dbg ("forget: message $msgid seen entry is neither ham nor spam, ignored");
- return;
+ return 0;
}
} else {
dbg ("forget: message $msgid not learnt, ignored");
- return;
+ return 0;
}
if ($isspam) {
Date: Sun Feb 15 15:25:09 2004
New Revision: 6669
Modified:
incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm
Log:
bug 3024: trying to forget() a message that hasn't been learned caused a fatal error to be reported incorrectly. also added in code to learn() to check the result of the forget() call (if it was called) and propagate up fatal errors appropriately.
Modified: incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm
==============================================================================
--- incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm (original)
+++ incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm Sun Feb 15 15:25:09 2004
@@ -700,10 +700,16 @@
my $orig = $self->{main}->{learn_caller_will_untie};
$self->{main}->{learn_caller_will_untie} = 1;
- $self->forget ($msg);
+ my $fatal = !defined $self->forget ($msg);
# reset the value post-forget() ...
$self->{main}->{learn_caller_will_untie} = $orig;
+
+ # forget() gave us a fatal error, so propagate that up
+ if ($fatal) {
+ dbg("forget() returned a fatal error, so learn() will too");
+ return;
+ }
}
}
@@ -795,11 +801,11 @@
$isspam = 0;
} else {
dbg ("forget: message $msgid seen entry is neither ham nor spam, ignored");
- return;
+ return 0;
}
} else {
dbg ("forget: message $msgid not learnt, ignored");
- return;
+ return 0;
}
if ($isspam) {