diff --git a/internal/handlers/imageenc.go b/internal/handlers/imageenc.go index f43e7f4..e01b2cd 100644 --- a/internal/handlers/imageenc.go +++ b/internal/handlers/imageenc.go @@ -66,6 +66,7 @@ func (s *Handlers) HandleImageEnc() http.HandlerFunc { return } + defer func() { _ = resp.Content.Close() }() // Set response headers diff --git a/internal/httpfetcher/httpfetcher.go b/internal/httpfetcher/httpfetcher.go index c902993..0abf1fa 100644 --- a/internal/httpfetcher/httpfetcher.go +++ b/internal/httpfetcher/httpfetcher.go @@ -198,6 +198,7 @@ func (f *HTTPFetcher) Fetch(ctx context.Context, url string) (*FetchResult, erro // If we fail before returning a result, release the slot success := false + defer func() { if !success { <-sem diff --git a/internal/httpfetcher/httpfetcher_internal_test.go b/internal/httpfetcher/httpfetcher_internal_test.go index 259ca86..a774614 100644 --- a/internal/httpfetcher/httpfetcher_internal_test.go +++ b/internal/httpfetcher/httpfetcher_internal_test.go @@ -237,6 +237,7 @@ func TestMockFetcher_FetchesFile(t *testing.T) { if err != nil { t.Fatalf("Fetch() error = %v", err) } + defer func() { _ = result.Content.Close() }() if result.ContentType != contentTypeJPEG { diff --git a/internal/imgcache/service.go b/internal/imgcache/service.go index d940b02..bc0b68f 100644 --- a/internal/imgcache/service.go +++ b/internal/imgcache/service.go @@ -315,6 +315,7 @@ func (s *Service) fetchAndProcess( return nil, fmt.Errorf("upstream fetch failed: %w", err) } + defer func() { _ = fetchResult.Content.Close() }() // Read and validate the source content