diff options
| author | Jo-Philipp Wich | 2025-04-05 12:28:34 +0000 |
|---|---|---|
| committer | Jo-Philipp Wich | 2025-04-05 12:32:36 +0000 |
| commit | fad0d05da757dcd73abc2beb02ce4e4edf83ac3d (patch) | |
| tree | 891a75f1a51ac5037cae13a6573a5e1a28d37614 | |
| parent | b3e3c05d6781caa5db54fc9913772ddc1af2e045 (diff) | |
proc: inhibit chunked transfer encoding on existing TEs or known length
When a backend CGI, Lua or ucode handler produces a response which either
includes a Content-Length or a Transfer-Encoding header then disable the
uhttpd side chunked transfer encoding and assume the backend response to
be already properly encoded or length delimitted.
Fixes: https://github.com/openwrt/luci/issues/7655
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
| -rw-r--r-- | proc.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -218,6 +218,10 @@ static void proc_handle_header(struct relay *r, const char *name, const char *va cl->dispatch.proc.status_code = atoi(buf); return; } + else if (!strcasecmp(name, "Content-Length") || + !strcasecmp(name, "Transfer-Encoding")) { + cl->request.disable_chunked = true; + } blobmsg_add_string(&cl->dispatch.proc.hdr, name, val); } |