| #commit 271022150d7961b9aa39dbfd88e0c6a4bc48c3ee |
| # BUG/MINOR: map: fix map_regm with backref |
| # |
| # Due to a cascade of get_trash_chunk calls the sample is |
| # corrupted when we want to read it. |
| # |
| # The fix consist to use a temporary chunk to copy the sample |
| # value and use it. |
| |
| varnishtest "map_regm get_trash_chunk test" |
| feature ignore_unknown_macro |
| |
| #REQUIRE_VERSION=1.7 |
| #REGTEST_TYPE=bug |
| |
| syslog S1 -level notice { |
| recv |
| expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Proxy (fe|be)1 started." |
| recv |
| expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Proxy (fe|be)1 started." |
| recv info |
| # not expecting ${h1_pid} with master-worker |
| expect ~ "[^:\\[ ]\\[[[:digit:]]+\\]: .* fe1 be1/s1 [[:digit:]]+/[[:digit:]]+/[[:digit:]]+/[[:digit:]]+/[[:digit:]]+ 200 [[:digit:]]+ - - ---- .* \"GET / HTTP/(1|2)(\\.1)?\"" |
| } -start |
| |
| server s1 { |
| rxreq |
| expect req.method == "GET" |
| expect req.http.x-mapped-from-header == example_AND_org |
| expect req.http.x-mapped-from-var == example_AND_org |
| txresp |
| |
| rxreq |
| expect req.method == "GET" |
| expect req.http.x-mapped-from-header == www.example_AND_org |
| expect req.http.x-mapped-from-var == www.example_AND_org |
| txresp |
| } -start |
| |
| haproxy h1 -conf { |
| global |
| log ${S1_addr}:${S1_port} local0 debug err |
| |
| defaults |
| mode http |
| ${no-htx} option http-use-htx |
| log global |
| option httplog |
| timeout connect 15ms |
| timeout client 20ms |
| timeout server 20ms |
| |
| frontend fe1 |
| bind "fd@${fe1}" |
| # Remove port from Host header |
| http-request replace-value Host '(.*):.*' '\1' |
| # Store host header in variable |
| http-request set-var(txn.host) req.hdr(Host) |
| # This works correctly |
| http-request set-header X-Mapped-From-Header %[req.hdr(Host),map_regm(${testdir}/map_regm_with_backref.map,"unknown")] |
| # This breaks before commit 271022150d7961b9aa39dbfd88e0c6a4bc48c3ee |
| http-request set-header X-Mapped-From-Var %[var(txn.host),map_regm(${testdir}/map_regm_with_backref.map,"unknown")] |
| |
| default_backend be1 |
| |
| backend be1 |
| server s1 ${s1_addr}:${s1_port} |
| } -start |
| |
| client c1 -connect ${h1_fe1_sock} { |
| txreq -hdr "Host: example.org:8443" |
| rxresp |
| expect resp.status == 200 |
| |
| txreq -hdr "Host: www.example.org" |
| rxresp |
| expect resp.status == 200 |
| } -run |
| |