varnishtest "A test for http-request-buffer option"
feature ignore_unknown_macro

#REQUIRE_VERSION=1.6

# This test checks HTTP request buffering feature.
# We run one server s1 which can serve only one client (no -repeat argument here).
# c1 client uses a malformed request which is not transferred to s1 server
# thanks to "http-buffer-request". If this was the case, c2 client
# could not connect to s1 server and this would lead to make this test fail.

server s1 {
	rxreq
	expect req.bodylen == 257
	txresp

	accept

	rxreq
	expect req.bodylen == 2
	txresp
} -start

syslog S -level info {
	recv
	expect ~ "[^:\\[ ]*\\[[0-9]*\\]: .* .* fe1 fe1/<NOSRV> .* 408 .* - - cD-- .* .* \"GET /this-is-a-long-url-this-is-a-long-url-this-is-a-long-url-this-is-a-long-url-this-is-a-long-url-this-is-a-long-url-this-is-a-long-url HTTP/1\\.1\""
	recv
	expect ~ "[^:\\[ ]*\\[[0-9]*\\]: .* .* fe1 be1/srv1 [0-9]*/[0-9]*/[0-9]*/[0-9]*/[0-9]* 200 .* - - ---- .* .* \"GET / HTTP/1\\.1\""
	recv
	expect ~ "[^:\\[ ]*\\[[0-9]*\\]: .* .* fe1 be1/srv1 [0-9]*/[0-9]*/[0-9]*/[0-9]*/[0-9]* 200 .* - - ---- .* .* \"POST /1 HTTP/1\\.1\""
	recv
	expect ~ "[^:\\[ ]*\\[[0-9]*\\]: .* .* fe1 be1/<NOSRV> [0-9]*/-1/-1/-1/[0-9]* -1 .* - - CR-- .* .* \"POST /2 HTTP/1\\.1\""
} -start

haproxy h1 -conf {
	defaults
		mode http
		${no-htx} option http-use-htx
		timeout client  100ms
		timeout server  1s
		timeout connect 1s

	backend be1
		server srv1 ${s1_addr}:${s1_port}

	frontend fe1
		option httplog
		option http-buffer-request
		log ${S_addr}:${S_port} local0 debug err
		bind "fd@${fe1}"
		use_backend be1
} -start

# 1 byte of the payload is missing.
#   ==> The request must timed out with a 408 response
client c1 -connect ${h1_fe1_sock} {
	send "GET"
	send " "
	send "/this-is-a-long-url"
	send "-this-is-a-long-url"
	send "-this-is-a-long-url"
	send "-this-is-a-long-url"
	send "-this-is-a-long-url"
	send "-this-is-a-long-url"
	send "-this-is-a-long-url"
	send " HTT"
	send "P/1.1"
	send "\r"
	send "\n"
	send "Content-Length: 209\r\n\r\n"
	send "abcdefghijklmnopqrstuvwxyz"
	send "abcdefghijklmnopqrstuvwxyz"
	send "abcdefghijklmnopqrstuvwxyz"
	send "abcdefghijklmnopqrstuvwxyz"
	send "abcdefghijklmnopqrstuvwxyz"
	send "abcdefghijklmnopqrstuvwxyz"
	send "abcdefghijklmnopqrstuvwxyz"
	send "abcdefghijklmnopqrstuvwxyz"
	rxresp
	expect resp.status == 408
} -run

# Payload is fully sent
#   ==> Request must be sent to the server. A 200 must be received
client c2 -connect ${h1_fe1_sock} {
	txreq -bodylen 257
	rxresp
	expect resp.status == 200
} -run

# Payload is fully sent in 2 steps (with a small delay, smaller than the client
# timeout) and splitted on a chunk size.
#   ==> Request must be sent to the server. A 200 must be received
client c3 -connect ${h1_fe1_sock} {
	send "POST /1  HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n1\r\n1\r\n1"
	delay 0.01
	send "\r\n1\r\n0\r\n\r\n"
	rxresp
	expect resp.status == 200
} -run

# Last CRLF of the request payload is missing but payload is sent in 2 steps
# (with a small delay, smaller than the client timeout) and splitted on a chunk
# size. The client aborts before sending the last CRLF.
#   ==> Request must be handled as an error with 'CR--' termination state.
client c4 -connect ${h1_fe1_sock} {
	send "POST /2  HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n1\r\n1\r\n1"
	delay 0.01
	send "\r\n1\r\n0\r\n"
} -run

syslog S -wait
