From: Christopher Faulet Date: Mon, 18 Dec 2023 17:19:33 +0000 (+0100) Subject: BUG/MEDIUM: mux-h2: Don't report error on SE if error is only pending on H2C X-Git-Tag: v3.0-dev1~86 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=580ffd612348975cf3390ba5b3603c99046c848a;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: mux-h2: Don't report error on SE if error is only pending on H2C In h2s_wake_one_stream(), we must not report an error on the stream-endpoint descriptor if the error is not definitive on the H2 connection. A pending error on the H2 connection means there are potentially remaining data to be demux. It is important to not truncate a message for a stream. This patch is part of a series that should fix a bug reported in issue #2388 (#2388#issuecomment-1855735144). Backport instructions will be shipped in the last commit of the series. --- diff --git a/src/mux_h2.c b/src/mux_h2.c index a0f5cd5545..d74a6bd130 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -2178,7 +2178,7 @@ static void h2s_wake_one_stream(struct h2s *h2s) h2s_close(h2s); } - if (h2s->h2c->st0 >= H2_CS_ERROR || (h2s->h2c->flags & (H2_CF_ERR_PENDING|H2_CF_ERROR)) || + if (h2s->h2c->st0 >= H2_CS_ERROR || (h2s->h2c->flags & H2_CF_ERROR) || (h2s->h2c->last_sid > 0 && (!h2s->id || h2s->id > h2s->h2c->last_sid))) { se_fl_set_error(h2s->sd);