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