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.

[EMAIL PROTECTED] 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: $!";
>  }

Reply via email to