From c8250256a772d58420260017bac20851e345d3b1 Mon Sep 17 00:00:00 2001 From: jubnl Date: Sun, 5 Apr 2026 23:11:40 +0200 Subject: [PATCH] fix(streaming): end response on client disconnect during asset pipe When a client disconnects mid-stream, headers are already sent so the catch block now calls response.end() before returning, preventing the socket from being left open and crashing the server. Fixes #445. --- server/src/services/memories/helpersService.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/src/services/memories/helpersService.ts b/server/src/services/memories/helpersService.ts index 5ed382e..9e3d32c 100644 --- a/server/src/services/memories/helpersService.ts +++ b/server/src/services/memories/helpersService.ts @@ -178,7 +178,10 @@ export async function pipeAsset(url: string, response: Response, headers?: Recor await pipeline(Readable.fromWeb(resp.body as any), response); } } catch (error) { - if (response.headersSent) return; + if (response.headersSent) { + response.end(); + return; + } if (error instanceof SsrfBlockedError) { response.status(400).json({ error: error.message }); } else {