summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authormark <mark>2010-06-15 05:10:12 +0000
committermark <mark>2010-06-15 05:10:12 +0000
commit0c54b74fc47304e2d6e70b604e15ef3827fa59d4 (patch)
treeeaf06437399f3c5492f08e95ef94116a9970cc5b /FS
parentfc1dd91f69608497a714a3c013e6b1baccd9dcac (diff)
RT#7869: fix error messages when send_email fails in the job queue
Diffstat (limited to 'FS')
-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 ca18134..f92a2ee 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 b275c9d..895681f 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 ...