From cd3c8c92bad48422eff3e86bf48a4cb034009267 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Fri, 13 Nov 2020 10:10:34 -0500 Subject: [PATCH] add retry cap to handleStaticFile to prevent an infitite loop Signed-off-by: Sebastian Malton --- src/main/router.ts | 13 ++++++++++--- webpack.renderer.ts | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/router.ts b/src/main/router.ts index a5323bf150..230c93f09e 100644 --- a/src/main/router.ts +++ b/src/main/router.ts @@ -6,6 +6,7 @@ import { readFile } from "fs-extra" import { Cluster } from "./cluster" import { apiPrefix, appName, publicPath, isDevelopment, webpackDevServerPort } from "../common/vars"; import { helmRoute, kubeconfigRoute, metricsRoute, portForwardRoute, resourceApplierRoute, watchRoute } from "./routes"; +import logger from "./logger" export interface RouterRequestOpts { req: http.IncomingMessage; @@ -94,7 +95,7 @@ export class Router { return mimeTypes[path.extname(filename).slice(1)] || "text/plain" } - async handleStaticFile(filePath: string, res: http.ServerResponse, req: http.IncomingMessage) { + async handleStaticFile(filePath: string, res: http.ServerResponse, req: http.IncomingMessage, retryCount = 0) { const asset = path.join(__static, filePath); try { const filename = path.basename(req.url); @@ -112,7 +113,13 @@ export class Router { res.write(data); res.end(); } catch (err) { - this.handleStaticFile(`${publicPath}/${appName}.html`, res, req); + if (retryCount > 5) { + logger.error("handleStaticFile:", err.toString()) + res.statusCode = 404 + res.end() + return + } + this.handleStaticFile(`${publicPath}/${appName}.html`, res, req, Math.max(retryCount, 0) + 1); } } @@ -120,7 +127,7 @@ export class Router { // Static assets this.router.add( { method: 'get', path: '/{path*}' }, - ({ params, response, path, raw: { req }}: LensApiRequest) => { + ({ params, response, path, raw: { req } }: LensApiRequest) => { this.handleStaticFile(params.path, response, req); }); diff --git a/webpack.renderer.ts b/webpack.renderer.ts index ea2b5f622c..62adc31bb5 100755 --- a/webpack.renderer.ts +++ b/webpack.renderer.ts @@ -188,7 +188,7 @@ export function webpackLensRenderer({ showVars = true } = {}): webpack.Configura isDevelopment && new webpack.HotModuleReplacementPlugin(), isDevelopment && new ReactRefreshWebpackPlugin(), - + ].filter(Boolean), } }