From: Christopher Faulet Date: Fri, 18 Jul 2025 14:09:20 +0000 (+0200) Subject: BUG/MEDIUM: hlua: Report to SC when output data are blocked on a lua socket X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=91c83e7cd30b41eb8f3257c2f8be9d79d75b2e06;p=thirdparty%2Fhaproxy.git 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. --- 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 @@ hlua_socket_write_yield_return: 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; }