commit 70398891b838ae29e5f8e2ce76301a43995c0a5d
parent 51c156cca1b88e2f5bcf649c86a7e7736ffbb652
Author: Daenney <daenney@users.noreply.github.com>
Date: Sun, 19 Feb 2023 12:01:15 +0100
[chore] Move request validation earlier in client (#1531)
This moves checking if the request is valid as early as possible in the
chain. This should ensure that for an invalid request we never bother
acquiring the wait queue and taking up a spot in it.
Diffstat:
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/internal/httpclient/client.go b/internal/httpclient/client.go
@@ -153,6 +153,11 @@ func New(cfg Config) *Client {
// as the standard http.Client{}.Do() implementation except that response body will
// be wrapped by an io.LimitReader() to limit response body sizes.
func (c *Client) Do(req *http.Request) (*http.Response, error) {
+ // Ensure this is a valid request
+ if err := ValidateRequest(req); err != nil {
+ return nil, err
+ }
+
// Get host's wait queue
wait := c.wait(req.Host)
@@ -198,11 +203,6 @@ func (c *Client) Do(req *http.Request) (*http.Response, error) {
}
}
- // Firstly, ensure this is a valid request
- if err := ValidateRequest(req); err != nil {
- return nil, err
- }
-
// Perform the HTTP request
rsp, err := c.client.Do(req)
if err != nil {