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.
This commit is contained in:
Christopher Faulet 2018-12-18 16:43:35 +01:00
parent b6aadbd19e
commit e461e34d64
1 changed files with 10 additions and 0 deletions

View File

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