aboutsummaryrefslogtreecommitdiff
path: root/src/net/http
diff options
context:
space:
mode:
authorKevin Burke <kevin@burke.dev>2022-06-24 13:13:05 -0700
committerGopher Robot <gobot@golang.org>2024-03-26 06:06:11 +0000
commitaab837dd46797b88d9ca827809fd7db663a5dd8d (patch)
treefebbd790c8789f64d3707a4cb59027f7428513ff /src/net/http
parent1f354a60ff7e8e047e4dfecb1033a20ee8c266dc (diff)
downloadgo-aab837dd46797b88d9ca827809fd7db663a5dd8d.tar.xz
net/http: panic early in do when Client is nil
Callers who invoke `*http.Client.Do` with a nil *Client will now panic at the top of c.Do, instead of panicking when `deadline` attempts to read `c.Timeout`. Errors inside of net/http can be difficult to track down because the caller is often invoking the standard library code via an SDK. This can mean that there are many places to check when code panics, and raises the importance of being clear about error messages. If nil receiver calls panic during the `deadline()` call, callers may confuse the error with a more common timeout or deadline misconfiguration, which may lead a caller who passed a nil receiver (the author, for example) down the wrong rabbit hole, or cause them to suspect their timeout/deadline logic. It is less common to configure client.Jar, so the probability of detecting the actual problem, given the underlying error cause, is higher. Fixes #53521. Change-Id: If102d17bed56fdd950da6e87762166fd29724654 Reviewed-on: https://go-review.googlesource.com/c/go/+/413975 Run-TryBot: Emmanuel Odeke <emmanuel@orijtech.com> Reviewed-by: Damien Neil <dneil@google.com> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Emmanuel Odeke <emmanuel@orijtech.com> Auto-Submit: Emmanuel Odeke <emmanuel@orijtech.com> TryBot-Result: Gopher Robot <gobot@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src/net/http')
-rw-r--r--src/net/http/client.go1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/net/http/client.go b/src/net/http/client.go
index b29910ca43..cbf7c54501 100644
--- a/src/net/http/client.go
+++ b/src/net/http/client.go
@@ -603,6 +603,7 @@ func (c *Client) do(req *Request) (retres *Response, reterr error) {
Err: errors.New("http: nil Request.URL"),
}
}
+ _ = *c // panic early if c is nil; see go.dev/issue/53521
var (
deadline = c.deadline()