| # commit b4dd15b |
| # BUG/MINOR: unix: Make sure we can transfer abns sockets on seamless reload. |
| # |
| # When checking if a socket we got from the parent is suitable for a listener, |
| # we just checked that the path matched sockname.tmp, however this is |
| # unsuitable for abns sockets, where we don't have to create a temporary |
| # file and rename it later. |
| # To detect that, check that the first character of the sun_path is 0 for |
| # both, and if so, that &sun_path[1] is the same too. |
| # |
| # Note: there are some tricks here. One of them is that we must not bind the |
| # same abns address to multiple processes that may run in parallel. Since |
| # vtest cannot provide abns sockets, we're instead concatenating the number |
| # of the listening port that vtest allocated for another frontend to the abns |
| # path, which guarantees to make them unique in the system. |
| |
| varnishtest "Seamless reload issue with abns sockets" |
| feature ignore_unknown_macro |
| |
| # abns@ sockets are not available on freebsd |
| #EXCLUDE_TARGETS=freebsd,osx,generic |
| #REQUIRE_VERSION=1.8 |
| #REGTEST_TYPE=broken |
| |
| haproxy h1 -W -conf { |
| global |
| stats socket "${tmpdir}/h1/stats" level admin expose-fd listeners |
| |
| defaults |
| mode http |
| log global |
| option httplog |
| timeout connect 1s |
| timeout client 1s |
| timeout server 1s |
| |
| listen testme |
| bind "fd@${testme}" |
| server test_abns_server abns@wpproc1_${h1_testme_port} send-proxy-v2 |
| |
| frontend test_abns |
| bind abns@wpproc1_${h1_testme_port} accept-proxy |
| http-request deny deny_status 200 |
| } -start |
| |
| shell { |
| kill -USR2 $(cat "${tmpdir}/h1/pid") |
| } |
| |
| client c1 -connect ${h1_testme_sock} { |
| txreq -url "/" |
| rxresp |
| } -repeat 50 -run |
| |