summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormark <mark>2010-06-15 05:10:34 +0000
committermark <mark>2010-06-15 05:10:34 +0000
commite0f8179a112d12a66280351fd12232015c4c53c9 (patch)
tree943c877b64437a007298e1a9e642f7a0e8ffff02
parentbb9ea72be2b9990624e918a00ab328e6c48b2626 (diff)
RT#7869: fix error messages when send_email fails in the job queue
-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 afe6c633b..3bbad5bb9 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 ...