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

svn commit: r332683 - /spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm

Author: dos
Date: Fri Nov 11 16:28:49 2005
New Revision: 332683

URL: http://svn.apache.org/viewcvs?rev=332683&view=rev
Log:
bug 4631: catch eval'd die's leaked by broken perl  __DIE__ hooks

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm?rev=332683&r1=332682&r2=332683&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm Fri Nov 11 16:28:49 2005
@@ -140,8 +140,17 @@
   # return unless $message[0] =~ /^\S+:/;
   # }
 
-  # dos: don't log alarm timeouts or broken pipes of various plugins' network checks
-  return if ($level eq "error" && $message[0] =~ /__(?:alarm|brokenpipe)__ignore__/);
+  if ($level eq "error") {
+    # don't log alarm timeouts or broken pipes of various plugins' network checks
+    return if ($message[0] =~ /__(?:alarm|brokenpipe)__ignore__/);
+
+    # dos: we can safely ignore any die's that we eval'd in our own modules so
+    # don't log them -- this is caller 0, the use'ing package is 1, the eval is 2
+    my @caller = caller 2;
+    return if (defined $caller[3] && defined $caller[0] &&
+		       $caller[3] =~ /^\(eval\)$/ &&
+		       $caller[0] =~ m#^Mail::SpamAssassin(?:$|::)#);
+  }
 
   my $message = join(" ", @message);
   $message =~ s/[\r\n]+$//;		# remove any trailing newlines