BUG/MINOR: htx: Preserve HTX flags when draining data from an HTX message
When all data of an HTX message are drained, we rely on htx_reset() to
reinit the message state. However, the flags must be preserved. It is, among
other things, important to preserve processing or parsing errors.
This patch must be backported as far as 2.0.
(cherry picked from commit 5e9b24f4b4e31958d97ce445bb993feb7ebc1421)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 07b2b0aa146e1d24723192091e220e7ce50f2bfd)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit c965e0e990a4798f5dbd14055251da3395137c51)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/htx.c b/src/htx.c
index cb389c2..8cd7c1e 100644
--- a/src/htx.c
+++ b/src/htx.c
@@ -457,7 +457,10 @@
struct htx_ret htxret = { .blk = NULL, .ret = 0 };
if (count == htx->data) {
+ uint32_t flags = htx->flags;
+
htx_reset(htx);
+ htx->flags = flags; /* restore flags */
htxret.ret = count;
return htxret;
}