From: mark Date: Tue, 15 Jun 2010 05:10:12 +0000 (+0000) Subject: RT#7869: fix error messages when send_email fails in the job queue X-Git-Tag: root_of_svc_elec_features~168 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=0c54b74fc47304e2d6e70b604e15ef3827fa59d4 RT#7869: fix error messages when send_email fails in the job queue --- 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 ...