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.
/* 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);
/* 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);