From c5753aedf7e5d059b311104eb1081fe126a3e793 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 2 Dec 2018 12:28:01 +0100 Subject: [PATCH] BUG/MEDIUM: mux-h2: remove the HTX EOM block on H2 response headers If we decided to emit the end of stream flag on the H2 response headers frame, we must remove the EOM block from the HTX stream, otherwise it will lead to an extra DATA frame being sent with the ES flag and will violate the protocol. --- src/mux_h2.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mux_h2.c b/src/mux_h2.c index bd329cc12..bab4c851d 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -3762,6 +3762,9 @@ static size_t h2s_htx_frt_make_resp_headers(struct h2s *h2s, struct htx *htx) ret += htx_get_blksz(blk); blk = htx_remove_blk(htx, blk); } + + if (blk_end && htx_get_blk_type(blk_end) == HTX_BLK_EOM) + htx_remove_blk(htx, blk_end); end: return ret; full: