]> Cypherpunks repositories - gostls13.git/commit
net/http: add Transport.TLSNextProto, ErrSkipAltProtocol
authorBrad Fitzpatrick <bradfitz@golang.org>
Mon, 19 Oct 2015 22:30:21 +0000 (15:30 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 20 Oct 2015 00:30:45 +0000 (00:30 +0000)
commitd4d16688641738c2ea8bd69a86ee9c10195c898d
treebdedb7aef2e74f8adb501df4546016fbb1a1f4c2
parenta3156aaa121446c4136927f8c2139fefe05ba82c
net/http: add Transport.TLSNextProto, ErrSkipAltProtocol

This is the start of wiring up the HTTP/2 Transport. It is still
disabled in this commit.

This change does two main things:

1) Transport.RegisterProtocol now permits registering "http" or
   "https" (they previously paniced), and the semantics of the
   registered RoundTripper have been extended to say that the new
   sentinel error value (ErrSkipAltProtocol, added in this CL) means
   that the Transport's RoundTrip method proceeds as if the alternate
   protocol had not been registered. This gives us a place to register
   an alternate "https" RoundTripper which gets first dibs on using
   HTTP/2 if there's already a cached connection.

2) adds Transport.TLSNextProto, a map keyed by TLS NPN/ALPN protocol
   strings, similar in feel to the existing Server.TLSNextProto map.
   This map is the glue between the HTTP/1 and HTTP/2 clients, since
   we don't know which protocol we're going to speak (and thus which
   Transport type to use) until we've already made the TCP connection.

Updates #6891

Change-Id: I7328c7ff24f52d9fe4899facabf7ecc5dcb989f3
Reviewed-on: https://go-review.googlesource.com/16090
Reviewed-by: Andrew Gerrand <adg@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/net/http/transport.go