You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by he...@apache.org on 2018/10/01 14:58:24 UTC
svn commit: r1842511 - in /spamassassin/trunk/lib/Mail/SpamAssassin:
PerMsgStatus.pm Plugin/Razor2.pm
Author: hege
Date: Mon Oct 1 14:58:23 2018
New Revision: 1842511
URL: http://svn.apache.org/viewvc?rev=1842511&view=rev
Log:
Prevent DESTROY block firing on exiting helper process, also use _exit()
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm?rev=1842511&r1=1842510&r2=1842511&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm Mon Oct 1 14:58:23 2018
@@ -309,8 +309,12 @@ sub new {
sub DESTROY {
my ($self) = shift;
- local $@;
- eval { $self->delete_fulltext_tmpfile() }; # Bug 5808
+
+ # Ignore exiting helper processes (razor_fork etc)
+ if (!$self->{main}->{is_forked_helper_process}) {
+ local $@;
+ eval { $self->delete_fulltext_tmpfile() }; # Bug 5808
+ }
}
###########################################################################
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm?rev=1842511&r1=1842510&r2=1842511&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm Mon Oct 1 14:58:23 2018
@@ -50,7 +50,7 @@ use warnings;
use re 'taint';
use Storable;
-use POSIX qw(PIPE_BUF WNOHANG);
+use POSIX qw(PIPE_BUF WNOHANG _exit);
our @ISA = qw(Mail::SpamAssassin::Plugin);
@@ -432,6 +432,8 @@ sub check_razor2 {
my $pid = fork();
if (!$pid) {
+ # Must be set so DESTROY blocks etc can ignore us when exiting
+ $pms->{main}->{is_forked_helper_process} = 1;
dbg("razor2: child process $$ forked");
$pms->{razor2_backchannel}->setup_backchannel_child_post_fork();
(undef, my @results) =
@@ -442,12 +444,12 @@ sub check_razor2 {
};
if ($@) {
dbg("razor2: child return value freeze failed: $@");
- exit;
+ _exit(0); # prevent touching filehandles as per perlfork(1)
}
if (!syswrite($pms->{razor2_backchannel}->{parent}, $backmsg)) {
dbg("razor2: child backchannel write failed: $!");
}
- exit;
+ _exit(0); # prevent touching filehandles as per perlfork(1)
}
eval {