• Tom Bergan's avatar
    http2: block RoundTrip when the Transport hits MaxConcurrentStreams · 1c05540f
    Tom Bergan authored
    Currently if the http2.Transport hits SettingsMaxConcurrentStreams for a
    server, it just makes a new TCP connection and creates the stream on the
    new connection. This CL updates that behavior to instead block RoundTrip
    until a new stream is available.
    
    I also fixed a second bug, which was necessary to make some tests pass:
    Previously, a stream was removed from cc.streams only if either (a) we
    received END_STREAM from the server, or (b) we received RST_STREAM from
    the server. This CL removes a stream from cc.streams if the request was
    cancelled (via ctx.Close, req.Cancel, or resp.Body.Close) before
    receiving END_STREAM or RST_STREAM from the server.
    
    Updates golang/go#13774
    Updates golang/go#20985
    Updates golang/go#21229
    
    Change-Id: I660ffd724c4c513e0f1cc587b404bedb8aff80be
    Reviewed-on: https://go-review.googlesource.com/53250
    Run-TryBot: Tom Bergan <tombergan@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    1c05540f
Name
Last commit
Last update
..
h2demo Loading commit data...
h2i Loading commit data...
hpack Loading commit data...
testdata Loading commit data...
.gitignore Loading commit data...
Dockerfile Loading commit data...
Makefile Loading commit data...
README Loading commit data...
ciphers.go Loading commit data...
ciphers_test.go Loading commit data...
client_conn_pool.go Loading commit data...
configure_transport.go Loading commit data...
databuffer.go Loading commit data...
databuffer_test.go Loading commit data...
errors.go Loading commit data...
errors_test.go Loading commit data...
flow.go Loading commit data...
flow_test.go Loading commit data...
frame.go Loading commit data...
frame_test.go Loading commit data...
go16.go Loading commit data...
go17.go Loading commit data...
go17_not18.go Loading commit data...
go18.go Loading commit data...
go18_test.go Loading commit data...
go19.go Loading commit data...
go19_test.go Loading commit data...
gotrack.go Loading commit data...
gotrack_test.go Loading commit data...
headermap.go Loading commit data...
http2.go Loading commit data...
http2_test.go Loading commit data...
not_go16.go Loading commit data...
not_go17.go Loading commit data...
not_go18.go Loading commit data...
not_go19.go Loading commit data...
pipe.go Loading commit data...
pipe_test.go Loading commit data...
server.go Loading commit data...
server_push_test.go Loading commit data...
server_test.go Loading commit data...
transport.go Loading commit data...
transport_test.go Loading commit data...
write.go Loading commit data...
writesched.go Loading commit data...
writesched_priority.go Loading commit data...
writesched_priority_test.go Loading commit data...
writesched_random.go Loading commit data...
writesched_random_test.go Loading commit data...
writesched_test.go Loading commit data...
z_spec_test.go Loading commit data...