From: Willy Tarreau Date: Mon, 14 Jan 2019 15:29:52 +0000 (+0100) Subject: BUG/MINOR: backend: balance uri specific options were lost across defaults X-Git-Tag: v2.0-dev1~212 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=602a499da5e81d6b4cfe8410f0fc6d53c1e06745;p=thirdparty%2Fhaproxy.git BUG/MINOR: backend: balance uri specific options were lost across defaults The "balance uri" options "whole", "len" and "depth" were not properly inherited from the defaults sections. In addition, "whole" and "len" were not even reset when parsing "uri", meaning that 2 subsequent "balance uri" statements would not have the expected effect as the options from the first one would remain for the second one. This may be backported to all maintained versions. --- diff --git a/src/backend.c b/src/backend.c index 3c0ea8b4e8..00537f094b 100644 --- a/src/backend.c +++ b/src/backend.c @@ -1734,6 +1734,8 @@ int backend_parse_balance(const char **args, char **err, struct proxy *curproxy) curproxy->lbprm.algo |= BE_LB_ALGO_UH; curproxy->uri_whole = 0; + curproxy->uri_len_limit = 0; + curproxy->uri_dirs_depth1 = 0; while (*args[arg]) { if (!strcmp(args[arg], "len")) { diff --git a/src/cfgparse-listen.c b/src/cfgparse-listen.c index aa2d8608f4..8d2c176a89 100644 --- a/src/cfgparse-listen.c +++ b/src/cfgparse-listen.c @@ -469,7 +469,10 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm) if (defproxy.url_param_name) curproxy->url_param_name = strdup(defproxy.url_param_name); - curproxy->url_param_len = defproxy.url_param_len; + curproxy->url_param_len = defproxy.url_param_len; + curproxy->uri_whole = defproxy.uri_whole; + curproxy->uri_len_limit = defproxy.uri_len_limit; + curproxy->uri_dirs_depth1 = defproxy.uri_dirs_depth1; if (defproxy.hh_name) curproxy->hh_name = strdup(defproxy.hh_name);