diff options
Diffstat (limited to 'src/net/http/server.go')
| -rw-r--r-- | src/net/http/server.go | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/net/http/server.go b/src/net/http/server.go index 17c2890aa7..5718cafbc3 100644 --- a/src/net/http/server.go +++ b/src/net/http/server.go @@ -714,7 +714,8 @@ func (c *conn) readRequest() (w *response, err error) { c.r.setInfiniteReadLimit() hosts, haveHost := req.Header["Host"] - if req.ProtoAtLeast(1, 1) && (!haveHost || len(hosts) == 0) { + isH2Upgrade := req.isH2Upgrade() + if req.ProtoAtLeast(1, 1) && (!haveHost || len(hosts) == 0) && !isH2Upgrade { return nil, badRequestError("missing required Host header") } if len(hosts) > 1 { @@ -748,6 +749,9 @@ func (c *conn) readRequest() (w *response, err error) { handlerHeader: make(Header), contentLength: -1, } + if isH2Upgrade { + w.closeAfterReply = true + } w.cw.res = w w.w = newBufioWriterSize(&w.cw, bufferBeforeChunkingSize) return w, nil |
