From 602a499da5e81d6b4cfe8410f0fc6d53c1e06745 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 14 Jan 2019 16:29:52 +0100 Subject: [PATCH] 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. --- src/backend.c | 2 ++ src/cfgparse-listen.c | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) 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);