diff --git a/remote_fetch.go b/remote_fetch.go index 1aa1e84..bc95756 100644 --- a/remote_fetch.go +++ b/remote_fetch.go @@ -50,7 +50,9 @@ func defaultRemoteFetchStrategy(remoteFetchHost string, versionStrategy VersionS shaDownloadURL := fmt.Sprintf("%s.sha256", jarDownloadURL) shaDownloadResponse, err := http.Get(shaDownloadURL) - + if err != nil { + return fmt.Errorf("download sha256 from %s failed: %w", shaDownloadURL, err) + } defer closeBody(shaDownloadResponse)() if err == nil && shaDownloadResponse.StatusCode == http.StatusOK { @@ -68,6 +70,9 @@ func defaultRemoteFetchStrategy(remoteFetchHost string, versionStrategy VersionS func closeBody(resp *http.Response) func() { return func() { + if resp == nil || resp.Body == nil { + return + } if err := resp.Body.Close(); err != nil { log.Fatal(err) } diff --git a/remote_fetch_test.go b/remote_fetch_test.go index 9e6dcfb..2b4a76b 100644 --- a/remote_fetch_test.go +++ b/remote_fetch_test.go @@ -417,3 +417,9 @@ func Test_defaultRemoteFetchStrategy_whenContentLengthNotSet(t *testing.T) { assert.NoError(t, err) assert.FileExists(t, cacheLocation) } + +func Test_closeBody_NilResponse(t *testing.T) { + assert.NotPanics(t, func() { + closeBody(nil)() + }) +}