[PATCH] client: Allow sending content in DONE state
Hauke Mehrtens
hauke at hauke-m.de
Sun Jul 6 16:08:54 PDT 2025
Allow sending content even when the connection is in done state. When we
run into an error we will be in CLIENT_STATE_DONE state and have to
write some content to the client. Allow writing in normal DATA and in
DONE state.
This fixes http error 403 in LuCI.
Fixes: b3e3c05d6781 ("client: don't send stray EOF chunk on connection timeout")
Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
utils.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/utils.c b/utils.c
index 5304c2a..e10d1dc 100644
--- a/utils.c
+++ b/utils.c
@@ -56,7 +56,8 @@ void uh_chunk_vprintf(struct client *cl, const char *format, va_list arg)
va_list arg2;
int len;
- if (cl->state != CLIENT_STATE_DATA)
+ if (cl->state != CLIENT_STATE_DATA &&
+ cl->state != CLIENT_STATE_DONE)
return;
uloop_timeout_set(&cl->timeout, conf.network_timeout * 1000);
@@ -91,7 +92,8 @@ void uh_chunk_eof(struct client *cl)
if (!uh_use_chunked(cl))
return;
- if (cl->state != CLIENT_STATE_DATA)
+ if (cl->state != CLIENT_STATE_DATA &&
+ cl->state != CLIENT_STATE_DONE)
return;
ustream_printf(cl->us, "0\r\n\r\n");
--
2.50.0
More information about the openwrt-devel
mailing list