Improve error message for askpass.

When endpoint returns non-200 status, include the body in the error
message since it can contain useful information for debugging.  Also
defer closing the response body ReadCloser as this may have leaked in
the past.
This commit is contained in:
Brian Kennedy 2021-06-15 13:38:01 -07:00
parent 2abd898038
commit edb3f08ec0
1 changed files with 8 additions and 2 deletions

View File

@ -1136,11 +1136,17 @@ func callGitAskPassURL(ctx context.Context, url string) error {
if err != nil { if err != nil {
return fmt.Errorf("can't access auth URL: %w", err) return fmt.Errorf("can't access auth URL: %w", err)
} }
defer func() {
_ = resp.Body.Close()
}()
if resp.StatusCode != 200 { if resp.StatusCode != 200 {
return fmt.Errorf("auth URL returned status %d", resp.StatusCode) errMessage, err := ioutil.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("auth URL returned status %d, failed to read body: %w", resp.StatusCode, err)
}
return fmt.Errorf("auth URL returned status %d, body: %q", resp.StatusCode, string(errMessage))
} }
authData, err := ioutil.ReadAll(resp.Body) authData, err := ioutil.ReadAll(resp.Body)
resp.Body.Close()
if err != nil { if err != nil {
return fmt.Errorf("can't read auth response: %w", err) return fmt.Errorf("can't read auth response: %w", err)
} }