lib/fs: follow-up for ec45f1bc5f

Properly close response body before checking for the response code.

Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4034
This commit is contained in:
Aliaksandr Valialkin 2023-03-31 22:41:02 -07:00
parent d577657fb7
commit 4d00107b92
No known key found for this signature in database
GPG key ID: A72BEC6CD3D0DED1

View file

@ -424,13 +424,14 @@ func ReadFileOrHTTP(path string) ([]byte, error) {
if err != nil { if err != nil {
return nil, fmt.Errorf("cannot fetch %q: %w", path, err) return nil, fmt.Errorf("cannot fetch %q: %w", path, err)
} }
if resp.StatusCode != http.StatusOK {
return nil, fmt.Errorf("unexpected status code when fetching %q: %d, expecting %d", path, resp.StatusCode, http.StatusOK)
}
data, err := io.ReadAll(resp.Body) data, err := io.ReadAll(resp.Body)
_ = resp.Body.Close() _ = resp.Body.Close()
if resp.StatusCode != http.StatusOK {
if len(data) > 4*1024 {
data = data[:4*1024]
}
return nil, fmt.Errorf("unexpected status code when fetching %q: %d, expecting %d; response: %q", path, resp.StatusCode, http.StatusOK, data)
}
if err != nil { if err != nil {
return nil, fmt.Errorf("cannot read %q: %s", path, err) return nil, fmt.Errorf("cannot read %q: %s", path, err)
} }