From: Christopher Faulet Date: Wed, 26 Feb 2020 10:59:19 +0000 (+0100) Subject: BUG/MINOR: lua: Ignore the reserve to know if a channel is full or not X-Git-Tag: v2.1.4~43 X-Git-Url: http://git.haproxy.org/?a=commitdiff_plain;h=99471972da9d7516165adb8c104771ef8219fbb1;p=haproxy-2.1.git BUG/MINOR: lua: Ignore the reserve to know if a channel is full or not The Lua function Channel.is_full() should not take care of the reserve because it is not called from a producer (an applet for instance). From an action, it is allowed to overwrite the buffer reserve. This patch should be backported as far as 1.7. But it must be adapted for 1.8 and lower because there is no HTX on these versions. (cherry picked from commit 0ec740eaee5b919b7d568daf251c8ce218143639) Signed-off-by: Willy Tarreau --- diff --git a/src/hlua.c b/src/hlua.c index 8ace405..02bc4f5 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -3169,22 +3169,13 @@ __LJMP static int hlua_channel_get_in_len(lua_State *L) __LJMP static int hlua_channel_is_full(lua_State *L) { struct channel *chn; - int rem; MAY_LJMP(check_args(L, 1, "is_full")); chn = MAY_LJMP(hlua_checkchannel(L, 1)); - - if (IS_HTX_STRM(chn_strm(chn))) { - struct htx *htx = htxbuf(&chn->buf); - - rem = htx_free_data_space(htx); - } - else - rem = b_room(&chn->buf); - - rem -= global.tune.maxrewrite; /* Rewrite reserved size */ - - lua_pushboolean(L, rem <= 0); + /* ignore the reserve, we are not on a producer side (ie in an + * applet). + */ + lua_pushboolean(L, channel_full(chn, 0)); return 1; }