From 470cdf9833cdd83e9ea357f2831a5490ba081508 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 10 May 2026 08:37:36 +0300 Subject: fix: close destination file and clean up partial copies in copyFile - Add defer out.Close() after os.Create in copyFile to prevent fd leak. - Remove redundant explicit out.Close() calls in error and success paths. - Best-effort remove partially written destination file on io.Copy error. --- internal/service/write.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'internal/service') diff --git a/internal/service/write.go b/internal/service/write.go index b23355a..8508951 100644 --- a/internal/service/write.go +++ b/internal/service/write.go @@ -235,12 +235,13 @@ func copyFile(src, dst string) error { if err != nil { return err } + defer out.Close() if _, err := io.Copy(out, in); err != nil { - _ = out.Close() + _ = os.Remove(dst) return err } - return out.Close() + return nil } func (s *writeService) saveUploadedMedia(ctx context.Context, setID int64, path string, data io.Reader, size int64) (*model.Media, error) { -- cgit v1.2.3