From 558d2a098bd20b3031139e37b088345c766e0b4e Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Sun, 18 Aug 2024 17:37:39 +0200 Subject: fix(node/http): wrong `req.url` value (#25081) This PR addresses a regression introduced in https://github.com/denoland/deno/pull/25021 that would cause the `req.url` parameter in Node's http server to always be a single character instead of the expected value. The regression was caused by effectively calling `.indexOf()` on an empty string and thus passing the wrong index for slicing. ```js "".indexOf("/") // -> -1 request.url.slice(-1) // effectively only giving us the last character ``` Fixes https://github.com/denoland/deno/issues/25080 --- ext/node/polyfills/http.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'ext/node') diff --git a/ext/node/polyfills/http.ts b/ext/node/polyfills/http.ts index 015a91816..920f3a5b0 100644 --- a/ext/node/polyfills/http.ts +++ b/ext/node/polyfills/http.ts @@ -1781,7 +1781,8 @@ export class ServerImpl extends EventEmitter { }); const req = new IncomingMessageForServer(socket); - req.url = request.url?.slice(req.url.indexOf("/", 8)); + // Slice off the origin so that we only have pathname + search + req.url = request.url?.slice(request.url.indexOf("/", 8)); req.method = request.method; req.upgrade = request.headers.get("connection")?.toLowerCase().includes("upgrade") && -- cgit v1.2.3