Commit def50f8e authored by Brad Fitzpatrick's avatar Brad Fitzpatrick

net/http: update bundled http2

Updates x/net/http2 to git rev 0c607074 for https://golang.org/cl/23311,
"http2: prevent Server from sending status 100 header after anything else"

New test is in the x/net/http2 package (not bundled to std).

Fixes #14030

Change-Id: Ifc6afa4a5fe35977135428f6d0e9f7c164767720
Reviewed-on: https://go-review.googlesource.com/23312Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 82ec4cd7
...@@ -3111,6 +3111,7 @@ type http2stream struct { ...@@ -3111,6 +3111,7 @@ type http2stream struct {
sentReset bool // only true once detached from streams map sentReset bool // only true once detached from streams map
gotReset bool // only true once detacted from streams map gotReset bool // only true once detacted from streams map
gotTrailerHeader bool // HEADER frame for trailers was seen gotTrailerHeader bool // HEADER frame for trailers was seen
wroteHeaders bool // whether we wrote headers (not status 100)
reqBuf []byte reqBuf []byte
trailer Header // accumulated trailers trailer Header // accumulated trailers
...@@ -3474,7 +3475,21 @@ func (sc *http2serverConn) writeFrameFromHandler(wm http2frameWriteMsg) error { ...@@ -3474,7 +3475,21 @@ func (sc *http2serverConn) writeFrameFromHandler(wm http2frameWriteMsg) error {
// If you're not on the serve goroutine, use writeFrameFromHandler instead. // If you're not on the serve goroutine, use writeFrameFromHandler instead.
func (sc *http2serverConn) writeFrame(wm http2frameWriteMsg) { func (sc *http2serverConn) writeFrame(wm http2frameWriteMsg) {
sc.serveG.check() sc.serveG.check()
sc.writeSched.add(wm)
var ignoreWrite bool
switch wm.write.(type) {
case *http2writeResHeaders:
wm.stream.wroteHeaders = true
case http2write100ContinueHeadersFrame:
if wm.stream.wroteHeaders {
ignoreWrite = true
}
}
if !ignoreWrite {
sc.writeSched.add(wm)
}
sc.scheduleFrameWrite() sc.scheduleFrameWrite()
} }
......
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