Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove unnecessary draining the resp.Body #847

Merged
merged 3 commits into from
Mar 5, 2018
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions github/github.go
Original file line number Diff line number Diff line change
Expand Up @@ -478,12 +478,7 @@ func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*Res
return nil, err
}

defer func() {
// Drain up to 512 bytes and close the body to let the Transport reuse the connection
io.CopyN(ioutil.Discard, resp.Body, 512)
resp.Body.Close()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe that we should go back to how this looked prior to the addition of the drain:
e0ff711

Specifically, this should now be:

defer resp.Body.Close()

Note that this is an HTTP client, and its documentation says:

The client must close the response body when finished with it:
...<example elided>...

}()

resp.Body.Close()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@diorahman This still needs a correction.

As @gmlewis mentioned, this should be same as how this looked prior to the addition of the drain:
e0ff711

That means, you should defer this statement so that it executes only when the relevant routine returns.

Please change it to:

defer resp.Body.Close()

response := newResponse(resp)

c.rateMu.Lock()
Expand Down