Hi Fred, On Thu, Jun 20, 2019 at 09:44:51AM +0200, Frederic Lecaille wrote: > In fact it seems I have broken something and missed this case. > Here is a patch which should fix this issue.
Thanks for the patch, it fixes the issue. > From 1575a4bcdb52bbb8604521b6673557c178431deb Mon Sep 17 00:00:00 2001 > From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20L=C3=A9caille?= <[email protected]> > Date: Thu, 20 Jun 2019 09:31:04 +0200 > Subject: [PATCH] BUG/MAJOR: sample: Wrong stick-table name parsing in > "if/unless" ACL condition. > > This bug was introduced by 1b8e68e commit which supposed the stick-table was > always > stored in struct arg at parsing time. This is never the case with the usage of > "if/unless" conditions in stick-table declared as backends. In this case, > this is > the name of the proxy which must be considered as the stick-table name. Tested-by: William Dauchy <[email protected]> > --- > src/sample.c | 12 ++++-------- > 1 file changed, 4 insertions(+), 8 deletions(-) > > diff --git a/src/sample.c b/src/sample.c > index 96102504b..94c605f92 100644 > --- a/src/sample.c > +++ b/src/sample.c > @@ -1245,15 +1245,11 @@ int smp_resolve_args(struct proxy *p) > break; > > case ARGT_TAB: > - if (!arg->data.str.data) { > - ha_alert("parsing [%s:%d] : missing table name > in arg %d of %s%s%s%s '%s' %s proxy '%s'.\n", > - cur->file, cur->line, > - cur->arg_pos + 1, conv_pre, conv_ctx, > conv_pos, ctx, cur->kw, where, p->id); > - cfgerr++; > - continue; > - } > + if (arg->data.str.data) > + stktname = arg->data.str.area; > + else > + stktname = px->id; > > - stktname = arg->data.str.area; > t = stktable_find_by_name(stktname); > if (!t) { > ha_alert("parsing [%s:%d] : unable to find > table '%s' referenced in arg %d of %s%s%s%s '%s' %s proxy '%s'.\n", > -- > 2.11.0 > Best, -- William

