From 7e96ff6b84b7d7e0805a9a4e87a0a85b6b976df8 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Fri, 18 Jul 2025 16:09:20 +0200 Subject: [PATCH] BUG/MEDIUM: hlua: Report to SC when output data are blocked on a lua socket It is a fix similar to the previous one ("BUG/MEDIUM: hlua: Report to SC when data were consumed on a lua socket"), but for the write side. The writer must notify the cosocket it needs more space in the request buffer to produce more data by calling sc_need_room(). Otherwise, there is nothing to prevent to wake the cosocket applet up again and again. This patch must be backported as far as 2.8, and maybe to 2.6 too. --- src/hlua.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hlua.c b/src/hlua.c index c05b42fa5..72e3d2140 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -3232,6 +3232,7 @@ static int hlua_socket_write_yield(struct lua_State *L,int status, lua_KContext WILL_LJMP(luaL_error(L, "out of memory")); } xref_unlock(&socket->xref, peer); + sc_need_room(sc, channel_recv_max(&s->req) + 1); MAY_LJMP(hlua_yieldk(L, 0, 0, hlua_socket_write_yield, TICK_ETERNITY, 0)); return 0; }