From aeafba55fba64165684fa13f79dc5a216b908f3a Mon Sep 17 00:00:00 2001 From: Jakub Holcman Date: Sat, 3 May 2025 22:57:55 +0200 Subject: [PATCH 1/2] fix(sendStream): handle aborted (endless) streams correctly --- src/utils/response.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/utils/response.ts b/src/utils/response.ts index 1dc75a298..839fbcbdd 100644 --- a/src/utils/response.ts +++ b/src/utils/response.ts @@ -414,6 +414,19 @@ export function sendStream( hasProp(stream, "pipeTo") && typeof (stream as ReadableStream).pipeTo === "function" ) { + // instantiate a new AbortController to handle request aborts + const abortController = new AbortController(); + + // shared function to handle aborts + const doAbort = () => { + abortController.abort("Client closed or lost connection."); + } + + // Handle request aborts + event.node.res.on("close", doAbort); + event.node.res.on("finish", doAbort); + event.node.res.on("error", doAbort); + return (stream as ReadableStream) .pipeTo( new WritableStream({ @@ -421,6 +434,9 @@ export function sendStream( event.node.res.write(chunk); }, }), + { + signal: abortController.signal + }, ) .then(() => { event.node.res.end(); From c5c4e4b8fbf7353050a545cfac9f9d528619ced5 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 5 May 2025 10:29:39 +0000 Subject: [PATCH 2/2] chore: apply automated updates --- src/utils/response.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/response.ts b/src/utils/response.ts index 839fbcbdd..6c8231db8 100644 --- a/src/utils/response.ts +++ b/src/utils/response.ts @@ -420,7 +420,7 @@ export function sendStream( // shared function to handle aborts const doAbort = () => { abortController.abort("Client closed or lost connection."); - } + }; // Handle request aborts event.node.res.on("close", doAbort); @@ -435,7 +435,7 @@ export function sendStream( }, }), { - signal: abortController.signal + signal: abortController.signal, }, ) .then(() => {