MEDIUM: h3: concatenate multiple cookie headers

As specified by RFC 9114, multiple cookie headers must be concatenated
into a single entry before passing it to a HTTP/1.1 connection. To
implement this, reuse the same function as already used for HTTP/2
module.

This should answer to feature requested in github issue #1818.
diff --git a/src/h3.c b/src/h3.c
index ea24fe8..53372c5 100644
--- a/src/h3.c
+++ b/src/h3.c
@@ -22,6 +22,7 @@
 #include <haproxy/h3.h>
 #include <haproxy/h3_stats.h>
 #include <haproxy/http.h>
+#include <haproxy/http_htx.h>
 #include <haproxy/htx.h>
 #include <haproxy/intops.h>
 #include <haproxy/istbuf.h>
@@ -346,6 +347,7 @@
 	//struct ist scheme = IST_NULL, authority = IST_NULL;
 	struct ist authority = IST_NULL;
 	int hdr_idx, ret;
+	int cookie = -1, last_cookie = -1;
 
 	TRACE_ENTER(H3_EV_RX_FRAME|H3_EV_RX_HDR, qcs->qcc->conn, qcs);
 
@@ -409,12 +411,24 @@
 		if (isteq(list[hdr_idx].n, ist("")))
 			break;
 
+		if (isteq(list[hdr_idx].n, ist("cookie"))) {
+			http_cookie_register(list, hdr_idx, &cookie, &last_cookie);
+			continue;
+		}
+
 		if (!istmatch(list[hdr_idx].n, ist(":")))
 			htx_add_header(htx, list[hdr_idx].n, list[hdr_idx].v);
 
 		++hdr_idx;
 	}
 
+	if (cookie >= 0) {
+		if (http_cookie_merge(htx, list, cookie)) {
+			h3c->err = H3_INTERNAL_ERROR;
+			return -1;
+		}
+	}
+
 	htx_add_endof(htx, HTX_BLK_EOH);
 	htx_to_buf(htx, &htx_buf);