2021-02-10 09:20:26 +00:00
|
|
|
varnishtest "A test to be sure payload is skipped for bodyless responses"
|
|
|
|
feature ignore_unknown_macro
|
|
|
|
|
|
|
|
#REQUIRE_VERSION=2.4
|
|
|
|
|
|
|
|
server s1 {
|
|
|
|
rxreq
|
|
|
|
txresp \
|
|
|
|
-status 200 \
|
|
|
|
-body "skipped data"
|
|
|
|
|
|
|
|
rxreq
|
|
|
|
txresp \
|
|
|
|
-status 200 \
|
|
|
|
-bodylen 20000
|
|
|
|
|
|
|
|
rxreq
|
|
|
|
txresp \
|
|
|
|
-status 200 \
|
|
|
|
-nolen -hdr "Transfer-Encoding: chunked"
|
|
|
|
chunkedlen 15
|
|
|
|
chunkedlen 1024
|
|
|
|
chunkedlen 4048
|
|
|
|
chunkedlen 0
|
|
|
|
|
|
|
|
rxreq
|
|
|
|
txresp \
|
|
|
|
-status 200 \
|
|
|
|
-body "last response"
|
|
|
|
} -repeat 2 -start
|
|
|
|
|
|
|
|
haproxy h1 -conf {
|
2021-05-09 12:41:41 +00:00
|
|
|
global
|
|
|
|
# WT: limit false-positives causing "HTTP header incomplete" due to
|
|
|
|
# idle server connections being randomly used and randomly expiring
|
|
|
|
# under us.
|
|
|
|
tune.idle-pool.shared off
|
|
|
|
|
2021-02-10 09:20:26 +00:00
|
|
|
defaults
|
|
|
|
mode http
|
|
|
|
timeout connect 1s
|
|
|
|
timeout client 1s
|
|
|
|
timeout server 1s
|
|
|
|
|
|
|
|
listen fe1
|
|
|
|
bind "fd@${fe1}"
|
|
|
|
# Rewrite the method to be sure to get the response payload
|
|
|
|
# on the server side
|
|
|
|
http-request set-method GET
|
|
|
|
server s1 ${s1_addr}:${s1_port}
|
|
|
|
|
|
|
|
listen int
|
|
|
|
bind "fd@${int}" proto h2
|
|
|
|
# Rewrite the method to be sure to get the response payload
|
|
|
|
# on the server side
|
|
|
|
http-request set-method GET
|
|
|
|
server s1 ${s1_addr}:${s1_port}
|
|
|
|
#server s1 ${h1_fe1_addr}:${h1_fe1_port}
|
|
|
|
|
|
|
|
listen fe2
|
|
|
|
bind "fd@${fe2}"
|
|
|
|
server s1 ${h1_int_addr}:${h1_int_port} proto h2
|
|
|
|
} -start
|
|
|
|
|
|
|
|
client c1 -connect ${h1_fe1_sock} {
|
|
|
|
txreq \
|
|
|
|
-req "HEAD" \
|
|
|
|
-url "/req1"
|
|
|
|
rxresp
|
|
|
|
expect resp.status == 200
|
|
|
|
expect resp.body == ""
|
|
|
|
|
|
|
|
txreq \
|
|
|
|
-req "HEAD" \
|
|
|
|
-url "/req2"
|
|
|
|
rxresp
|
|
|
|
expect resp.status == 200
|
|
|
|
expect resp.body == ""
|
|
|
|
|
|
|
|
txreq \
|
|
|
|
-req "HEAD" \
|
|
|
|
-url "/req3"
|
|
|
|
rxresp
|
|
|
|
expect resp.status == 200
|
|
|
|
expect resp.body == ""
|
|
|
|
|
|
|
|
# The last one have a body and validate the connection was not closed
|
|
|
|
# unexpectedly and no payload was received for previous requests
|
|
|
|
txreq \
|
|
|
|
-req "GET" \
|
|
|
|
-url "/req4"
|
|
|
|
rxresp
|
|
|
|
expect resp.status == 200
|
|
|
|
expect resp.body == "last response"
|
|
|
|
} -run
|
|
|
|
|
|
|
|
client c2 -connect ${h1_fe2_sock} {
|
|
|
|
txreq \
|
|
|
|
-req "HEAD" \
|
|
|
|
-url "/req1"
|
|
|
|
rxresp
|
|
|
|
expect resp.status == 200
|
|
|
|
expect resp.body == ""
|
|
|
|
|
|
|
|
txreq \
|
|
|
|
-req "HEAD" \
|
|
|
|
-url "/req2"
|
|
|
|
rxresp
|
|
|
|
expect resp.status == 200
|
|
|
|
expect resp.body == ""
|
|
|
|
|
|
|
|
txreq \
|
|
|
|
-req "HEAD" \
|
|
|
|
-url "/req3"
|
|
|
|
rxresp
|
|
|
|
expect resp.status == 200
|
|
|
|
expect resp.body == ""
|
|
|
|
|
|
|
|
# The last one have a body and validate the connection was not closed
|
|
|
|
# unexpectedly and no payload was received for previous requests
|
|
|
|
txreq \
|
|
|
|
-req "GET" \
|
|
|
|
-url "/req4"
|
|
|
|
rxresp
|
|
|
|
expect resp.status == 200
|
|
|
|
expect resp.body == "last response"
|
|
|
|
} -run
|