varnishtest "Test if-none param for the forwardfor option" feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.6-dev0)'" # This config tests the if-none parameter for the HTTP forwardfor option. feature ignore_unknown_macro haproxy h1 -conf { global # WT: limit false-positives causing "HTTP header incomplete" due to # idle server connections being randomly used and randomly expiring # under us. tune.idle-pool.shared off defaults mode http timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" timeout client "${HAPROXY_TEST_TIMEOUT-5s}" timeout server "${HAPROXY_TEST_TIMEOUT-5s}" frontend none bind "fd@${none}" http-request set-src hdr(x-src) option forwardfor if-none use_backend be1 if { path /req1 } use_backend be2 if { path /req2 } use_backend be3 if { path /req3 } frontend normal bind "fd@${normal}" http-request set-src hdr(x-src) option forwardfor use_backend be1 if { path /req1 } use_backend be2 if { path /req2 } frontend fe2 bind "fd@${fe2}" http-request return status 200 hdr x-ff "%[req.fhdr_cnt(x-forwarded-for)]" backend be1 option forwardfor server s1 ${h1_fe2_addr}:${h1_fe2_port} backend be2 option forwardfor if-none server s1 ${h1_fe2_addr}:${h1_fe2_port} backend be3 server s1 ${h1_fe2_addr}:${h1_fe2_port} } -start client c1 -connect ${h1_none_sock} { txreq -req GET -url /req1 \ -hdr "x-src: 10.0.0.128" \ -hdr "x-forwarded-for: 127.0.0.1" rxresp expect resp.status == 200 expect resp.http.x-ff == 2 txreq -req GET -url /req2 \ -hdr "x-src: 10.0.0.128" \ -hdr "x-forwarded-for: 127.0.0.1" rxresp expect resp.status == 200 expect resp.http.x-ff == 1 txreq -req GET -url /req2 \ -hdr "x-src: 10.0.0.128" rxresp expect resp.status == 200 expect resp.http.x-ff == 1 txreq -req GET -url /req3 \ -hdr "x-src: 10.0.0.128" \ -hdr "x-forwarded-for: 127.0.0.1" rxresp expect resp.status == 200 expect resp.http.x-ff == 1 } -run client c1 -connect ${h1_normal_sock} { txreq -req GET -url /req1 \ -hdr "x-src: 10.0.0.128" \ -hdr "x-forwarded-for: 127.0.0.1" rxresp expect resp.status == 200 expect resp.http.x-ff == 2 txreq -req GET -url /req2 \ -hdr "x-src: 10.0.0.128" \ -hdr "x-forwarded-for: 127.0.0.1" rxresp expect resp.status == 200 expect resp.http.x-ff == 2 } -run