Skip to content
This repository was archived by the owner on Jan 11, 2023. It is now read-only.

Commit 62969d5

Browse files
committed
Abort infinite loop for preload errors
1 parent 5c07080 commit 62969d5

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

runtime/src/server/middleware/get_page_handler.ts

+14-4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,15 @@ export function get_page_handler(
2626
const { server_routes, pages } = manifest;
2727
const error_route = manifest.error;
2828

29+
function bail(req: Req, res: Res, err: Error) {
30+
console.error(err);
31+
32+
const message = dev ? escape_html(err.message) : 'Internal server error';
33+
34+
res.statusCode = 500;
35+
res.end(`<pre>${message}</pre>`);
36+
}
37+
2938
function handle_error(req: Req, res: Res, statusCode: number, error: Error | string) {
3039
handle_page({
3140
pattern: null,
@@ -169,6 +178,10 @@ export function get_page_handler(
169178

170179
preloaded = await Promise.all(toPreload);
171180
} catch (err) {
181+
if (error) {
182+
return bail(req, res, err)
183+
}
184+
172185
preload_error = { statusCode: 500, message: err };
173186
preloaded = []; // appease TypeScript
174187
}
@@ -314,11 +327,8 @@ export function get_page_handler(
314327
res.statusCode = status;
315328
res.end(body);
316329
} catch(err) {
317-
console.log(err);
318330
if (error) {
319-
// we encountered an error while rendering the error page — oops
320-
res.statusCode = 500;
321-
res.end(`<pre>${escape_html(err.message)}</pre>`);
331+
bail(req, res, err)
322332
} else {
323333
handle_error(req, res, 500, err);
324334
}

0 commit comments

Comments
 (0)