Skip to content

Commit

Permalink
BUG/MINOR: hlua: Rely on CF_EOI to detect end of message in HTTP applets
Browse files Browse the repository at this point in the history
applet:getline() and applet:receive() functions for HTTP applets must rely
on the channel flags to detect the end of the message and not on HTX
flags. It means CF_EOI must be used instead of HTX_FL_EOM.

It is important because the HTX flag is transient. Because there is no flag
on HTTP applets to save the info, it is not reliable. However CF_EOI once
set is never removed. So it is safer to rely on it. Otherwise, the call to
these functions hang.

This patch must be backported as far as 2.4.
  • Loading branch information
capflam committed Aug 29, 2022
1 parent b372f16 commit 4a20972
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/hlua.c
Expand Up @@ -5058,7 +5058,7 @@ __LJMP static int hlua_applet_http_getline_yield(lua_State *L, int status, lua_K
/* The message was fully consumed and no more data are expected
* (EOM flag set).
*/
if (htx_is_empty(htx) && (htx->flags & HTX_FL_EOM))
if (htx_is_empty(htx) && (req->flags & CF_EOI))
stop = 1;

htx_to_buf(htx, &req->buf);
Expand Down Expand Up @@ -5150,7 +5150,7 @@ __LJMP static int hlua_applet_http_recv_yield(lua_State *L, int status, lua_KCon
/* The message was fully consumed and no more data are expected
* (EOM flag set).
*/
if (htx_is_empty(htx) && (htx->flags & HTX_FL_EOM))
if (htx_is_empty(htx) && (req->flags & CF_EOI))
len = 0;

htx_to_buf(htx, &req->buf);
Expand Down

0 comments on commit 4a20972

Please sign in to comment.