From 1440fe8b4beadde545dd0272095c96d2b3a50dbe Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 8 Oct 2019 17:34:50 +0200 Subject: [PATCH] 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. --- src/h2.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/h2.c b/src/h2.c index 80bc8e074..254d97719 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