From: Amaury Denoyelle Date: Mon, 29 Jun 2026 11:56:17 +0000 (+0200) Subject: BUG/MINOR: hq-interop: support transcoding of absolute URI X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/NGINX-js-1660x332.png%20%22NGINX%20JavaScript%20Banner%22?a=commitdiff_plain;h=b68be6d0a2816c71137c53d2c958be9c93bef3ea;p=haproxy.git BUG/MINOR: hq-interop: support transcoding of absolute URI On the backend side, HTTP/0.9 transcoder is responsible to convert a HTX request into a HTTP start line. In particular, path is generated from the HTX request URI. However, an absolute URI was not converted correctly in a HTTP/0.9 simple path. This occurs notably in most cases when using HTTP/2 or 3 on the frontend side. This issue was detected when running QUIC interop. Some servers implementation such as picoquic would reject these requests as they are considered invalid. To adjust this, extract the path component from HTX uri using http_uri_parser API. This should be backported up to 3.3 as this is a QUIC backend fix. --- diff --git a/src/hq_interop.c b/src/hq_interop.c index a6ccfbddd..4602cc7e5 100644 --- a/src/hq_interop.c +++ b/src/hq_interop.c @@ -202,6 +202,7 @@ static size_t hq_interop_snd_buf(struct qcs *qcs, struct buffer *buf, struct htx *htx = NULL; struct htx_blk *blk; struct htx_sl *sl = NULL; + struct http_uri_parser uri_parser; int32_t idx; uint32_t bsize, fsize; struct buffer *res = NULL; @@ -234,7 +235,8 @@ static size_t hq_interop_snd_buf(struct qcs *qcs, struct buffer *buf, /* Only GET supported for HTTP/0.9. */ b_putist(res, ist("GET ")); - b_putist(res, htx_sl_req_uri(sl)); + uri_parser = http_uri_parser_init(htx_sl_req_uri(sl)); + b_putist(res, http_parse_path(&uri_parser)); b_putist(res, ist("\r\n")); htx_remove_blk(htx, blk); total += fsize;