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.
This commit is contained in:
Christopher Faulet 2025-07-18 16:09:20 +02:00
parent 21e45a61d1
commit 7e96ff6b84

View File

@ -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;
}