Skip to content

Commit

Permalink
Collapse Cookie headers in HTTP/2
Browse files Browse the repository at this point in the history
  • Loading branch information
Dridi committed Mar 31, 2017
1 parent 8dc398a commit 9ff704f
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
5 changes: 4 additions & 1 deletion bin/varnishd/cache/cache_req_fsm.c
@@ -1,6 +1,6 @@
/*-
* Copyright (c) 2006 Verdens Gang AS
* Copyright (c) 2006-2015 Varnish Software AS
* Copyright (c) 2006-2017 Varnish Software AS
* All rights reserved.
*
* Author: Poul-Henning Kamp <phk@phk.freebsd.dk>
Expand Down Expand Up @@ -799,6 +799,9 @@ cnt_recv(struct worker *wrk, struct req *req)

http_CollectHdr(req->http, H_Cache_Control);

if (req->http->protover == 20) // rfc7540,l,3114,3120
http_CollectHdrSep(req->http, H_Cookie, "; ");

if (req->req_body_status == REQ_BODY_FAIL) {
req->doclose = SC_OVERLOAD;
return (REQ_FSM_DONE);
Expand Down
33 changes: 33 additions & 0 deletions bin/varnishtest/tests/r02291.vtc
@@ -0,0 +1,33 @@
varnishtest "Collect cookie headers in HTTP/2"

server s1 -repeat 2 {
rxreq
txresp
} -start

varnish v1 -vcl+backend { } -start
varnish v1 -cliok "param.set feature +http2"

logexpect l1 -v v1 {
expect * * BereqProtocol HTTP/1.1
expect * = BereqHeader "Cookie: user=alice"
expect * = BereqHeader "Cookie: peer=bob"
expect * * BereqProtocol HTTP/2.0
expect * = BereqHeader "cookie: user=alice; peer=bob"
} -start

client c1 {
txreq -hdr "Cookie: user=alice" -hdr "Cookie: peer=bob"
rxresp
expect resp.status == 200
} -run

client c2 {
stream 1 {
txreq -hdr cookie user=alice -hdr cookie peer=bob
rxresp
expect resp.status == 200
} -run
} -run

logexpect l1 -wait

0 comments on commit 9ff704f

Please sign in to comment.