mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-23 04:42:28 +00:00
a1af38b74e
Since commit f92afb732
("MEDIUM: cfgparse: Emit hard error on truncated lines")
we now produce parsing errors on truncated lines, in an effort to clean
up dangerous or broken config files. And it turns out that one of our own
regression tests was suffering from this, as diagnosed by William and Tim.
The cause is the leading spaces in front of "} -start" that vtest makes
part of the output file, so the file finishes with a partial line made
of spaces.
74 lines
4.6 KiB
Plaintext
74 lines
4.6 KiB
Plaintext
# commit 3e60b11
|
|
# BUG/MEDIUM: stick-tables: Decrement ref_cnt in table_* converters
|
|
#
|
|
# When using table_* converters ref_cnt was incremented
|
|
# and never decremented causing entries to not expire.
|
|
#
|
|
# The root cause appears to be that stktable_lookup_key()
|
|
# was called within all sample_conv_table_* functions which was
|
|
# incrementing ref_cnt and not decrementing after completion.
|
|
#
|
|
# Added stktable_release() to the end of each sample_conv_table_*
|
|
# function and reworked the end logic to ensure that ref_cnt is
|
|
# always decremented after use.
|
|
#
|
|
# This should be backported to 1.8
|
|
|
|
#REGTEST_TYPE=bug
|
|
|
|
varnishtest "stick-tables: Test expirations when used with table_*"
|
|
|
|
# As some macros for haproxy are used in this file, this line is mandatory.
|
|
feature ignore_unknown_macro
|
|
|
|
# Do nothing.
|
|
server s1 {
|
|
} -start
|
|
|
|
haproxy h1 -conf {
|
|
# Configuration file of 'h1' haproxy instance.
|
|
defaults
|
|
mode http
|
|
${no-htx} option http-use-htx
|
|
timeout connect 5s
|
|
timeout server 30s
|
|
timeout client 30s
|
|
|
|
frontend http1
|
|
bind "fd@${my_frontend_fd}"
|
|
stick-table size 1k expire 1ms type ip store conn_rate(10s),http_req_cnt,http_err_cnt,http_req_rate(10s),http_err_rate(10s),gpc0,gpc0_rate(10s),gpt0
|
|
http-request track-sc0 req.hdr(X-Forwarded-For)
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_http_req_cnt(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_trackers(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),in_table(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_bytes_in_rate(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_bytes_out_rate(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_conn_cnt(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_conn_cur(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_conn_rate(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_gpt0(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_gpc0(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_gpc0_rate(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_http_err_cnt(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_http_err_rate(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_http_req_cnt(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_http_req_rate(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_kbytes_in(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_kbytes_out(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_server_id(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_sess_cnt(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_sess_rate(http1) -m int lt 0 }
|
|
http-request redirect location https://${s1_addr}:${s1_port}/ if { req.hdr(X-Forwarded-For),table_trackers(http1) -m int lt 0 }
|
|
} -start
|
|
|
|
client c1 -connect ${h1_my_frontend_fd_sock} {
|
|
txreq -url "/" -hdr "X-Forwarded-For: 127.0.0.1"
|
|
rxresp
|
|
expect resp.status == 503
|
|
} -run
|
|
|
|
haproxy h1 -cli {
|
|
send "show table http1"
|
|
expect ~ "table: http1, type: ip, size:1024, used:(0|1\\n0x[0-9a-f]*: key=127\\.0\\.0\\.1 use=0 exp=[0-9]* gpt0=0 gpc0=0 gpc0_rate\\(10000\\)=0 conn_rate\\(10000\\)=1 http_req_cnt=1 http_req_rate\\(10000\\)=1 http_err_cnt=0 http_err_rate\\(10000\\)=0)\\n$"
|
|
} -wait
|