From 97df9c0b051b6c06bff7ec7e61522e7bbef40c91 Mon Sep 17 00:00:00 2001 From: Akihiro Suda Date: Fri, 7 Apr 2023 01:19:21 +0000 Subject: [PATCH] net/http: expose "http: server gave HTTP response to HTTPS client" error Expose "http: server gave HTTP response to HTTPS client" error as `ErrSchemeMismatch`, so that it can be compared with `errors.Is` . Fixes #44855 Change-Id: If96e0d000fdef641fea407310faf9e1c4f7ad0f0 GitHub-Last-Rev: 22879fc88367d77817d7d96c9164f22e55f3a192 GitHub-Pull-Request: golang/go#50939 Reviewed-on: https://go-review.googlesource.com/c/go/+/382117 Run-TryBot: Damien Neil Auto-Submit: Damien Neil Reviewed-by: Damien Neil TryBot-Result: Gopher Robot Reviewed-by: Michael Knyszek --- api/next/44855.txt | 1 + src/net/http/client.go | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 api/next/44855.txt diff --git a/api/next/44855.txt b/api/next/44855.txt new file mode 100644 index 0000000000..89a3ff5f33 --- /dev/null +++ b/api/next/44855.txt @@ -0,0 +1 @@ +pkg net/http, var ErrSchemeMismatch error #44855 diff --git a/src/net/http/client.go b/src/net/http/client.go index 1e300acf89..2cab53a585 100644 --- a/src/net/http/client.go +++ b/src/net/http/client.go @@ -204,6 +204,9 @@ func (c *Client) transport() RoundTripper { return DefaultTransport } +// ErrSchemeMismatch is returned when a server returns an HTTP response to an HTTPS client. +var ErrSchemeMismatch = errors.New("http: server gave HTTP response to HTTPS client") + // send issues an HTTP request. // Caller should close resp.Body when done reading from it. func send(ireq *Request, rt RoundTripper, deadline time.Time) (resp *Response, didTimeout func() bool, err error) { @@ -265,7 +268,7 @@ func send(ireq *Request, rt RoundTripper, deadline time.Time) (resp *Response, d // response looks like HTTP and give a more helpful error. // See golang.org/issue/11111. if string(tlsErr.RecordHeader[:]) == "HTTP/" { - err = errors.New("http: server gave HTTP response to HTTPS client") + err = ErrSchemeMismatch } } return nil, didTimeout, err -- 2.48.1