From: Willy Tarreau Date: Tue, 7 Nov 2017 13:39:09 +0000 (+0100) Subject: BUG/MEDIUM: h2: properly set H2_SF_ES_SENT when sending the final frame X-Git-Tag: v1.8-rc3~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6d8b682f9a60a26b4e73c63e8145757f98565616;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: h2: properly set H2_SF_ES_SENT when sending the final frame When sending DATA+ES, it's important to set H2_SF_ES_SENT as we don't want to emit is several times nor to send an RST afterwards. --- diff --git a/src/mux_h2.c b/src/mux_h2.c index e1c995516c..fad28b695e 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -891,16 +891,17 @@ static int h2_send_empty_data_es(struct h2s *h2s) memcpy(str, "\x00\x00\x00\x00\x01", 5); write_n32(str + 5, h2s->id); ret = bo_istput(res, ist2(str, 9)); - if (unlikely(ret <= 0)) { - if (!ret) { - h2c->flags |= H2_CF_MUX_MFULL; - h2s->flags |= H2_SF_BLK_MROOM; - return 0; - } - else { - h2c_error(h2c, H2_ERR_INTERNAL_ERROR); - return 0; - } + if (likely(ret > 0)) { + h2s->flags |= H2_SF_ES_SENT; + } + else if (!ret) { + h2c->flags |= H2_CF_MUX_MFULL; + h2s->flags |= H2_SF_BLK_MROOM; + return 0; + } + else { + h2c_error(h2c, H2_ERR_INTERNAL_ERROR); + return 0; } return ret; }