# 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 ################################################################# ## stats instance (8181) ################################################################# listen stats bind :8181 timeout client 5s timeout server 4s timeout connect 3s mode http stats uri / ################################################################# ## 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 check # 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 check # takes nothing on input, sends ssl+pp listen tcp-none-in-sslpp-out bind :8003 server s 127.0.0.1:8002 check 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 check # takes nothing on input, sends pp listen tcp-none-in-pp-out bind :8005 server s 127.0.0.1:8004 check 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 check # takes nothing on input, sends ssl listen tcp-none-in-ssl-out bind :8007 server s 127.0.0.1:8006 check 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 check # 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 check # takes nothing on input, sends ssl+pp listen http-none-in-sslpp-out bind :8013 server s 127.0.0.1:8012 check 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 check # takes nothing on input, sends pp listen http-none-in-pp-out bind :8015 server s 127.0.0.1:8014 check 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 check # takes nothing on input, sends ssl listen http-none-in-ssl-out bind :8017 server s 127.0.0.1:8016 check ssl