read file fix

This commit is contained in:
Ben Sarmiento
2023-11-12 00:37:35 +01:00
parent d737c3cc89
commit fcbbff9ea2
3 changed files with 91 additions and 49 deletions

View File

@@ -11,6 +11,7 @@ import (
"bazil.org/fuse"
"bazil.org/fuse/fs"
"github.com/debridmediamanager.com/zurg/internal/torrent"
"github.com/debridmediamanager.com/zurg/internal/universal"
)
// define variable as rootObject id
@@ -26,6 +27,7 @@ type Object struct {
objType int
parentName string
name string
torrent *torrent.Torrent
file *torrent.File
size uint64
mtime time.Time
@@ -136,6 +138,7 @@ func (o Object) Lookup(ctx context.Context, name string) (fs.Node, error) {
objType: FILE,
parentName: o.name,
name: name,
torrent: torrent,
file: file,
size: uint64(file.Bytes),
mtime: convertRFC3339toTime(file.Added),
@@ -152,14 +155,17 @@ func (o Object) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.Open
// Read reads some bytes or the whole file
func (o Object) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) error {
o.fs.log.Debugf("Read %s (total size %d) req offset %d req size %d", o.name, o.size, req.Offset, req.Size)
data, err := o.fs.chunk.GetChunk(o.file, req.Offset, int64(req.Size))
if nil != err {
o.fs.log.Warnf("%v", err)
reader := universal.GetFileReader(o.torrent, o.file, req.Offset, int(req.Size), o.fs.t, o.fs.c, o.fs.log)
if reader == nil {
return syscall.EIO
}
defer reader.Close()
resp.Data = make([]byte, req.Size)
_, err := reader.Read(resp.Data)
if err != nil && err.Error() != "EOF" {
o.fs.log.Errorf("Error reading bytes from Real-Debrid: %v", err)
return syscall.EIO
}
resp.Data = data
return nil
}