]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
REG-TESTS: map_redirect: Don't use hdr_dom in ACLs with "-m end" matching method
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 1 Sep 2025 13:37:50 +0000 (15:37 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Mon, 1 Sep 2025 13:45:05 +0000 (15:45 +0200)
hdr_dom() is a alias of "hdr() -m dom". So using it with another explicit
matching method does not work because the matching on the domain will never
be performed. Only the last matching method is used. The scripts was working
by chance because no port was set on host header values.

The script was fixed by using "host_only" converter. In addition, host
header values were changed to have a port now.

reg-tests/http-rules/map_redirect.vtc

index bf58da8ee67fdbed9448b2f5973dfceb5cf0281e..a07b1d56f30ceab1cb59a9a16f863454cc295fe6 100644 (file)
@@ -6,21 +6,21 @@ feature ignore_unknown_macro
 server s1 {
    rxreq
    expect req.method == "GET"
-   expect req.http.host == "test1.example.com"
+   expect req.http.host == "test1.example.com:1234"
    txresp -body "test1 ok"
 } -start
 
 server s2 {
    rxreq
    expect req.method == "GET"
-   expect req.http.host == "test2.example.com"
+   expect req.http.host == "test2.example.com:1234"
    txresp -body "test2 ok"
 } -start
 
 server s3 {
    rxreq
    expect req.method == "GET"
-   expect req.http.host == "test3.example.com"
+   expect req.http.host == "test3.example.com:1234"
    txresp -body "test3 ok"
 } -start
 
@@ -60,10 +60,10 @@ haproxy h1 -conf {
     use_backend %[req.hdr(Host),lower,map_dom(${testdir}/map_redirect-be.map)] if { hdr_dom(Host) -i test1.example.com || hdr_dom(Host) -i test2.example.com }
 
     # use map to select backend with default value(test3_be)
-    use_backend %[req.hdr(Host),lower,map_dom(${testdir}/map_redirect-be.map,test3_be)] if { hdr_dom(Host) -m end -i example.com }
+    use_backend %[req.hdr(Host),lower,map_dom(${testdir}/map_redirect-be.map,test3_be)] if { hdr(Host),host_only -m end -i example.com }
 
     # use map(after del map test1.example.com) default value(test4_be)
-    use_backend %[req.hdr(Host),lower,map_dom(${testdir}/map_redirect-be.map,test4_be)] if { hdr_dom(Host) -m end -i example.invalid }
+    use_backend %[req.hdr(Host),lower,map_dom(${testdir}/map_redirect-be.map,test4_be)] if { hdr(Host),host_only -m end -i example.invalid }
 
     default_backend be1
 
@@ -139,17 +139,17 @@ client c6 -connect ${h1_fe1_sock} {
 
 # Check map backend selection
 client c7 -connect ${h1_fe1_sock} {
-    txreq -hdr "Host: test1.example.com"
+    txreq -hdr "Host: test1.example.com:1234"
     rxresp
     expect resp.status == 200
     expect resp.body == "test1 ok"
 
-    txreq -hdr "Host: test2.example.com"
+    txreq -hdr "Host: test2.example.com:1234"
     rxresp
     expect resp.status == 200
     expect resp.body == "test2 ok"
 
-    txreq -hdr "Host: test3.example.com"
+    txreq -hdr "Host: test3.example.com:1234"
     rxresp
     expect resp.status == 200
     expect resp.body == "test3 ok"