From: Willy Tarreau Date: Tue, 8 Oct 2019 15:34:50 +0000 (+0200) Subject: MINOR: h2: report in the HTX flags when the request has an authority X-Git-Tag: v2.1-dev3~126 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1440fe8b4beadde545dd0272095c96d2b3a50dbe;p=thirdparty%2Fhaproxy.git MINOR: h2: report in the HTX flags when the request has an authority The other side will need to know when to emit an authority or not. We need to pass this information in the HTX flags. --- diff --git a/src/h2.c b/src/h2.c index 80bc8e0746..254d977192 100644 --- a/src/h2.c +++ b/src/h2.c @@ -215,6 +215,7 @@ static struct htx_sl *h2_prepare_htx_reqline(uint32_t fields, struct ist *phdr, if (!(flags & HTX_SL_F_HAS_SCHM)) { /* no scheme, use authority only (CONNECT) */ uri = phdr[H2_PHDR_IDX_AUTH]; + flags |= HTX_SL_F_HAS_AUTHORITY; } else if (!(flags & (HTX_SL_F_SCHM_HTTP|HTX_SL_F_SCHM_HTTPS)) && (fields & H2_PHDR_FND_AUTH)) { /* non-http/https scheme + authority, let's use the absolute @@ -227,10 +228,13 @@ static struct htx_sl *h2_prepare_htx_reqline(uint32_t fields, struct ist *phdr, istcat(&uri, phdr[H2_PHDR_IDX_AUTH], trash.size); if (!isteq(phdr[H2_PHDR_IDX_PATH], ist("*"))) istcat(&uri, phdr[H2_PHDR_IDX_PATH], trash.size); + flags |= HTX_SL_F_HAS_AUTHORITY; } else { /* usual schemes with or without authority, use origin form */ uri = phdr[H2_PHDR_IDX_PATH]; + if (fields & H2_PHDR_FND_AUTH) + flags |= HTX_SL_F_HAS_AUTHORITY; } /* make sure the final URI isn't empty. Note that 7540#8.1.2.3 states