RT#7869: fix error messages when send_email fails in the job queue
authormark <mark>
Tue, 15 Jun 2010 05:10:12 +0000 (05:10 +0000)
committermark <mark>
Tue, 15 Jun 2010 05:10:12 +0000 (05:10 +0000)
FS/FS/Daemon.pm
FS/FS/Misc.pm

index ca18134..f92a2ee 100644 (file)
@@ -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);
index b275c9d..895681f 100644 (file)
@@ -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 ...