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.

This must be backported to 2.0.
This commit is contained in:
Frdric Lcaille 2019-06-20 09:31:04 +02:00 committed by Willy Tarreau
parent 1ae2a88781
commit 9417f4534a

View File

@ -1245,15 +1245,11 @@ int smp_resolve_args(struct proxy *p)
break; break;
case ARGT_TAB: case ARGT_TAB:
if (!arg->data.str.data) { 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", stktname = arg->data.str.area;
cur->file, cur->line, else
cur->arg_pos + 1, conv_pre, conv_ctx, conv_pos, ctx, cur->kw, where, p->id); stktname = px->id;
cfgerr++;
continue;
}
stktname = arg->data.str.area;
t = stktable_find_by_name(stktname); t = stktable_find_by_name(stktname);
if (!t) { 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", ha_alert("parsing [%s:%d] : unable to find table '%s' referenced in arg %d of %s%s%s%s '%s' %s proxy '%s'.\n",