From: Christopher Faulet Date: Wed, 2 Oct 2019 08:51:38 +0000 (+0200) Subject: MINOR: http: Remove headers matching the name of http-send-name-header option X-Git-Tag: v2.1-dev3~144 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=67d580994e4662793e4231870e5643053ed026cd;p=thirdparty%2Fhaproxy.git MINOR: http: Remove headers matching the name of http-send-name-header option It is not explicitly stated in the documentation, but some users rely on this behavior. When the server name is inserted in a request, headers with the same name are first removed. This patch is not tagged as a bug, because it is not explicitly documented. We choose to keep the same implicit behavior to not break existing configuration. Because this option is used very little, it is not a big deal. --- diff --git a/src/mux_fcgi.c b/src/mux_fcgi.c index d66c8af1e8..c459e76a9a 100644 --- a/src/mux_fcgi.c +++ b/src/mux_fcgi.c @@ -1588,6 +1588,11 @@ static size_t fcgi_strm_send_params(struct fcgi_conn *fconn, struct fcgi_strm *f if (isteq(p.n, ist("host"))) params.srv_name = p.v; + /* Skip header if same name is used to add the server name */ + if (fconn->proxy->server_id_hdr_name && + isteq(p.n, ist2(fconn->proxy->server_id_hdr_name, fconn->proxy->server_id_hdr_len))) + break; + memcpy(trash.area, "http_", 5); memcpy(trash.area+5, p.n.ptr, p.n.len); p.n = ist2(trash.area, p.n.len+5); diff --git a/src/mux_h1.c b/src/mux_h1.c index 2906953ffc..d928c57f64 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -1641,6 +1641,11 @@ static size_t h1_process_output(struct h1c *h1c, struct buffer *buf, size_t coun goto skip_hdr; } + /* Skip header if same name is used to add the server name */ + if (!(h1m->flags & H1_MF_RESP) && h1c->px->server_id_hdr_name && + isteqi(n, ist2(h1c->px->server_id_hdr_name, h1c->px->server_id_hdr_len))) + goto skip_hdr; + /* Try to adjust the case of the header name */ if (h1c->px->options2 & (PR_O2_H1_ADJ_BUGCLI|PR_O2_H1_ADJ_BUGSRV)) h1_adjust_case_outgoing_hdr(h1s, h1m, &n); diff --git a/src/mux_h2.c b/src/mux_h2.c index 34c580d694..fc4b02f636 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -4776,6 +4776,12 @@ static size_t h2s_bck_make_req_headers(struct h2s *h2s, struct htx *htx) list[hdr].n = htx_get_blk_name(htx, blk); list[hdr].v = htx_get_blk_value(htx, blk); + + /* Skip header if same name is used to add the server name */ + if ((h2c->flags & H2_CF_IS_BACK) && h2c->proxy->server_id_hdr_name && + isteq(list[hdr].n, ist2(h2c->proxy->server_id_hdr_name, h2c->proxy->server_id_hdr_len))) + continue; + hdr++; }