varnishtest "Test the proper interaction between http-reuse and backend in transparent mode"
feature cmd "$HAPROXY_PROGRAM -cc 'feature(TPROXY)'"

# If backend is used with the transparent mode, the connection are considered
# as private and should only be reused for requests of the same session.
# This is similar to the http-reuse never mode

#REQUIRE_VERSION=2.4

feature ignore_unknown_macro

haproxy h1 -conf {
	defaults
		mode http

	listen sender
		bind "fd@${feS}"
		http-request set-header client-id %[req.hdr(client-id)] if { req.hdr(client-id) -m found }
		option transparent
		http-request set-dst-port int(${h1_feR_port})

	listen receiver
		bind "fd@${feR}"
		http-request set-var(sess.client_id) req.hdr(client-id)
		http-request return status 200
		http-after-response set-header http_first_request %[http_first_req]
		http-after-response set-header client-id %[var(sess.client_id)]
} -start

client c1 -connect ${h1_feS_sock} {
	txreq \
	  -hdr "client-id: c1"
	rxresp
	expect resp.http.http_first_request == "1"

	txreq
	rxresp
	expect resp.http.http_first_request == "0"
	expect resp.http.client-id == "c1"

	txreq
	rxresp
	expect resp.http.http_first_request == "0"
	expect resp.http.client-id == "c1"
} -run

client c2 -connect ${h1_feS_sock} {
	txreq \
	  -hdr "client-id: c2"
	rxresp
	expect resp.http.http_first_request == "1"
	expect resp.http.client-id == "c2"

	txreq
	rxresp
	expect resp.http.http_first_request == "0"
	expect resp.http.client-id == "c2"

	txreq
	rxresp
	expect resp.http.http_first_request == "0"
	expect resp.http.client-id == "c2"
} -run

client c3 -connect ${h1_feS_sock} {
	txreq \
	  -hdr "client-id: c3"
	rxresp
	expect resp.http.http_first_request == "1"
	expect resp.http.client-id == "c3"

	txreq
	rxresp
	expect resp.http.http_first_request == "0"
	expect resp.http.client-id == "c3"

	txreq
	rxresp
	expect resp.http.http_first_request == "0"
	expect resp.http.client-id == "c3"
} -run

