aboutsummaryrefslogtreecommitdiff
path: root/src/net/http/serve_test.go
diff options
context:
space:
mode:
authorChance Zibolski <chance.zibolski@gmail.com>2024-06-07 15:24:08 +0000
committerDamien Neil <dneil@google.com>2024-06-07 17:57:01 +0000
commit640067f28a95bbc32aa701ceea204e28e510b04f (patch)
tree084c17693538d527ff885999cf57929db6340add /src/net/http/serve_test.go
parent0b72631a8229bcb86913f4855e217ddedbfbbb46 (diff)
downloadgo-640067f28a95bbc32aa701ceea204e28e510b04f.tar.xz
net/http: check GetConfigForClient in server.ServeTLS
Just like for tls.Config.GetCertificate the http.Server.ServeTLS method should be checking tls.Config.GetConfigForClient before trying top open the specified certFile/keyFile. This was previously fixed for crypto/tls when using tls.Listen in CL205059, but the same change for net/http was missed. I've added a comment src/crypto/tls/tls.go in the relevant section in the hope that any future changes of a similar nature consider will consider updating net/http as needed as well. Change-Id: I312303bc497d92aa2f4627fe2620c70779cbcc99 GitHub-Last-Rev: 6ed29a900816a13690a9f3e26476d9bc1055a6f7 GitHub-Pull-Request: golang/go#66795 Reviewed-on: https://go-review.googlesource.com/c/go/+/578396 Reviewed-by: Filippo Valsorda <filippo@golang.org> Reviewed-by: Damien Neil <dneil@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
Diffstat (limited to 'src/net/http/serve_test.go')
-rw-r--r--src/net/http/serve_test.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/net/http/serve_test.go b/src/net/http/serve_test.go
index 34b7d57f40..06bf5089d8 100644
--- a/src/net/http/serve_test.go
+++ b/src/net/http/serve_test.go
@@ -1748,6 +1748,24 @@ func TestAutomaticHTTP2_ListenAndServe_GetCertificate(t *testing.T) {
})
}
+func TestAutomaticHTTP2_ListenAndServe_GetConfigForClient(t *testing.T) {
+ cert, err := tls.X509KeyPair(testcert.LocalhostCert, testcert.LocalhostKey)
+ if err != nil {
+ t.Fatal(err)
+ }
+ conf := &tls.Config{
+ // GetConfigForClient requires specifying a full tls.Config so we must set
+ // NextProtos ourselves.
+ NextProtos: []string{"h2"},
+ Certificates: []tls.Certificate{cert},
+ }
+ testAutomaticHTTP2_ListenAndServe(t, &tls.Config{
+ GetConfigForClient: func(clientHello *tls.ClientHelloInfo) (*tls.Config, error) {
+ return conf, nil
+ },
+ })
+}
+
func testAutomaticHTTP2_ListenAndServe(t *testing.T, tlsConf *tls.Config) {
CondSkipHTTP2(t)
// Not parallel: uses global test hooks.