BUG/MEDIUM: h3: Increase max number of headers when sending headers
authorChristopher Faulet <cfaulet@haproxy.com>
Wed, 20 Nov 2024 16:14:56 +0000 (17:14 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 22 Nov 2024 14:47:03 +0000 (15:47 +0100)
In the same way than for the H2, the maximum number of headers that can be
encoded when headers are sent must be increased to match the limit imposed
when they are received.

Reasons are the sames. On receive path, the maximum number of headers
accepted must be higher than the configured limit to be able to handle
pseudo headers and cookies headers. On the sending path, the same limit must
be applied because the pseudo headers will consume some extra slots and the
cookie header could be splitted.

This patch should be backported as far as 2.6.

(cherry picked from commit 3bd9a9e7d7a8d7869015eaf041b3ae7a0761c1d4)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>

src/h3.c

index 35b9039..5299769 100644 (file)
--- a/src/h3.c
+++ b/src/h3.c
@@ -1569,7 +1569,7 @@ static int h3_resp_headers_send(struct qcs *qcs, struct htx *htx)
        struct buffer outbuf;
        struct buffer headers_buf = BUF_NULL;
        struct buffer *res;
-       struct http_hdr list[global.tune.max_http_hdr];
+       struct http_hdr list[global.tune.max_http_hdr * 2];
        struct htx_sl *sl;
        struct htx_blk *blk;
        enum htx_blk_type type;