Commit fb73130b authored by Dag Haavi Finstad's avatar Dag Haavi Finstad Committed by Dridi Boukelmoune

h2: Ensure highest_stream is consistent also on Upgrade: h2c

parent 2a95538b
......@@ -287,6 +287,8 @@ h2_ou_session(struct worker *wrk, struct h2_sess *h2,
/* Start req thread */
r2 = h2_new_req(h2, 1, req);
AZ(h2->highest_stream);
h2->highest_stream = r2->stream;
req->transport = &HTTP2_transport;
assert(req->req_step == R_STP_TRANSPORT);
req->task->func = h2_do_req;
......
varnishtest "H1->H2 Upgrade"
barrier b1 cond 2
barrier b1 cond 2 -cyclic
server s1 {
rxreq
......@@ -37,6 +37,11 @@ server s1 {
expect req.http.host == foo.bar
barrier b1 sync
txresp -status 402 -bodylen 11
rxreq
expect req.url == /upgrade3
barrier b1 sync
txresp -status 200
} -start
varnish v1 -vsl_catchup
......@@ -156,3 +161,37 @@ varnish v1 -expect MEMPOOL.req0.live == 0
varnish v1 -expect MEMPOOL.req1.live == 0
varnish v1 -expect MEMPOOL.sess0.live == 0
varnish v1 -expect MEMPOOL.sess1.live == 0
# Upgrade: h2c followed by activity on the newly opened stream
client c1 {
send "GET /upgrade3 HTTP/1.1\r\n"
send "Host: foo.bar\r\n"
send "Upgrade: h2c\r\n"
send "HTTP2-Settings: AAMAAABkAAQAAP__\r\n"
send "\r\n"
rxresp
expect resp.status == 101
expect resp.http.upgrade == h2c
expect resp.http.connection == Upgrade
txpri
stream 0 {
rxsettings
txsettings
txsettings -ack
rxsettings
expect settings.ack == true
} -run
barrier b1 sync
stream 1 {
txwinup -size 256
rxresp
expect resp.status == 200
} -run
} -run
varnish v1 -vsl_catchup
varnish v1 -expect MEMPOOL.req0.live == 0
varnish v1 -expect MEMPOOL.req1.live == 0
varnish v1 -expect MEMPOOL.sess0.live == 0
varnish v1 -expect MEMPOOL.sess1.live == 0
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment