]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: avoid redundant installation of HTTP/2 support in transport
authorDamien Neil <dneil@google.com>
Sat, 23 Nov 2024 01:10:01 +0000 (17:10 -0800)
committerGopher Robot <gobot@golang.org>
Mon, 25 Nov 2024 18:39:27 +0000 (18:39 +0000)
Previously, we'd skip installing the bundled HTTP/2 support
if Transport.TLSNextProto is non-nil.

With the addition of the Transport.Protocols field, we'll
install HTTP/2 if Protocols contains HTTP2, even if TLSNextProto
is non-nil. However, we shouldn't do so if it already contains an
"h2" entry.

Change-Id: Ib086473bb52f1b76d83b1df961d41360c605832c
Reviewed-on: https://go-review.googlesource.com/c/go/+/631395
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
Auto-Submit: Damien Neil <dneil@google.com>

src/net/http/transport.go

index e2ce4dde3d14be62472eb4a44df81f35ca77160b..41e674188f7235a3f7ed94896cb0bad7137492ef 100644 (file)
@@ -412,6 +412,10 @@ func (t *Transport) onceSetNextProtoDefaults() {
                }
        }
 
+       if _, ok := t.TLSNextProto["h2"]; ok {
+               // There's an existing HTTP/2 implementation installed.
+               return
+       }
        protocols := t.protocols()
        if !protocols.HTTP2() && !protocols.UnencryptedHTTP2() {
                return