fs/file_handle.go | 7 ++++--- fs/filenode.go | 3 +-- diff --git a/fs/file_handle.go b/fs/file_handle.go index 7c275c276fa785360b7d9a60c08a04a3a1ec29f4..2a8fe2ccad5f6a96cefa24b5db687bec26a520e1 100644 --- a/fs/file_handle.go +++ b/fs/file_handle.go @@ -13,7 +13,7 @@ ) type fileHandle struct { fn fileNode - r torrent.Reader + tf *torrent.File } var _ interface { @@ -26,7 +26,8 @@ torrentfsReadRequests.Add(1) if req.Dir { panic("read on directory") } - r := me.r + r := me.tf.NewReader() + defer r.Close() pos, err := r.Seek(req.Offset, io.SeekStart) if err != nil { panic(err) @@ -81,5 +82,5 @@ } } func (me fileHandle) Release(context.Context, *fuse.ReleaseRequest) error { - return me.r.Close() + return nil } diff --git a/fs/filenode.go b/fs/filenode.go index a7c03cc6aa9ca7d9c5554986319aa30d233de372..28a433e18d086d29f97941ff507370d8afa37d69 100644 --- a/fs/filenode.go +++ b/fs/filenode.go @@ -23,6 +23,5 @@ return nil } func (fn fileNode) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fusefs.Handle, error) { - r := fn.f.NewReader() - return fileHandle{fn, r}, nil + return fileHandle{fn, fn.f}, nil }