From 62969d59f6db9d67b22beddf7ad04de3e10a67ff Mon Sep 17 00:00:00 2001 From: mrkishi Date: Wed, 8 May 2019 12:37:09 -0300 Subject: [PATCH] Abort infinite loop for preload errors --- .../src/server/middleware/get_page_handler.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/runtime/src/server/middleware/get_page_handler.ts b/runtime/src/server/middleware/get_page_handler.ts index d4a62cb..40e6ef8 100644 --- a/runtime/src/server/middleware/get_page_handler.ts +++ b/runtime/src/server/middleware/get_page_handler.ts @@ -26,6 +26,15 @@ export function get_page_handler( const { server_routes, pages } = manifest; const error_route = manifest.error; + function bail(req: Req, res: Res, err: Error) { + console.error(err); + + const message = dev ? escape_html(err.message) : 'Internal server error'; + + res.statusCode = 500; + res.end(`
${message}
`); + } + function handle_error(req: Req, res: Res, statusCode: number, error: Error | string) { handle_page({ pattern: null, @@ -169,6 +178,10 @@ export function get_page_handler( preloaded = await Promise.all(toPreload); } catch (err) { + if (error) { + return bail(req, res, err) + } + preload_error = { statusCode: 500, message: err }; preloaded = []; // appease TypeScript } @@ -314,11 +327,8 @@ export function get_page_handler( res.statusCode = status; res.end(body); } catch(err) { - console.log(err); if (error) { - // we encountered an error while rendering the error page — oops - res.statusCode = 500; - res.end(`
${escape_html(err.message)}
`); + bail(req, res, err) } else { handle_error(req, res, 500, err); }