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.
This commit is contained in:
Willy Tarreau 2019-01-14 16:29:52 +01:00
parent 089eaa0ba7
commit 602a499da5
2 changed files with 6 additions and 1 deletions

View file

@ -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")) {

View file

@ -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);