| # This config tries to involve the various possible combinations of connection |
| # handshakes, on the accept side and on the connect side. It also produces logs |
| # indicating the handshake time. |
| # |
| # May be tested with tcploop as the server, both for TCP and HTTP mode : |
| # - accept new connection |
| # - pause 100ms |
| # - send what looks like an HTTP response |
| # - wait 500ms and close |
| # |
| # Starting log server (mainly to check timers) : |
| # $ socat udp-recvfrom:5514,fork - |
| # |
| # Starting server : |
| # $ tcploop 8000 L N A W P100 S:"HTTP/1.0 200 OK\r\nConnection: close\r\n\r\n" P500 |
| # |
| # Testing all combinations with server-speaks-first (tcp) : |
| # $ nc 0 8007 |
| # |
| # Testing all combinations with client-speaks-first (tcp) : |
| # $ (printf "GET / HTTP/1.0\r\n\r\n";sleep 1) | nc 0 8007 |
| # |
| # Testing all combinations with client-speaks-first after pause (tcp) : |
| # $ (usleep 0.05 ; printf "GET / HTTP/1.0\r\n\r\n";sleep 1) | nc 0 8007 |
| # |
| # Testing all combinations with client-speaks-first (http) : |
| # $ (printf "GET / HTTP/1.0\r\n\r\n";sleep 1) | nc 0 8017 |
| # |
| # Testing all combinations with client-speaks-first after pause (http) : |
| # $ (usleep 0.05 ; printf "GET / HTTP/1.0\r\n\r\n";sleep 1) | nc 0 8017 |
| # |
| # Same tests must be redone after surrounding connect() in tcp_connect_server() |
| # with fcntl(fd, F_SETFL, 0) and fcntl(fd, F_SETFL, O_NONBLOCK) for sycnhronous |
| # connect(). |
| |
| global |
| stats socket /tmp/sock1 level admin |
| stats timeout 1h |
| ssl-server-verify none |
| tune.ssl.default-dh-param 2048 |
| log 127.0.0.1:5514 local0 debug debug |
| |
| ################################################################# |
| ## TCP instances connect to port 8000 and listen to 8001..8007 |
| ################################################################# |
| defaults TCP |
| timeout client 5s |
| timeout server 4s |
| timeout connect 3s |
| log global |
| log-format "%ci:%cp %ft %b/%s h=%Th/w=%Tw/c=%Tc/t=%Tt %ST %B %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs" |
| |
| # connects to port local 8000 |
| listen tcp-none-in-none-out |
| bind :8001 |
| server s 127.0.0.1:8000 |
| |
| # takes ssl+pp on input, nothing on output |
| listen tcp-sslpp-in-none-out |
| bind :8002 ssl crt rsa2048.pem accept-proxy |
| server s 127.0.0.1:8001 |
| |
| # takes nothing on input, sends ssl+pp |
| listen tcp-none-in-sslpp-out |
| bind :8003 |
| server s 127.0.0.1:8002 ssl send-proxy-v2 |
| |
| # takes pp on input, nothing on output |
| listen tcp-pp-in-none-out |
| bind :8004 accept-proxy |
| server s 127.0.0.1:8003 |
| |
| # takes nothing on input, sends pp |
| listen tcp-none-in-pp-out |
| bind :8005 |
| server s 127.0.0.1:8004 send-proxy-v2 |
| |
| # takes ssl on input, sends nothing |
| listen tcp-ssl-in-none-out |
| bind :8006 ssl crt rsa2048.pem |
| server s 127.0.0.1:8005 |
| |
| # takes nothing on input, sends ssl |
| listen tcp-none-in-ssl-out |
| bind :8007 |
| server s 127.0.0.1:8006 ssl |
| |
| |
| ################################################################# |
| ## HTTP instances also connect to port 8000 but they listen to |
| ## 8011..8017 |
| ################################################################# |
| |
| defaults HTTP |
| timeout client 5s |
| timeout server 4s |
| timeout connect 3s |
| mode http |
| log global |
| log-format "%ci:%cp [%tr] %ft %b/%s h=%Th/i=%Ti/R=%TR/w=%Tw/c=%Tc/r=%Tr/a=%Ta/t=%Tt %ST %B %CC %CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r" |
| |
| # connects to port local 8000 |
| listen http-none-in-none-out |
| bind :8011 |
| server s 127.0.0.1:8000 |
| |
| # takes ssl+pp on input, nothing on output |
| listen http-sslpp-in-none-out |
| bind :8012 ssl crt rsa2048.pem accept-proxy |
| server s 127.0.0.1:8011 |
| |
| # takes nothing on input, sends ssl+pp |
| listen http-none-in-sslpp-out |
| bind :8013 |
| server s 127.0.0.1:8012 ssl send-proxy-v2 |
| |
| # takes pp on input, nothing on output |
| listen http-pp-in-none-out |
| bind :8014 accept-proxy |
| server s 127.0.0.1:8013 |
| |
| # takes nothing on input, sends pp |
| listen http-none-in-pp-out |
| bind :8015 |
| server s 127.0.0.1:8014 send-proxy-v2 |
| |
| # takes ssl on input, sends nothing |
| listen http-ssl-in-none-out |
| bind :8016 ssl crt rsa2048.pem |
| server s 127.0.0.1:8015 |
| |
| # takes nothing on input, sends ssl |
| listen http-none-in-ssl-out |
| bind :8017 |
| server s 127.0.0.1:8016 ssl |