diff --git a/internal/common/connection.go b/internal/common/connection.go index 713e386a..db04ab67 100644 --- a/internal/common/connection.go +++ b/internal/common/connection.go @@ -322,10 +322,9 @@ func (c *BaseConnection) ListDir(virtualPath string) (*DirListerAt, error) { } return &DirListerAt{ virtualPath: virtualPath, - user: &c.User, + conn: c, + fs: fs, info: c.User.GetVirtualFoldersInfo(virtualPath), - id: c.ID, - protocol: c.protocol, lister: lister, }, nil } @@ -1815,10 +1814,9 @@ func (c *BaseConnection) GetFsAndResolvedPath(virtualPath string) (vfs.Fs, strin // DirListerAt defines a directory lister implementing the ListAt method. type DirListerAt struct { virtualPath string - user *dataprovider.User + conn *BaseConnection + fs vfs.Fs info []os.FileInfo - id string - protocol string mu sync.Mutex lister vfs.DirLister } @@ -1861,10 +1859,10 @@ func (l *DirListerAt) Next(limit int) ([]os.FileInfo, error) { for { files, err := l.lister.Next(limit) 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 { files = slices.Concat(l.info, files) l.info = nil diff --git a/internal/common/connection_test.go b/internal/common/connection_test.go index 8b9d44c2..5f3c26dc 100644 --- a/internal/common/connection_test.go +++ b/internal/common/connection_test.go @@ -1090,7 +1090,7 @@ func TestListerAt(t *testing.T) { require.ErrorIs(t, err, io.EOF) require.Len(t, files, 0) _, err = lister.Next(-1) - require.ErrorContains(t, err, "invalid limit") + require.ErrorContains(t, err, conn.GetGenericError(err).Error()) err = lister.Close() require.NoError(t, err)