mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-25 07:41:36 +02:00
BUG/MINOR: stream: init variables when the list is empty
We need to call vars_init() when the list is empty otherwise we can't use variables in the response scope. This regression was introduced by cda7f3f5 (MINOR: stream: don't prune variables if the list is empty). The following config reproduces the issue: defaults mode http frontend in bind *:11223 http-request set-var(req.foo) str("foo") if { path /bar } http-request set-header bar %[var(req.foo)] if { var(req.foo) -m found } http-response set-var(res.bar) str("bar") http-response set-header foo %[var(res.bar)] if { var(res.bar) -m found } use_backend out backend out server s1 127.0.0.1:11224 listen back bind *:11224 http-request deny deny_status 200 > GET /ba HTTP/1.1 > Host: localhost:11223 > User-Agent: curl/7.66.0 > Accept: */* > < HTTP/1.0 200 OK < Cache-Control: no-cache < Content-Type: text/html > GET /bar HTTP/1.1 > Host: localhost:11223 > User-Agent: curl/7.66.0 > Accept: */* > < HTTP/1.0 200 OK < Cache-Control: no-cache < Content-Type: text/html < foo: bar This must be backported as far as 1.9.
This commit is contained in:
parent
7297429fa5
commit
2f44e8843a
@ -2581,10 +2581,9 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
|
||||
if (si_state_in(si_b->state, SI_SB_REQ|SI_SB_QUE|SI_SB_TAR|SI_SB_ASS)) {
|
||||
/* prune the request variables and swap to the response variables. */
|
||||
if (s->vars_reqres.scope != SCOPE_RES) {
|
||||
if (!LIST_ISEMPTY(&s->vars_reqres.head)) {
|
||||
if (!LIST_ISEMPTY(&s->vars_reqres.head))
|
||||
vars_prune(&s->vars_reqres, s->sess, s);
|
||||
vars_init(&s->vars_reqres, SCOPE_RES);
|
||||
}
|
||||
vars_init(&s->vars_reqres, SCOPE_RES);
|
||||
}
|
||||
|
||||
do {
|
||||
|
Loading…
x
Reference in New Issue
Block a user