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/12/09 03:24:56 UTC

svn commit: r355320 - in /spamassassin/branches/3.1/lib/Mail/SpamAssassin: Logger.pm Plugin/DCC.pm Plugin/DomainKeys.pm Plugin/Pyzor.pm Plugin/Razor2.pm Plugin/SPF.pm

Author: dos
Date: Thu Dec  8 18:24:52 2005
New Revision: 355320

URL: http://svn.apache.org/viewcvs?rev=355320&view=rev
Log:
bug: 4631 fix __DIE__ hooks affecting exception handling by evals

Modified:
    spamassassin/branches/3.1/lib/Mail/SpamAssassin/Logger.pm
    spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/DCC.pm
    spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/DomainKeys.pm
    spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/Pyzor.pm
    spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/Razor2.pm
    spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/SPF.pm

Modified: spamassassin/branches/3.1/lib/Mail/SpamAssassin/Logger.pm
URL: http://svn.apache.org/viewcvs/spamassassin/branches/3.1/lib/Mail/SpamAssassin/Logger.pm?rev=355320&r1=355319&r2=355320&view=diff
==============================================================================
--- spamassassin/branches/3.1/lib/Mail/SpamAssassin/Logger.pm (original)
+++ spamassassin/branches/3.1/lib/Mail/SpamAssassin/Logger.pm Thu Dec  8 18:24:52 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

Modified: spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/DCC.pm
URL: http://svn.apache.org/viewcvs/spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/DCC.pm?rev=355320&r1=355319&r2=355320&view=diff
==============================================================================
--- spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/DCC.pm (original)
+++ spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/DCC.pm Thu Dec  8 18:24:52 2005
@@ -345,6 +345,7 @@
     # safe to use $SIG{ALRM} here instead of Util::trap_sigalrm_fully(),
     # since there are no killer regexp hang dangers here
     local $SIG{ALRM} = sub { die "__alarm__ignore__\n" };
+    local $SIG{__DIE__};   # bug 4631
 
     $oldalarm = alarm $timeout;
 
@@ -465,6 +466,7 @@
     # since there are no killer regexp hang dangers here
     local $SIG{ALRM} = sub { die "__alarm__ignore__\n" };
     local $SIG{PIPE} = sub { die "__brokenpipe__ignore__\n" };
+    local $SIG{__DIE__};   # bug 4631
 
     $oldalarm = alarm $timeout;
 
@@ -614,6 +616,7 @@
   eval {
     local $SIG{ALRM} = sub { die "__alarm__ignore__\n" };
     local $SIG{PIPE} = sub { die "__brokenpipe__ignore__\n" };
+    local $SIG{__DIE__};   # bug 4631
 
     $oldalarm = alarm $timeout;
 

Modified: spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/DomainKeys.pm
URL: http://svn.apache.org/viewcvs/spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/DomainKeys.pm?rev=355320&r1=355319&r2=355320&view=diff
==============================================================================
--- spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/DomainKeys.pm (original)
+++ spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/DomainKeys.pm Thu Dec  8 18:24:52 2005
@@ -141,6 +141,7 @@
 
   eval {
     local $SIG{ALRM} = sub { die "__alarm__ignore__\n" };
+    local $SIG{__DIE__};   # bug 4631
     $oldalarm = alarm($timeout);
     $self->_dk_lookup_trapped($scan, $message, $domain);
     if (defined $oldalarm) {

Modified: spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/Pyzor.pm
URL: http://svn.apache.org/viewcvs/spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/Pyzor.pm?rev=355320&r1=355319&r2=355320&view=diff
==============================================================================
--- spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/Pyzor.pm (original)
+++ spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/Pyzor.pm Thu Dec  8 18:24:52 2005
@@ -230,6 +230,7 @@
     # since there are no killer regexp hang dangers here
     local $SIG{ALRM} = sub { die "__alarm__ignore__\n" };
     local $SIG{PIPE} = sub { die "__brokenpipe__ignore__\n" };
+    local $SIG{__DIE__};   # bug 4631
 
     $oldalarm = alarm $timeout;
 
@@ -360,6 +361,7 @@
   eval {
     local $SIG{ALRM} = sub { die "__alarm__ignore__\n" };
     local $SIG{PIPE} = sub { die "__brokenpipe__ignore__\n" };
+    local $SIG{__DIE__};   # bug 4631
 
     $oldalarm = alarm $timeout;
 

Modified: spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/Razor2.pm
URL: http://svn.apache.org/viewcvs/spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/Razor2.pm?rev=355320&r1=355319&r2=355320&view=diff
==============================================================================
--- spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/Razor2.pm (original)
+++ spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/Razor2.pm Thu Dec  8 18:24:52 2005
@@ -149,6 +149,7 @@
     local ($^W) = 0;    # argh, warnings in Razor
 
     local $SIG{ALRM} = sub { die "__alarm__ignore__\n" };
+    local $SIG{__DIE__};   # bug 4631
     $oldalarm = alarm $timeout;
 
     # everything's in the module!

Modified: spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/SPF.pm
URL: http://svn.apache.org/viewcvs/spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/SPF.pm?rev=355320&r1=355319&r2=355320&view=diff
==============================================================================
--- spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/SPF.pm (original)
+++ spamassassin/branches/3.1/lib/Mail/SpamAssassin/Plugin/SPF.pm Thu Dec  8 18:24:52 2005
@@ -291,6 +291,7 @@
 
   eval {
     local $SIG{ALRM} = sub { die "__alarm__ignore__\n" };
+    local $SIG{__DIE__};   # bug 4631
     $oldalarm = alarm($timeout);
     ($result, $comment) = $query->result();
     if (defined $oldalarm) {