]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
REGTESTS: cache: Use rxresphdrs to only get headers for 304 responses
authorChristopher Faulet <cfaulet@haproxy.com>
Wed, 22 Feb 2023 15:12:43 +0000 (16:12 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 22 Feb 2023 15:12:45 +0000 (16:12 +0100)
304 responses contains "Content-length" or "Transfer-encoding"
headers. rxresp action expects to get a payload in this case, even if 304
reponses must not have any payload. A workaround was added to remove these
headers from the 304 responses. However, a better solution is to only get
the response headers from clients using rxresphdrs action.

If a payload is erroneously added in these reponses, the scripts will fail
the same way. So it is safe.

reg-tests/cache/if-modified-since.vtc
reg-tests/cache/if-none-match.vtc

index a49e4732a4a51aef73c878a3743015dfd3aa636c..1fd9a931a0eadfb30c2bd8eed566f99b5f67990b 100644 (file)
@@ -61,10 +61,6 @@ haproxy h1 -conf {
                server www ${s1_addr}:${s1_port}
                http-response cache-store my_cache
 
-               # Remove Transfer-Encoding header because of a vtest issue with
-               # 304-Not-Modified responses
-               http-after-response del-header transfer-encoding if { status eq 304 }
-
        cache my_cache
                total-max-size 3
                max-age 20
@@ -114,41 +110,35 @@ client c1 -connect ${h1_fe_sock} {
        # "Last-Modified" version
        txreq -url "/last_modified" \
               -hdr "If-Modified-Since: Thu, 15 Oct 2020 22:23:24 GMT"
-       rxresp
+       rxresphdrs
        expect resp.status == 304
-       expect resp.bodylen == 0
        # "Date" version
        txreq -url "/date" \
               -hdr "If-Modified-Since: Thu, 22 Oct 2020 16:51:12 GMT"
-       rxresp
+       rxresphdrs
        expect resp.status == 304
-       expect resp.bodylen == 0
        # "Last-Modified" and "Date" version
        txreq -url "/last_modified_and_date" \
               -hdr "If-Modified-Since: Thu, 15 Oct 2020 16:51:12 GMT"
-       rxresp
+       rxresphdrs
        expect resp.status == 304
-       expect resp.bodylen == 0
 
 
        # Later date
        # "Last-Modified" version
        txreq -url "/last_modified" \
               -hdr "If-Modified-Since: Thu, 22 Oct 2020 23:00:00 GMT"
-       rxresp
+       rxresphdrs
        expect resp.status == 304
-       expect resp.bodylen == 0
        # "Date" version
        txreq -url "/date" \
               -hdr "If-Modified-Since: Thu, 22 Oct 2020 23:00:00 GMT"
-       rxresp
+       rxresphdrs
        expect resp.status == 304
-       expect resp.bodylen == 0
        # "Last-Modified" and "Date" version
        txreq -url "/last_modified_and_date" \
               -hdr "If-Modified-Since: Thu, 22 Oct 2020 23:00:00 GMT"
-       rxresp
+       rxresphdrs
        expect resp.status == 304
-       expect resp.bodylen == 0
 
 } -run
index ff90ad4223923e1ad08989ea4a04d3e6aadacfa3..3dcaec57c73381d215b53487c47d3b98559e18b8 100644 (file)
@@ -46,10 +46,6 @@ haproxy h1 -conf {
                server www ${s1_addr}:${s1_port}
                http-response cache-store my_cache
 
-               # Remove Transfer-Encoding header because of a vtest issue with
-               # 304-Not-Modified responses
-               http-after-response del-header transfer-encoding if { status eq 304 }
-
        cache my_cache
                total-max-size 3
                max-age 20
@@ -68,15 +64,15 @@ client c1 -connect ${h1_fe_sock} {
        expect resp.bodylen == 609
        txreq \
                -hdr "if-none-match: *"
-       rxresp
+       rxresphdrs
        expect resp.status == 304
        txreq \
                -hdr "if-none-match: \"etag\""
-       rxresp
+       rxresphdrs
        expect resp.status == 304
        txreq \
                -hdr "if-none-match: W/\"etag\""
-       rxresp
+       rxresphdrs
        expect resp.status == 304
 } -run
 
@@ -88,6 +84,6 @@ client c2 -connect ${h1_fe_sock} {
        expect resp.bodylen == 609
        txreq \
                -hdr "if-none-match: W/\"wrong_etag\", W/\"etag\""
-       rxresp
+       rxresphdrs
        expect resp.status == 304
 } -run