From 15938c584f843cdfcfb0960926499bd2b30d6932 Mon Sep 17 00:00:00 2001 From: Paul Rosca Date: Wed, 8 Jan 2025 15:41:08 +0200 Subject: [PATCH] fix: backoff function error handling --- lib/snyk/package.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/snyk/package.go b/lib/snyk/package.go index dd7ea82..de63eb9 100644 --- a/lib/snyk/package.go +++ b/lib/snyk/package.go @@ -111,12 +111,15 @@ func GetPackageVulnerabilities(cfg *Config, purl *packageurl.PackageURL, auth *s func getRetryClient(logger *zerolog.Logger) *http.Client { rc := retryablehttp.NewClient() rc.Logger = nil + rc.ErrorHandler = retryablehttp.PassthroughErrorHandler rc.Backoff = func(min, max time.Duration, attemptNum int, resp *http.Response) time.Duration { - if sleep, ok := parseRateLimitHeader(resp.Header.Get("X-RateLimit-Reset")); ok { - logger.Warn(). - Dur("Retry-After", sleep). - Msg("Getting rate-limited, waiting...") - return sleep + if resp != nil { + if sleep, ok := parseRateLimitHeader(resp.Header.Get("X-RateLimit-Reset")); ok { + logger.Warn(). + Dur("Retry-After", sleep). + Msg("Getting rate-limited, waiting...") + return sleep + } } return retryablehttp.DefaultBackoff(min, max, attemptNum, resp) }