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:
parent
b6aadbd19e
commit
e461e34d64
10
src/hlua.c
10
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;
|
||||
|
|
Loading…
Reference in New Issue