From: Willy Tarreau Date: Mon, 30 Nov 2009 10:50:16 +0000 (+0100) Subject: [BUG] x-original-to: name was not set in default instance X-Git-Tag: v1.3.23~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f175a6d6b123c21a2479d472a510fc51fc0497f2;p=thirdparty%2Fhaproxy.git [BUG] x-original-to: name was not set in default instance This resulted in an empty header name when option originalto was declared in a default sections. (cherry picked from commit b86db34fe00ec91909dbcbf5e889bab458dc0ea8) --- diff --git a/src/cfgparse.c b/src/cfgparse.c index f80a45d5df..393c517981 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 2db55c1e80..729a97a88b 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,