From: Willy Tarreau Date: Wed, 25 Feb 2026 23:18:44 +0000 (+0100) Subject: BUG/MEDIUM: mux-h2: make sure to always report pending errors to the stream X-Git-Tag: v3.4-dev6~79 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=44932b6c4;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: mux-h2: make sure to always report pending errors to the stream Some stream parsing errors that do not affect the connection result in the parsed block not being transferred from the rx buffer to the channel and not being reported upstream in rcv_buf(), causing the stconn to time out. Let's detect this condition, and propagate term flags anyway since no more progress will be made otherwise. This should be backported at least till 3.2, probably even 2.8. --- diff --git a/src/mux_h2.c b/src/mux_h2.c index b3a984b27..c6e8c993e 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -7884,7 +7884,13 @@ static size_t h2_rcv_buf(struct stconn *sc, struct buffer *buf, size_t count, in /* tell the stream layer whether there are data left or not */ if (h2s_rxbuf_cnt(h2s)) { + /* Note that parsing errors can also arrive here, we may need + * to propagate errors upstream otherwise no new activity will + * unblock them. + */ se_fl_set(h2s->sd, SE_FL_RCV_MORE | SE_FL_WANT_ROOM); + if (h2s_htx && h2s_htx->flags & HTX_FL_PARSING_ERROR) + h2s_propagate_term_flags(h2c, h2s); BUG_ON_HOT(!buf->data); } else {