BUG/MINOR: hlua: Rely on CF_EOI to detect end of message in HTTP applets
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.
diff --git a/src/hlua.c b/src/hlua.c
index b5465e8..f34f7b6 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -5058,7 +5058,7 @@
/* 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);
@@ -5150,7 +5150,7 @@
/* 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);