remove ftpserverlib fork

the correct flow is to add features to the upstream library first

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
Nicola Murino
2025-09-21 13:00:40 +02:00
parent d2ee43585a
commit 952df50a98
8 changed files with 38 additions and 116 deletions

View File

@@ -291,7 +291,7 @@ func (c *Connection) Symlink(oldname, newname string) error {
}
// ReadDir implements ClientDriverExtensionFilelist
func (c *Connection) ReadDir(name string) (ftpserver.DirLister, error) {
func (c *Connection) ReadDir(name string) ([]os.FileInfo, error) {
c.UpdateLastActivity()
if c.doWildcardListDir {
@@ -306,16 +306,21 @@ func (c *Connection) ReadDir(name string) (ftpserver.DirLister, error) {
if err != nil {
return nil, err
}
return &patternDirLister{
patternLister := &patternDirLister{
DirLister: lister,
pattern: baseName,
lastCommand: c.clientContext.GetLastCommand(),
dirName: name,
connectionPath: c.clientContext.Path(),
}, nil
}
return consumeDirLister(patternLister)
}
return c.ListDir(name)
lister, err := c.ListDir(name)
if err != nil {
return nil, err
}
return consumeDirLister(lister)
}
// GetHandle implements ClientDriverExtentionFileTransfer
@@ -583,3 +588,24 @@ func (l *patternDirLister) Next(limit int) ([]os.FileInfo, error) {
}
}
}
func consumeDirLister(lister vfs.DirLister) ([]os.FileInfo, error) {
defer lister.Close()
var results []os.FileInfo
for {
files, err := lister.Next(vfs.ListerBatchSize)
finished := errors.Is(err, io.EOF)
results = append(results, files...)
if err != nil && !finished {
return results, err
}
if finished {
lister.Close()
break
}
}
return results, nil
}