Bugfix for issue #2423 - FTP contents invisible

Change working directory to target path and call GetListing on
current directory instead of calling GetListing on explicit path.

For some reason GetListing(path) does not always return the contents of
the directory. However, calling SetWorkingDirectory(path) followed by
GetListing(null, options) to list the contents of the working directory
does consistently work.

Similar behavior was confirmed using ncftp client. I suspect this is a
strange bug/nuance in the server's implementation of the LIST command?
This commit is contained in:
Rick Brown
2023-10-07 17:30:32 -04:00
parent c16eeff130
commit be2218afcc

View File

@@ -288,8 +288,20 @@ namespace keepass2android.Io
{
using (var client = GetClient(ioc))
{
/*
* For some reason GetListing(path) does not always return the contents of the directory.
* However, calling SetWorkingDirectory(path) followed by GetListing(null, options) to
* list the contents of the working directory does consistently work.
*
* Similar behavior was confirmed using ncftp client. I suspect this is a strange
* bug/nuance in the server's implementation of the LIST command?
*
* [bug #2423]
*/
client.SetWorkingDirectory(IocToLocalPath(ioc));
List<FileDescription> files = new List<FileDescription>();
foreach (FtpListItem item in client.GetListing(IocToLocalPath(ioc),
foreach (FtpListItem item in client.GetListing(null,
FtpListOption.Modify | FtpListOption.Size | FtpListOption.DerefLinks))
{