]> Cypherpunks repositories - gostls13.git/commit
net/http: make Transport treat 101 as a terminal status
authorMark Fischer <meirfischer@gmail.com>
Mon, 2 Jul 2018 04:56:46 +0000 (00:56 -0400)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 3 Jul 2018 01:11:30 +0000 (01:11 +0000)
commit33f6b08ffe5cfcb8efc4b6529ff8e23e04290b84
tree3aa80447dcc43bbd31883d60f4babc629dadf9a4
parent17e503f76ff528c227035407529d14a702273129
net/http: make Transport treat 101 as a terminal status

Before CL 116855, Transport would only skip over 100 (expect-continue)
responses automatically and treat all other 1xx responses as if they
were the final status. CL 116855 made the Transport more spec
compliant (ignoring unknown 1xx responses), but broke "101 Switching
Protocols" in the process. Since 101 is already in use and defined to
not have a following message, treat it as terminal.

Note that because the Client/Transport don't support hijacking the
underlying Conn, most clients doing a WebSocket or other protocol
upgrade are probably using net.Dial + http.ReadResponse instead, which
remained unaffected (before & after this CL).

The main affect of this CL is to fix tests that were using the
Client/Transport to test that a server returns 101, presumably without
actually switching to another protocol.

Fixes #26161

Change-Id: Ie3cd3a465f948c4d6f7ddf2a6a78a7fb935d0672
Reviewed-on: https://go-review.googlesource.com/121860
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/net/http/transport.go
src/net/http/transport_test.go