diff mbox series

client: Allow sending content in DONE state

Message ID 20250706230854.1148377-1-hauke@hauke-m.de
State Accepted
Delegated to: Hauke Mehrtens
Headers show
Series client: Allow sending content in DONE state | expand

Commit Message

Hauke Mehrtens July 6, 2025, 11:08 p.m. UTC
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@hauke-m.de>
---
 utils.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
diff mbox series

Patch

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");