mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-11 14:05:12 +00:00
5dfdd4a630
In this reg test, as the client connection is not supposed to receive any server response, we should try to "rxresp" but we should expect the client connection to be closed by haproxy. This is done replacing "rxresp" by "expect_close". Furthermore since dbb75ee3 vtest commit, calling "rxresp" expects at least to receive a HTTP header as shown by Travis build here: https://travis-ci.com/haproxy/haproxy/jobs/198126488.
65 lines
1.9 KiB
Plaintext
65 lines
1.9 KiB
Plaintext
# commit d02286d
|
|
# BUG/MINOR: log: pin the front connection when front ip/ports are logged
|
|
#
|
|
# Mathias Weiersmueller reported an interesting issue with logs which Lukas
|
|
# diagnosed as dating back from commit 9b061e332 (1.5-dev9). When front
|
|
# connection information (ip, port) are logged in TCP mode and the log is
|
|
# emitted at the end of the connection (eg: because %B or any log tag
|
|
# requiring LW_BYTES is set), the log is emitted after the connection is
|
|
# closed, so the address and ports cannot be retrieved anymore.
|
|
#
|
|
# It could be argued that we'd make a special case of these to immediately
|
|
# retrieve the source and destination addresses from the connection, but it
|
|
# seems cleaner to simply pin the front connection, marking it "tracked" by
|
|
# adding the LW_XPRT flag to mention that we'll need some of these elements
|
|
# at the last moment. Only LW_FRTIP and LW_CLIP are affected. Note that after
|
|
# this change, LW_FRTIP could simply be removed as it's not used anywhere.
|
|
#
|
|
# Note that the problem doesn't happen when using %[src] or %[dst] since
|
|
# all sample expressions set LW_XPRT.
|
|
|
|
#REGTEST_TYPE=bug
|
|
|
|
varnishtest "Wrong ip/port logging"
|
|
feature ignore_unknown_macro
|
|
|
|
server s1 {
|
|
rxreq
|
|
delay 0.02
|
|
} -start
|
|
|
|
syslog Slg_1 -level notice {
|
|
recv
|
|
recv
|
|
recv info
|
|
expect ~ \"dip\":\"${h1_fe_1_addr}\",\"dport\":\"${h1_fe_1_port}.*\"ts\":\"[cC]D\",\"
|
|
} -start
|
|
|
|
haproxy h1 -conf {
|
|
global
|
|
log ${Slg_1_addr}:${Slg_1_port} local0
|
|
|
|
defaults
|
|
log global
|
|
timeout connect 3000
|
|
timeout client 1
|
|
timeout server 10000
|
|
|
|
frontend fe1
|
|
bind "fd@${fe_1}"
|
|
mode tcp
|
|
log-format {\"dip\":\"%fi\",\"dport\":\"%fp\",\"c_ip\":\"%ci\",\"c_port\":\"%cp\",\"fe_name\":\"%ft\",\"be_name\":\"%b\",\"s_name\":\"%s\",\"ts\":\"%ts\",\"bytes_read\":\"%B\"}
|
|
default_backend be_app
|
|
|
|
backend be_app
|
|
server app1 ${s1_addr}:${s1_port}
|
|
} -start
|
|
|
|
client c1 -connect ${h1_fe_1_sock} {
|
|
txreq -url "/"
|
|
expect_close
|
|
} -run
|
|
|
|
syslog Slg_1 -wait
|
|
|