]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[BUG] x-original-to: name was not set in default instance
authorWilly Tarreau <w@1wt.eu>
Mon, 30 Nov 2009 10:50:16 +0000 (11:50 +0100)
committerWilly Tarreau <w@1wt.eu>
Sun, 6 Dec 2009 12:21:03 +0000 (13:21 +0100)
This resulted in an empty header name when option originalto
was declared in a default sections.
(cherry picked from commit b86db34fe00ec91909dbcbf5e889bab458dc0ea8)

src/cfgparse.c
src/proto_http.c

index f80a45d5df34b284f27ebccabdfb588fb87c0dad..393c517981e57ee4d5ee01e352a292c42e48689a 100644 (file)
@@ -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);
index 2db55c1e802b10b5bcbeb51fb10ff153e357570a..729a97a88bb2c36d94ea53dedefeb9439dcfd4eb 100644 (file)
@@ -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,