# 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.

varnishtest "Seamless reload issue with abns sockets"
feature ignore_unknown_macro

# abns@ sockets are not available on freebsd
#EXCLUDE_TARGETS=freebsd,osx,generic
#REGTEST_TYPE=bug

haproxy h1 -W -conf {
  global
    stats socket "${tmpdir}/h1/stats" level admin expose-fd listeners

  defaults
    mode http
    ${no-htx} option http-use-htx
    log global
    option httplog
    timeout connect         15ms
    timeout client          20ms
    timeout server          20ms

  listen testme
    bind "fd@${testme}"
    server test_abns_server abns@wpproc1 send-proxy-v2

  frontend test_abns
    bind abns@wpproc1 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

