From 0ec740eaee5b919b7d568daf251c8ce218143639 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 26 Feb 2020 11:59:19 +0100 Subject: [PATCH] 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. --- src/hlua.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/hlua.c b/src/hlua.c index e6878974d..b3eca4e22 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -3122,22 +3122,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; }