]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MINOR: stream: init variables when the list is empty
authorJerome Magnin <jmagnin@haproxy.com>
Sat, 9 Nov 2019 17:00:47 +0000 (18:00 +0100)
committerWilly Tarreau <w@1wt.eu>
Sat, 9 Nov 2019 17:25:41 +0000 (18:25 +0100)
commit2f44e8843a553ef0f9c53c9b27899727de097777
treeaf56810c041495ce85b7b40c7e70aedb38479aaf
parent7297429fa59da935f85d48b4eb4d85458a5db878
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.
src/stream.c