You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@spamassassin.apache.org by Justin Mason <jm...@jmason.org> on 2008/12/10 12:00:52 UTC
Re: svn commit: r724958 - in /spamassassin/trunk/lib/Mail/SpamAssassin: Logger.pm Logger/Stderr.pm
Mark, have you got a bug # for this change? it's core code, and it'd
be nice to get an idea of how the issue arose.
--j.
mmartinec@apache.org writes:
> 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: $!";
> }
Re: svn commit: r724958 - in /spamassassin/trunk/lib/Mail/SpamAssassin: Logger.pm Logger/Stderr.pm
Posted by Mark Martinec <Ma...@ijs.si>.
Justin,
> Mark, have you got a bug # for this change? it's core code, and it'd
> be nice to get an idea of how the issue arose.
Ok, opened Bug 6028 to explain the situation.
Mark