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 2008/12/10 03:00:42 UTC
svn commit: r724958 - in /spamassassin/trunk/lib/Mail/SpamAssassin:
Logger.pm Logger/Stderr.pm
Author: mmartinec
Date: Tue Dec 9 18:00:42 2008
New Revision: 724958
URL: http://svn.apache.org/viewvc?rev=724958&view=rev
Log:
protect logger from being recursively re-entered on warn or die from within logging
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Stderr.pm
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm?rev=724958&r1=724957&r2=724958&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm Tue Dec 9 18:00:42 2008
@@ -62,6 +62,7 @@
# global shared object
our %LOG_SA;
+our $LOG_ENTERED; # to avoid recursion on die or warn from within logging
# defaults
$LOG_SA{level} = WARNING; # log info, warnings and errors
@@ -165,6 +166,9 @@
$caller[0] =~ m#^Mail::SpamAssassin(?:$|::)#);
}
+ return if $LOG_ENTERED; # avoid recursion on die or warn from within logging
+ $LOG_ENTERED = 1; # no 'returns' from this point on, must clear the flag
+
my $message = join(" ", @message);
$message =~ s/[\r\n]+$//; # remove any trailing newlines
@@ -178,6 +182,7 @@
$object->log_message($level, $line);
}
}
+ $LOG_ENTERED = 0;
}
=item dbg("facility: message")
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Stderr.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Stderr.pm?rev=724958&r1=724957&r2=724958&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Stderr.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Stderr.pm Tue Dec 9 18:00:42 2008
@@ -50,6 +50,7 @@
sub log_message {
my ($self, $level, $msg) = @_;
+ local $SIG{PIPE} = 'IGNORE'; # don't signal on a failed write to a pipe
print STDERR "[$$] $level: $msg\n"
or warn "Error writing to log file: $!";
}