From 08e80a2f920fc8b1e1bddf5c4a85d739cdce0a9c Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Tue, 10 Mar 2026 19:11:37 -0700 Subject: [PATCH] Strip content-encoding/length from Go responses Go server always sends gzip regardless of accept-encoding. Bun decompresses it automatically but leaves the content-encoding header. Strip it so the toes proxy doesn't try to decompress the already-decompressed response. Co-Authored-By: Claude Opus 4.6 --- src/proxy.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/proxy.ts b/src/proxy.ts index b78d555..b4afe16 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -20,14 +20,19 @@ export function createProxy(socketPath: string, isHealthy: () => boolean, isRunn const hasBody = req.method !== 'GET' && req.method !== 'HEAD' const body = hasBody ? await req.arrayBuffer() : undefined - const headers = new Headers(req.headers) - headers.delete('accept-encoding') return fetch(`http://localhost${url.pathname}${url.search}`, { method: req.method, - headers, + headers: req.headers, body, unix: socketPath, + }).then((r) => { + // Bun auto-decompresses gzip but leaves content-encoding header. + // Strip it so the next proxy layer doesn't try to decompress again. + const headers = new Headers(r.headers) + headers.delete('content-encoding') + headers.delete('content-length') + return new Response(r.body, { status: r.status, headers }) }).catch((e) => { console.error('Proxy error:', e) return new Response('Tronbyt server is not responding', { status: 502 })