diff --git a/rsyncsender/sender.go b/rsyncsender/sender.go index 292b92a..5babaf1 100644 --- a/rsyncsender/sender.go +++ b/rsyncsender/sender.go @@ -141,6 +141,7 @@ func (st *sendTransfer) sendFile(fileIndex int32, fl *utils.SenderFile) error { const chunkSize = 32 * 1024 fi, f, err := st.filesystem.Read(fl) + defer f.Close() if err != nil { return err } diff --git a/utils/fs.go b/utils/fs.go index f129817..f446f81 100644 --- a/utils/fs.go +++ b/utils/fs.go @@ -5,10 +5,15 @@ import ( "os" ) +type ReaderAtCloser interface { + io.ReaderAt + io.Closer +} + // File System: need to handle all type of files: regular, folder, symlink, etc type FS interface { Put(*ReceiverFile) (int64, error) Skip(*ReceiverFile) bool List(string) ([]os.FileInfo, error) - Read(*SenderFile) (os.FileInfo, io.ReaderAt, error) + Read(*SenderFile) (os.FileInfo, ReaderAtCloser, error) }