fix: prevent double-rendering in async route handlers
This commit is contained in:
@@ -38,11 +38,13 @@ sub startup {
|
|||||||
$c->render_later;
|
$c->render_later;
|
||||||
$c->db->ping->then(
|
$c->db->ping->then(
|
||||||
sub {
|
sub {
|
||||||
|
return if $c->stash->{rendered};
|
||||||
$c->render( json => { status => 'ok' } );
|
$c->render( json => { status => 'ok' } );
|
||||||
}
|
}
|
||||||
)->catch(
|
)->catch(
|
||||||
sub {
|
sub {
|
||||||
my $err = shift;
|
my $err = shift;
|
||||||
|
return if $c->stash->{rendered};
|
||||||
$c->app->log->error("Health check DB error: $err");
|
$c->app->log->error("Health check DB error: $err");
|
||||||
$c->render(
|
$c->render(
|
||||||
json => {
|
json => {
|
||||||
@@ -98,9 +100,10 @@ sub startup {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$url_service->get_original_url($short_code)->then(
|
return $url_service->get_original_url($short_code)->then(
|
||||||
sub {
|
sub {
|
||||||
my $original_url = shift;
|
my $original_url = shift;
|
||||||
|
return if $c->stash->{rendered};
|
||||||
if ($original_url) {
|
if ($original_url) {
|
||||||
$c->redirect_to($original_url);
|
$c->redirect_to($original_url);
|
||||||
}
|
}
|
||||||
@@ -114,6 +117,7 @@ sub startup {
|
|||||||
)->catch(
|
)->catch(
|
||||||
sub {
|
sub {
|
||||||
my $err = shift;
|
my $err = shift;
|
||||||
|
return if $c->stash->{rendered};
|
||||||
$c->app->log->error("Redirect lookup error: $err");
|
$c->app->log->error("Redirect lookup error: $err");
|
||||||
$c->render(
|
$c->render(
|
||||||
json => { error => 'Internal server error' },
|
json => { error => 'Internal server error' },
|
||||||
|
|||||||
Reference in New Issue
Block a user