From 415b1ee18b9067f07a9e0537c1b05d632fc27dfe Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 2 Jan 2019 13:59:43 +0100 Subject: [PATCH] MINOR: mux-h2: check for too many streams only for idle streams The HEADERS frame parser checks if we still have too many streams, but this should only be done for idle streams, otherwise it would prevent us from processing trailer frames. --- src/mux_h2.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/mux_h2.c b/src/mux_h2.c index 59d76b7c3..416f3ec69 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -1859,9 +1859,6 @@ static struct h2s *h2c_frt_handle_headers(struct h2c *h2c, struct h2s *h2s) if (b_data(&h2c->dbuf) < h2c->dfl && !b_full(&h2c->dbuf)) return NULL; // incomplete frame - if (h2c->flags & H2_CF_DEM_TOOMANY) - return 0; // too many cs still present - /* now either the frame is complete or the buffer is complete */ if (h2s->st != H2_SS_IDLE) { /* FIXME: stream already exists, this is only allowed for @@ -1877,6 +1874,8 @@ static struct h2s *h2c_frt_handle_headers(struct h2c *h2c, struct h2s *h2s) sess_log(h2c->conn->owner); goto conn_err; } + else if (h2c->flags & H2_CF_DEM_TOOMANY) + goto out; // IDLE but too many cs still present error = h2c_decode_headers(h2c, &rxbuf, &flags);