mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 15:47:01 +02:00
BUG/MEDIUM: acl: fix regression introduced by latest converters support
Since commit 348971e
(MEDIUM: acl: use the fetch syntax
'fetch(args),conv(),conv()' into the ACL keyword), ACLs wait on input
that may change. This is visible in the configuration below :
tcp-request inspect-delay 3s
tcp-request content accept if REQ_CONTENT
Nothing will pass before the end of the timer. This is because
historically, sample_process() was dedicated to stick tables where
it was absolutely necessary to wait for a stable sample. Now samples
are used by many other things and we can't afford this. So let's move
this check to the stick tables after the call to sample_process()
instead.
This is post-1.5-dev19 work, no backport is required.
This commit is contained in:
parent
26f4a04744
commit
67ff7e0af3
@ -839,9 +839,6 @@ struct sample *sample_process(struct proxy *px, struct session *l4, void *l7,
|
|||||||
if (!expr->fetch->process(px, l4, l7, opt, expr->arg_p, p, expr->fetch->kw))
|
if (!expr->fetch->process(px, l4, l7, opt, expr->arg_p, p, expr->fetch->kw))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if ((p->flags & SMP_F_MAY_CHANGE) && !(opt & SMP_OPT_FINAL))
|
|
||||||
return NULL; /* we can only use stable samples */
|
|
||||||
|
|
||||||
list_for_each_entry(conv_expr, &expr->conv_exprs, list) {
|
list_for_each_entry(conv_expr, &expr->conv_exprs, list) {
|
||||||
/* we want to ensure that p->type can be casted into
|
/* we want to ensure that p->type can be casted into
|
||||||
* conv_expr->conv->in_type. We have 3 possibilities :
|
* conv_expr->conv->in_type. We have 3 possibilities :
|
||||||
|
@ -615,6 +615,9 @@ struct stktable_key *stktable_fetch_key(struct stktable *t, struct proxy *px, st
|
|||||||
if (!smp)
|
if (!smp)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
if ((smp->flags & SMP_F_MAY_CHANGE) && !(opt & SMP_OPT_FINAL))
|
||||||
|
return NULL; /* we can only use stable samples */
|
||||||
|
|
||||||
if (!sample_to_key[smp->type][t->type])
|
if (!sample_to_key[smp->type][t->type])
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user