aboutsummaryrefslogtreecommitdiff
path: root/src/net/http/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/http/server.go')
-rw-r--r--src/net/http/server.go6
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