| #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 |
| |
| 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 /[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 |