summaryrefslogtreecommitdiff
path: root/internal/service
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-10 08:37:36 +0300
committerPaul Buetow <paul@buetow.org>2026-05-10 08:37:36 +0300
commit470cdf9833cdd83e9ea357f2831a5490ba081508 (patch)
tree8285b43d1994e67e76a4ef6d719a0a2f9b586b78 /internal/service
parentc49f7d292e17449b122fa54252661a9a298be9a8 (diff)
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.
Diffstat (limited to 'internal/service')
-rw-r--r--internal/service/write.go5
1 files changed, 3 insertions, 2 deletions
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) {