mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-28 22:31:06 +01:00
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.
This commit is contained in:
parent
4ad7310399
commit
0ec740eaee
17
src/hlua.c
17
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;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user