Skip to content

Commit 412cc5d

Browse files
committed
Make header keys canonicalized
QUIC spec enforces header keys to be lower-cased, but go's net/http expects header keys to be canonicalized.
1 parent 1e49c0f commit 412cc5d

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

datastream_server.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,14 @@ func (stream *SimpleServerStream) ProcessRequest() {
6969
req.Method = header.Get(":method")
7070
req.RequestURI = header.Get(":path")
7171
req.Proto = header.Get(":version")
72-
req.Header = header
72+
req.Header = make(map[string][]string, len(header))
73+
for k, v := range header {
74+
// Remove SPDY headers
75+
if len(k) > 0 && k[0] == ':' {
76+
continue
77+
}
78+
req.Header[http.CanonicalHeaderKey(k)] = v
79+
}
7380
req.Host = header.Get(":authority")
7481
req.RemoteAddr = stream.peerAddress
7582
rawPath := header.Get(":path")
@@ -88,13 +95,6 @@ func (stream *SimpleServerStream) ProcessRequest() {
8895
req.Body = ioutil.NopCloser(stream.buffer)
8996
req.ContentLength = int64(stream.buffer.Len())
9097

91-
// Remove SPDY headers
92-
for k, _ := range header {
93-
if len(k) > 0 && k[0] == ':' {
94-
header.Del(k)
95-
}
96-
}
97-
9898
go func() {
9999
w := &spdyResponseWriter{
100100
serverStream: stream.quicServerStream,

0 commit comments

Comments
 (0)