mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-16 08:24:42 +00:00
4137889911
As indicated in issue #907 it very frequently fails on FreeBSD, and looking at it, it's broken in multiple ways. It relies on log ordering between two layers, the first one being allowed to support h2. Given that on FreeBSD it usually ends up in timeouts, it's very likely that for some reason one frontend logs before the other one or that curl uses h2 instead of h1 there, and that the log instance waits forever for its lines. Usually it works fine when run locally though, so let's not remove it and mark it as broken instead so that it can still be used when relevant.
65 lines
1.8 KiB
Plaintext
65 lines
1.8 KiB
Plaintext
#commit b406b87
|
|
# BUG/MEDIUM: connection: don't store recv() result into trash.data
|
|
#
|
|
# Cyril Bonté discovered that the proxy protocol randomly fails since
|
|
# commit 843b7cb ("MEDIUM: chunks: make the chunk struct's fields match
|
|
# the buffer struct"). This is because we used to store recv()'s return
|
|
# code into trash.data which is now unsigned, so it never compares as
|
|
# negative against 0. Let's clean this up and test the result itself
|
|
# without storing it first.
|
|
|
|
varnishtest "PROXY protocol random failures"
|
|
#REQUIRE_OPTIONS=OPENSSL
|
|
|
|
feature ignore_unknown_macro
|
|
|
|
#REGTEST_TYPE=broken
|
|
|
|
syslog Slog_1 -repeat 8 -level info {
|
|
recv
|
|
expect ~ "Connect from .* to ${h1_ssl_addr}:${h1_ssl_port}"
|
|
recv
|
|
expect ~ "ssl-offload-http/http .* \"POST (https://.*:${h1_ssl_port})?/[1-8] HTTP/(2\\.0|1\\.1)\""
|
|
} -start
|
|
|
|
haproxy h1 -conf {
|
|
global
|
|
nbproc 4
|
|
tune.ssl.default-dh-param 2048
|
|
stats bind-process 1
|
|
log ${Slog_1_addr}:${Slog_1_port} len 2048 local0 debug err
|
|
|
|
defaults
|
|
mode http
|
|
${no-htx} option http-use-htx
|
|
timeout client 1s
|
|
timeout server 1s
|
|
timeout connect 1s
|
|
log global
|
|
|
|
listen http
|
|
bind-process 1
|
|
bind unix@"${tmpdir}/http.socket" accept-proxy name ssl-offload-http
|
|
option forwardfor
|
|
|
|
listen ssl-offload-http
|
|
option httplog
|
|
bind-process 2-4
|
|
bind "fd@${ssl}" ssl crt ${testdir}/common.pem ssl no-sslv3 alpn h2,http/1.1
|
|
server http unix@"${tmpdir}/http.socket" send-proxy
|
|
} -start
|
|
|
|
|
|
shell {
|
|
HOST=${h1_ssl_addr}
|
|
if [ "$HOST" = "::1" ] ; then
|
|
HOST="\[::1\]"
|
|
fi
|
|
for i in 1 2 3 4 5 6 7 8 ; do
|
|
urls="$urls https://$HOST:${h1_ssl_port}/$i"
|
|
done
|
|
curl -i -k -d 'x=x' $urls & wait $!
|
|
}
|
|
|
|
syslog Slog_1 -wait
|