2019-12-11 15:26:11 +00:00
|
|
|
varnishtest "cannot add the HTX EOM block because the buffer is full"
|
|
|
|
feature ignore_unknown_macro
|
|
|
|
|
|
|
|
#REQUIRE_VERSION=2.2
|
|
|
|
#REGTEST_TYPE=devel
|
|
|
|
|
|
|
|
# This test checks that an HTTP message is properly processed when we failed to
|
|
|
|
# add the HTX EOM block in an HTX message during the parsing because the buffer
|
|
|
|
# is full. Some space must be released in the buffer to make it possible. This
|
|
|
|
# requires an extra pass in the H1 multiplexer. Here, we must be sure the mux is
|
|
|
|
# called while there is no more incoming data.
|
|
|
|
|
|
|
|
server s1 {
|
|
|
|
rxreq
|
|
|
|
expect req.bodylen == 15200
|
|
|
|
txresp -bodylen 15220
|
|
|
|
} -start
|
|
|
|
|
|
|
|
syslog S -level info {
|
|
|
|
recv
|
|
|
|
expect ~ "[^:\\[ ]*\\[[0-9]*\\]: .* .* fe1 be1/srv1 [0-9]*/[0-9]*/[0-9]*/[0-9]*/[0-9]* 200 .* - - ---- .* .* \"GET / HTTP/1\\.1\""
|
|
|
|
} -start
|
|
|
|
|
|
|
|
haproxy h1 -conf {
|
|
|
|
global
|
|
|
|
tune.bufsize 16384
|
|
|
|
tune.maxrewrite 1024
|
|
|
|
|
|
|
|
defaults
|
|
|
|
mode http
|
|
|
|
timeout client 100ms
|
|
|
|
timeout server 1s
|
|
|
|
timeout connect 1s
|
|
|
|
|
|
|
|
backend be1
|
|
|
|
tcp-response inspect-delay 100ms
|
|
|
|
tcp-response content accept if { res.len gt 15272 }
|
|
|
|
tcp-response content reject
|
|
|
|
|
2020-01-08 13:23:40 +00:00
|
|
|
http-response deny if { internal.htx.has_eom -m bool } or { internal.htx.free_data gt 1024 }
|
2019-12-11 15:26:11 +00:00
|
|
|
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}"
|
2020-01-08 13:23:40 +00:00
|
|
|
http-request deny if ! { req.body_len eq 15200 } or { internal.htx.has_eom -m bool } or { internal.htx.free_data gt 1024 }
|
2019-12-11 15:26:11 +00:00
|
|
|
use_backend be1
|
|
|
|
} -start
|
|
|
|
|
|
|
|
haproxy h1 -cli {
|
|
|
|
send "trace h1 sink stderr; trace h1 level developer; trace h1 verbosity complete; trace h1 start now"
|
|
|
|
}
|
|
|
|
|
|
|
|
client c1 -connect ${h1_fe1_sock} {
|
|
|
|
txreq -bodylen 15200
|
|
|
|
rxresp
|
|
|
|
expect resp.status == 200
|
|
|
|
expect resp.bodylen == 15220
|
|
|
|
} -run
|