This issue has been extensively described at
https://superuser.com/questions/1194816/how-do-i-resolve-directory-listing-errors-in-winscp-ftp-connected-to-mtcp-runnin, but I will gladly supply any additionally required information here.
WinSCP version: WinSCP Version 5.9.4 (Build 7333)
Client OS version: Windows 6.1.7601 Service Pack 1 - Windows 7 Professional 64-bit.
Server OS version: FreeDOS 1.1 VM running on VirtualBox
FTP server version: mTCP FtpSrv Oct 29 2011
Problem started to occur after upgrade? Yes. The last time I used WinSCP to connect to this server was 2016-08-07. I'm not sure exactly which version of WinSCP I was running then, but I have upgraded it at least a few times since, and I never encountered this kind of behavior before yesterday.
Transfer protocol: FTP
Interface: GUI with commander.
Error: Typically looks like this:
Timeout detected. (data connection)
Could not retrieve directory listing
Error listing directory '/DRIVE_C/DOWN'.
Note: I also tried creating a fresh VM of the newer FreeDOS 1.2 running mTCP FtpSrv version May 23 2013, but I experienced the exact same behavior when I connect to it.
Steps to create the issue:
I am running an mTCP FTP server on a FreeDOS 1.1 VM guest. When I connect WinSCP from my Windows host to the FTP server, I usually get the above error. If I manually specify the starting directory, I can sometimes connect successfully to a subdirectory. Which directories are accessible seems
slightly arbitrary. That is, if a directory becomes inaccessible, it
almost permanently stays inaccessible. If I upload a file to an accessible directory, that typically renders a directory inaccessible. If I download multiple files at once, I get the following error after any random number of files:
Timeout detected. (data connection)
Copying files from remote side failed.
When this happens, I can abort the transfer and immediately reconnect. The strange thing about this case though, the interruption seems to always happen on the same files. The last file downloaded is complete, and after reconnecting I can always download the file that was supposed to be next in the cue.