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://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=602a499da5e81d6b4cfe8410f0fc6d53c1e06745;p=haproxy.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 3c0ea8b4e..00537f094 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 aa2d8608f..8d2c176a8 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);