Skip to content

Commit 2b766c0

Browse files
committed
http2: deflake TestTransportReqBodyAfterResponse_200
Don't send the END_STREAM flag from the server until the client sends its END_STREAM. Avoids a flaky failure when the client sends the END_STREAM in a zero-length DATA frame: - The server reads bodySize bytes and half-closes the stream. - The client's Response.Body returns EOF. - The test calls Response.Body.Close. - The client resets the stream. Avoid hanging forever on the client side of the test if the server side exits with an error. Fixes golang/go#48970 Change-Id: Ic921a3f60149abbb5434ec7a53985becea7b23c3 Reviewed-on: https://go-review.googlesource.com/c/net/+/355649 Trust: Damien Neil <dneil@google.com> Reviewed-by: Bryan C. Mills <bcmills@google.com>
1 parent e13a265 commit 2b766c0

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

http2/transport_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -934,6 +934,7 @@ func testTransportReqBodyAfterResponse(t *testing.T, status int) {
934934
}
935935
ct.server = func() error {
936936
ct.greet()
937+
defer close(recvLen)
937938
var buf bytes.Buffer
938939
enc := hpack.NewEncoder(&buf)
939940
var dataRecv int64
@@ -984,7 +985,7 @@ func testTransportReqBodyAfterResponse(t *testing.T, status int) {
984985
dataRecv += int64(dataLen)
985986

986987
if !closed && ((status != 200 && dataRecv > 0) ||
987-
(status == 200 && dataRecv == bodySize)) {
988+
(status == 200 && f.StreamEnded())) {
988989
closed = true
989990
if err := ct.fr.WriteData(f.StreamID, true, nil); err != nil {
990991
return err

0 commit comments

Comments
 (0)