[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.
This commit is contained in:
Daenney 2023-02-19 12:01:15 +01:00 committed by GitHub
parent 51c156cca1
commit 70398891b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -153,6 +153,11 @@ func New(cfg Config) *Client {
// as the standard http.Client{}.Do() implementation except that response body will // as the standard http.Client{}.Do() implementation except that response body will
// be wrapped by an io.LimitReader() to limit response body sizes. // be wrapped by an io.LimitReader() to limit response body sizes.
func (c *Client) Do(req *http.Request) (*http.Response, error) { 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 // Get host's wait queue
wait := c.wait(req.Host) 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 // Perform the HTTP request
rsp, err := c.client.Do(req) rsp, err := c.client.Do(req)
if err != nil { if err != nil {