From a693837b3b9d085a41da5564380cc55300c4adc2 Mon Sep 17 00:00:00 2001 From: Matt Fozard Date: Thu, 21 May 2026 11:42:04 +0100 Subject: [PATCH] fix: only concat once in responseInterceptor, fixes #929 --- src/handlers/response-interceptor.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/handlers/response-interceptor.ts b/src/handlers/response-interceptor.ts index 7721bb38..d2570457 100644 --- a/src/handlers/response-interceptor.ts +++ b/src/handlers/response-interceptor.ts @@ -47,15 +47,19 @@ export function responseInterceptor< ): Promise { debug('intercept proxy response'); const originalProxyRes = proxyRes; - let buffer = Buffer.from('', 'utf8'); + let buffers: Buffer[] = []; // decompress proxy response const _proxyRes = decompress(proxyRes, proxyRes.headers['content-encoding']); // concat data stream - _proxyRes.on('data', (chunk) => (buffer = Buffer.concat([buffer, chunk]))); + _proxyRes.on('data', (chunk) => buffers.push(chunk)); _proxyRes.on('end', async () => { + // Concatenate all buffers into one and free up temp buffers + const buffer = buffers.length ? Buffer.concat(buffers) : Buffer.from('', 'utf8'); + buffers = []; + // copy original headers copyHeaders(proxyRes, res); @@ -73,6 +77,7 @@ export function responseInterceptor< }); _proxyRes.on('error', (error) => { + buffers = []; res.end(`Error fetching proxied request: ${error.message}`); }); };