Forráskód Böngészése

DirLister: returns appropriate protocol errors

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
Nicola Murino 9 hónapja
szülő
commit
ca41b59fc4

+ 7 - 9
internal/common/connection.go

@@ -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

+ 1 - 1
internal/common/connection_test.go

@@ -1091,7 +1091,7 @@ func TestListerAt(t *testing.T) {
 	require.ErrorIs(t, err, io.EOF)
 	require.ErrorIs(t, err, io.EOF)
 	require.Len(t, files, 0)
 	require.Len(t, files, 0)
 	_, err = lister.Next(-1)
 	_, err = lister.Next(-1)
-	require.ErrorContains(t, err, "invalid limit")
+	require.ErrorContains(t, err, conn.GetGenericError(err).Error())
 	err = lister.Close()
 	err = lister.Close()
 	require.NoError(t, err)
 	require.NoError(t, err)