diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-10 08:37:36 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-10 08:37:36 +0300 |
| commit | 470cdf9833cdd83e9ea357f2831a5490ba081508 (patch) | |
| tree | 8285b43d1994e67e76a4ef6d719a0a2f9b586b78 /internal/service | |
| parent | c49f7d292e17449b122fa54252661a9a298be9a8 (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.go | 5 |
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) { |
