summaryrefslogtreecommitdiff
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
parentfc1dd91f69608497a714a3c013e6b1baccd9dcac (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 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 ...