mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-18 11:47:03 +00:00
MINOR: proxy: Store fwdfor_hdr_name as a struct ist
The fwdfor_hdr_name is already processed as an ist in `http_process_request`,
lets also just store it as such.
see 0643b0e7e
("MINOR: proxy: Make `header_unique_id` a `struct ist`") for a
very similar past commit.
This commit is contained in:
parent
4b1fcaaee3
commit
b50ab8489e
@ -352,9 +352,8 @@ struct proxy {
|
||||
unsigned int tot_fe_maxconn; /* #maxconn of frontends linked to that backend, it is used to compute fullconn */
|
||||
struct net_addr except_xff_net; /* don't x-forward-for for this address. */
|
||||
struct net_addr except_xot_net; /* don't x-original-to for this address. */
|
||||
char *fwdfor_hdr_name; /* header to use - default: "x-forwarded-for" */
|
||||
struct ist fwdfor_hdr_name; /* header to use - default: "x-forwarded-for" */
|
||||
char *orgto_hdr_name; /* header to use - default: "x-original-to" */
|
||||
int fwdfor_hdr_len; /* length of "x-forwarded-for" header */
|
||||
int orgto_hdr_len; /* length of "x-original-to" header */
|
||||
char *server_id_hdr_name; /* the header to use to send the server id (name) */
|
||||
int server_id_hdr_len; /* the length of the id (name) header... name */
|
||||
|
@ -2331,11 +2331,10 @@ stats_error_parsing:
|
||||
|
||||
curproxy->options |= PR_O_FWDFOR | PR_O_FF_ALWAYS;
|
||||
|
||||
free(curproxy->fwdfor_hdr_name);
|
||||
curproxy->fwdfor_hdr_name = strdup(DEF_XFORWARDFOR_HDR);
|
||||
if (!curproxy->fwdfor_hdr_name)
|
||||
istfree(&curproxy->fwdfor_hdr_name);
|
||||
curproxy->fwdfor_hdr_name = istdup(ist(DEF_XFORWARDFOR_HDR));
|
||||
if (!isttest(curproxy->fwdfor_hdr_name))
|
||||
goto alloc_error;
|
||||
curproxy->fwdfor_hdr_len = strlen(DEF_XFORWARDFOR_HDR);
|
||||
curproxy->except_xff_net.family = AF_UNSPEC;
|
||||
|
||||
/* loop to go through arguments - start at 2, since 0+1 = "option" "forwardfor" */
|
||||
@ -2374,11 +2373,10 @@ stats_error_parsing:
|
||||
err_code |= ERR_ALERT | ERR_FATAL;
|
||||
goto out;
|
||||
}
|
||||
free(curproxy->fwdfor_hdr_name);
|
||||
curproxy->fwdfor_hdr_name = strdup(args[cur_arg+1]);
|
||||
if (!curproxy->fwdfor_hdr_name)
|
||||
istfree(&curproxy->fwdfor_hdr_name);
|
||||
curproxy->fwdfor_hdr_name = istdup(ist(args[cur_arg+1]));
|
||||
if (!isttest(curproxy->fwdfor_hdr_name))
|
||||
goto alloc_error;
|
||||
curproxy->fwdfor_hdr_len = strlen(curproxy->fwdfor_hdr_name);
|
||||
cur_arg += 2;
|
||||
} else if (strcmp(args[cur_arg], "if-none") == 0) {
|
||||
curproxy->options &= ~PR_O_FF_ALWAYS;
|
||||
|
@ -655,8 +655,7 @@ int http_process_request(struct stream *s, struct channel *req, int an_bit)
|
||||
if ((sess->fe->options | s->be->options) & PR_O_FWDFOR) {
|
||||
const struct sockaddr_storage *src = si_src(cs_si(s->csf));
|
||||
struct http_hdr_ctx ctx = { .blk = NULL };
|
||||
struct ist hdr = ist2(s->be->fwdfor_hdr_len ? s->be->fwdfor_hdr_name : sess->fe->fwdfor_hdr_name,
|
||||
s->be->fwdfor_hdr_len ? s->be->fwdfor_hdr_len : sess->fe->fwdfor_hdr_len);
|
||||
struct ist hdr = isttest(s->be->fwdfor_hdr_name) ? s->be->fwdfor_hdr_name : sess->fe->fwdfor_hdr_name;
|
||||
|
||||
if (!((sess->fe->options | s->be->options) & PR_O_FF_ALWAYS) &&
|
||||
http_find_header(htx, hdr, &ctx, 0)) {
|
||||
|
10
src/proxy.c
10
src/proxy.c
@ -332,7 +332,7 @@ void free_proxy(struct proxy *p)
|
||||
pxdf->fct(p);
|
||||
|
||||
free(p->desc);
|
||||
free(p->fwdfor_hdr_name);
|
||||
istfree(&p->fwdfor_hdr_name);
|
||||
|
||||
task_destroy(p->task);
|
||||
|
||||
@ -1439,7 +1439,7 @@ void proxy_free_defaults(struct proxy *defproxy)
|
||||
istfree(&defproxy->monitor_uri);
|
||||
ha_free(&defproxy->defbe.name);
|
||||
ha_free(&defproxy->conn_src.iface_name);
|
||||
ha_free(&defproxy->fwdfor_hdr_name); defproxy->fwdfor_hdr_len = 0;
|
||||
istfree(&defproxy->fwdfor_hdr_name);
|
||||
ha_free(&defproxy->orgto_hdr_name); defproxy->orgto_hdr_len = 0;
|
||||
ha_free(&defproxy->server_id_hdr_name); defproxy->server_id_hdr_len = 0;
|
||||
|
||||
@ -1601,10 +1601,8 @@ static int proxy_defproxy_cpy(struct proxy *curproxy, const struct proxy *defpro
|
||||
curproxy->tcp_req.inspect_delay = defproxy->tcp_req.inspect_delay;
|
||||
curproxy->tcp_rep.inspect_delay = defproxy->tcp_rep.inspect_delay;
|
||||
|
||||
if (defproxy->fwdfor_hdr_len) {
|
||||
curproxy->fwdfor_hdr_len = defproxy->fwdfor_hdr_len;
|
||||
curproxy->fwdfor_hdr_name = strdup(defproxy->fwdfor_hdr_name);
|
||||
}
|
||||
if (isttest(defproxy->fwdfor_hdr_name))
|
||||
curproxy->fwdfor_hdr_name = istdup(defproxy->fwdfor_hdr_name);
|
||||
|
||||
if (defproxy->orgto_hdr_len) {
|
||||
curproxy->orgto_hdr_len = defproxy->orgto_hdr_len;
|
||||
|
Loading…
Reference in New Issue
Block a user