diff --git a/FU.pm b/FU.pm index c178072..81bcf94 100644 --- a/FU.pm +++ b/FU.pm @@ -380,10 +380,11 @@ sub _do_req($c) { my($code, $msg) = ref $err eq 'FU::err' ? $err->@* : (500, $err); fu->reset; fu->status($code); - eval { - ($onerr{$code} || $onerr{500})->($code, $msg); - 1; - } || _err_500(); + my $ok = eval { ($onerr{$code} || $onerr{500})->($code, $msg) }; + if (!$ok && !_is_done($@)) { + _log_err $@; + _err_500(); + } } $REQ->{trace_end} = time;