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

h2: Ensure highest_stream is consistent also on Upgrade: h2c

Conflicts:
	bin/varnishd/http2/cache_http2_session.c
parent ead236cf
...@@ -289,6 +289,8 @@ h2_ou_session(struct worker *wrk, struct h2_sess *h2, ...@@ -289,6 +289,8 @@ h2_ou_session(struct worker *wrk, struct h2_sess *h2,
/* Start req thread */ /* Start req thread */
r2 = h2_new_req(wrk, h2, 1, req); r2 = h2_new_req(wrk, h2, 1, req);
AZ(h2->highest_stream);
h2->highest_stream = r2->stream;
req->transport = &H2_transport; req->transport = &H2_transport;
req->req_step = R_STP_TRANSPORT; req->req_step = R_STP_TRANSPORT;
req->task.func = h2_do_req; req->task.func = h2_do_req;
......
varnishtest "H1->H2 Upgrade" varnishtest "H1->H2 Upgrade"
barrier b1 cond 2 barrier b1 cond 2 -cyclic
server s1 { server s1 {
rxreq rxreq
...@@ -37,6 +37,11 @@ server s1 { ...@@ -37,6 +37,11 @@ server s1 {
expect req.http.host == foo.bar expect req.http.host == foo.bar
barrier b1 sync barrier b1 sync
txresp -status 402 -bodylen 11 txresp -status 402 -bodylen 11
rxreq
expect req.url == /upgrade3
barrier b1 sync
txresp -status 200
} -start } -start
varnish v1 -vsl_catchup varnish v1 -vsl_catchup
...@@ -156,3 +161,37 @@ varnish v1 -expect MEMPOOL.req0.live == 0 ...@@ -156,3 +161,37 @@ varnish v1 -expect MEMPOOL.req0.live == 0
varnish v1 -expect MEMPOOL.req1.live == 0 varnish v1 -expect MEMPOOL.req1.live == 0
varnish v1 -expect MEMPOOL.sess0.live == 0 varnish v1 -expect MEMPOOL.sess0.live == 0
varnish v1 -expect MEMPOOL.sess1.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