summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Daemon.pm1
-rw-r--r--FS/FS/Misc.pm16
2 files changed, 11 insertions, 6 deletions
diff --git a/FS/FS/Daemon.pm b/FS/FS/Daemon.pm
index ca181345a..f92a2ee37 100644
--- a/FS/FS/Daemon.pm
+++ b/FS/FS/Daemon.pm
@@ -83,6 +83,7 @@ sub myexit {
}
sub _die {
+ die @_ if $^S; # $^S = 1 during an eval(), don't break exception handling
my $msg = shift;
unlink $pid_file if -e $pid_file;
_logmsg($msg);
diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm
index b275c9dfc..895681fb0 100644
--- a/FS/FS/Misc.pm
+++ b/FS/FS/Misc.pm
@@ -353,12 +353,16 @@ sub send_email {
$smtp_opt{'ssl'} = 1 if defined($enc) && $enc eq 'tls';
$transport = Email::Sender::Transport::SMTP->new( %smtp_opt );
}
-
- eval { sendmail($message, { transport => $transport }); };
- ref($@) eq 'Email::Sender::Failure'
- ? ( $@->code ? $@->code.' ' : '' ). $@->message
- : $@;
-
+
+ local $@; # just in case
+ eval { sendmail($message, { transport => $transport }) };
+
+ if(ref($@) and $@->isa('Email::Sender::Failure')) {
+ return ($@->code ? $@->code.' ' : '').$@->message
+ }
+ else {
+ return $@;
+ }
}
=item send_fax OPTION => VALUE ...