bind "${VTC_SOCK_TYPE}+fd@${sv_sf_0r}" name sf_0r ssl crt ${testdir}/common.pem ssl-min-ver "${TLSV}" ssl-max-ver "${TLSV}" allow-0rtt
bind "${VTC_SOCK_TYPE}+fd@${sv_sl_0r}" name sl_0r ssl crt ${testdir}/common.pem ssl-min-ver "${TLSV}" ssl-max-ver "${TLSV}" allow-0rtt no-tls-tickets
+ # expect early-data TLS version supports it and both the client and the listener support it
+ http-request add-header x-expect-early 1 if { int("$ZRTT_SUPP") eq 1 } { ssl_fc_is_resumed } { req.hdr(x-from) -m reg '^cl_0r' } { so_name -m reg '0r$' }
+
# this is the application server behind us
server s1 ${h1_srv_sock}
frontend srv
bind "fd@${srv}"
- http-request return status 200
+ # set txn.test to OK if early-data matches x-expected-early, otherwise KO,
+ # then send it as header "x-early-data-test" in the response.
+ http-request set-var(txn.test) str(OK) if { req.hdr(x-expect-early) 1 } { req.hdr(early-data) 1 }
+ http-request set-var(txn.test) str(OK) if !{ req.hdr(x-expect-early) -m found } !{ req.hdr(early-data) -m found }
+ http-request set-var(txn.test,ifempty) str(KO)
+ http-request return status 200 hdr x-early-data-test %[var(txn.test)]
} -start
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
client cl_1r_sf_1r -connect ${h1_cl_1r_sf_1r_sock} -repeat 10 {
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
client cl_1r_sl_1r -connect ${h1_cl_1r_sl_1r_sock} {
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
client cl_1r_sl_1r -connect ${h1_cl_1r_sl_1r_sock} -repeat 10 {
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
client cl_1r_sf_0r -connect ${h1_cl_1r_sf_0r_sock} -repeat 10 {
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
client cl_1r_sl_0r -connect ${h1_cl_1r_sl_0r_sock} {
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
client cl_1r_sl_0r -connect ${h1_cl_1r_sl_0r_sock} -repeat 10 {
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
# 0r -> 1r
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
client cl_0r_sf_1r -connect ${h1_cl_0r_sf_1r_sock} -repeat 10 {
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
client cl_0r_sl_1r -connect ${h1_cl_0r_sl_1r_sock} {
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
client cl_0r_sl_1r -connect ${h1_cl_0r_sl_1r_sock} -repeat 10 {
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
client cl_0r_sf_0r -connect ${h1_cl_0r_sf_0r_sock} -repeat 10 {
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
client cl_0r_sl_0r -connect ${h1_cl_0r_sl_0r_sock} {
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run
client cl_0r_sl_0r -connect ${h1_cl_0r_sl_0r_sock} -repeat 10 {
rxresp
expect resp.status == 200
expect resp.http.x-early-rcvd-test == OK
+ expect resp.http.x-early-data-test == OK
} -run