diff --git a/src/cfgparse.c b/src/cfgparse.c index f80a45d5d..393c51798 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -885,6 +885,11 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int inv) curproxy->fwdfor_hdr_name = strdup(defproxy.fwdfor_hdr_name); } + if (defproxy.orgto_hdr_len) { + curproxy->orgto_hdr_len = defproxy.orgto_hdr_len; + curproxy->orgto_hdr_name = strdup(defproxy.orgto_hdr_name); + } + if (curproxy->cap & PR_CAP_FE) { curproxy->maxconn = defproxy.maxconn; curproxy->backlog = defproxy.backlog; @@ -988,6 +993,8 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int inv) free(defproxy.iface_name); free(defproxy.fwdfor_hdr_name); defproxy.fwdfor_hdr_len = 0; + free(defproxy.orgto_hdr_name); + defproxy.orgto_hdr_len = 0; for (rc = 0; rc < HTTP_ERR_SIZE; rc++) free(defproxy.errmsg[rc].str); diff --git a/src/proto_http.c b/src/proto_http.c index 2db55c1e8..729a97a88 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -2176,7 +2176,7 @@ int http_process_request(struct session *s, struct buffer *req) } else { len = s->fe->fwdfor_hdr_len; memcpy(trash, s->fe->fwdfor_hdr_name, len); - } + } len += sprintf(trash + len, ": %d.%d.%d.%d", pn[0], pn[1], pn[2], pn[3]); if (unlikely(http_header_add_tail2(req, &txn->req, @@ -2249,7 +2249,7 @@ int http_process_request(struct session *s, struct buffer *req) } else { len = s->fe->orgto_hdr_len; memcpy(trash, s->fe->orgto_hdr_name, len); - } + } len += sprintf(trash + len, ": %d.%d.%d.%d", pn[0], pn[1], pn[2], pn[3]); if (unlikely(http_header_add_tail2(req, &txn->req,