Skip to content

Commit 60bc85c

Browse files
fraenkelneild
authored andcommitted
http2: complete outstanding async write before reading the next frame
For golang/go#42777 Change-Id: I8d7e35ded3fe508f6c285e84ba768104c3406bdf Reviewed-on: https://go-review.googlesource.com/c/net/+/330909 Reviewed-by: Brad Fitzpatrick <[email protected]> Reviewed-by: Damien Neil <[email protected]> Trust: Dmitri Shuralyov <[email protected]>
1 parent 3a7c478 commit 60bc85c

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

http2/server.go

+9
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,15 @@ func (sc *serverConn) serve() {
856856
case res := <-sc.wroteFrameCh:
857857
sc.wroteFrame(res)
858858
case res := <-sc.readFrameCh:
859+
// Process any written frames before reading new frames from the client since a
860+
// written frame could have triggered a new stream to be started.
861+
if sc.writingFrameAsync {
862+
select {
863+
case wroteRes := <-sc.wroteFrameCh:
864+
sc.wroteFrame(wroteRes)
865+
default:
866+
}
867+
}
859868
if !sc.processFrameFromReader(res) {
860869
return
861870
}

0 commit comments

Comments
 (0)