|
@@ -322,10 +322,9 @@ func (c *BaseConnection) ListDir(virtualPath string) (*DirListerAt, error) {
|
|
}
|
|
}
|
|
return &DirListerAt{
|
|
return &DirListerAt{
|
|
virtualPath: virtualPath,
|
|
virtualPath: virtualPath,
|
|
- user: &c.User,
|
|
|
|
|
|
+ conn: c,
|
|
|
|
+ fs: fs,
|
|
info: c.User.GetVirtualFoldersInfo(virtualPath),
|
|
info: c.User.GetVirtualFoldersInfo(virtualPath),
|
|
- id: c.ID,
|
|
|
|
- protocol: c.protocol,
|
|
|
|
lister: lister,
|
|
lister: lister,
|
|
}, nil
|
|
}, nil
|
|
}
|
|
}
|
|
@@ -1790,10 +1789,9 @@ func (c *BaseConnection) GetFsAndResolvedPath(virtualPath string) (vfs.Fs, strin
|
|
// DirListerAt defines a directory lister implementing the ListAt method.
|
|
// DirListerAt defines a directory lister implementing the ListAt method.
|
|
type DirListerAt struct {
|
|
type DirListerAt struct {
|
|
virtualPath string
|
|
virtualPath string
|
|
- user *dataprovider.User
|
|
|
|
|
|
+ conn *BaseConnection
|
|
|
|
+ fs vfs.Fs
|
|
info []os.FileInfo
|
|
info []os.FileInfo
|
|
- id string
|
|
|
|
- protocol string
|
|
|
|
mu sync.Mutex
|
|
mu sync.Mutex
|
|
lister vfs.DirLister
|
|
lister vfs.DirLister
|
|
}
|
|
}
|
|
@@ -1836,10 +1834,10 @@ func (l *DirListerAt) Next(limit int) ([]os.FileInfo, error) {
|
|
for {
|
|
for {
|
|
files, err := l.lister.Next(limit)
|
|
files, err := l.lister.Next(limit)
|
|
if err != nil && !errors.Is(err, io.EOF) {
|
|
if err != nil && !errors.Is(err, io.EOF) {
|
|
- logger.Debug(l.protocol, l.id, "error retrieving directory entries: %+v", err)
|
|
|
|
- return files, err
|
|
|
|
|
|
+ l.conn.Log(logger.LevelDebug, "error retrieving directory entries: %+v", err)
|
|
|
|
+ return files, l.conn.GetFsError(l.fs, err)
|
|
}
|
|
}
|
|
- files = l.user.FilterListDir(files, l.virtualPath)
|
|
|
|
|
|
+ files = l.conn.User.FilterListDir(files, l.virtualPath)
|
|
if len(l.info) > 0 {
|
|
if len(l.info) > 0 {
|
|
files = slices.Concat(l.info, files)
|
|
files = slices.Concat(l.info, files)
|
|
l.info = nil
|
|
l.info = nil
|