From e461e34d64bb1f161500a9cfd628978332578a3c Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 18 Dec 2018 16:43:35 +0100 Subject: [PATCH] BUG/MEDIUM: lua/htx: Handle EOM in receive/get_line calls in HTTP applets In HTTP applets, the request's EOM was removed like other blocks when receive or get_line was called from lua scripts. So it was impossible to stop receiving data on successive calls when all the request body was already consumed, blocking infinitly the applet. Now, we never consume the EOM. So it is easy to interrupt receive/get_line calls. In all cases, this block is consumed when the applet ends. --- src/hlua.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/hlua.c b/src/hlua.c index 13e03cef73..79b486da8e 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -4240,6 +4240,11 @@ __LJMP static int hlua_applet_htx_getline_yield(lua_State *L, int status, lua_KC uint32_t vlen; char *nl; + if (type == HTX_BLK_EOM) { + stop = 1; + break; + } + vlen = sz; if (vlen > count) { if (type != HTX_BLK_DATA) @@ -4409,6 +4414,11 @@ __LJMP static int hlua_applet_htx_recv_yield(lua_State *L, int status, lua_KCont struct ist v; uint32_t vlen; + if (type == HTX_BLK_EOM) { + len = 0; + break; + } + vlen = sz; if (len > 0 && vlen > len) vlen = len;