I can very easily reproduce this.
1: Log into an ftp site which is using Proftpd. 2: Create a directory tree which includes at least one empty directory. 3: Run the mirror command on that directory tree.
When lftp tries to get the directory listing on the empty directory, it will hang and begin a series of longer and longer timeouts and retries.
I hope this helps. If it turns out to be a bug in ProFTPD, is there some sort of workaround available, or could one be implemented?
Thanks in advance, and thank you as well for making a very useful tool, which I prefer over any of the others I've tried.
Here's the entire sequence, using lftp 2.6.12, which I just downloaded. This is followed by a second method which also duplicates this bug.
[EMAIL PROTECTED] lftp -d -u skywatcher ravenscall.net Password: lftp [EMAIL PROTECTED]:~> mkdir test ---- Connecting to ravenscall.net (209.25.134.190) port 21 <--- 220 ProFTPD 1.2.9 Server (50free.org) [209.25.134.190] ---> AUTH TLS <--- 500 AUTH not understood ---> USER skywatcher <--- 331 Password required for skywatcher. ---> PASS XXXX <--- 230 User skywatcher logged in. ---> PWD <--- 257 "/" is current directory. ---> MKD test <--- 257 "/test" - Directory successfully created mkdir ok, `test' created lftp [EMAIL PROTECTED]:/> mkdir test/empty_dir ---> MKD test/empty_dir <--- 257 "/test/empty_dir" - Directory successfully created mkdir ok, `test/empty_dir' created lftp [EMAIL PROTECTED]:/> mirror test ---> CWD /test <--- 250 CWD command successful. ---> PRET LIST <--- 500 PRET not understood ---> PASV <--- 227 Entering Passive Mode (209,25,134,190,175,242). ---- Connecting data socket to (209.25.134.190) port 45042 ---> LIST <--- 150 Opening ASCII mode data connection for file list ---- Closing data socket <--- 226 Transfer complete. ---> TYPE I <--- 200 Type set to I ---> MDTM empty_dir <--- 550 empty_dir: Permission denied ---> CWD /test/empty_dir <--- 250 CWD command successful. ---> TYPE A <--- 200 Type set to A ---> PASV <--- 227 Entering Passive Mode (209,25,134,190,175,244). ---- Connecting data socket to (209.25.134.190) port 45044 ---> LIST ---- Closing data socket <--- 150 Opening ASCII mode data connection for file list <--- 226 Transfer complete. ---> PASV <--- 227 Entering Passive Mode (209,25,134,190,175,246). ---- Connecting data socket to (209.25.134.190) port 45046 ---> NLST **** Connection reset by peer ---- Closing data socket <--- 450 /test/empty_dir: Permission denied ---> QUIT <--- 221 Goodbye. ---- Closing control socket ---- Connecting to ravenscall.net (209.25.134.190) port 21 <--- 220 ProFTPD 1.2.9 Server (50free.org) [209.25.134.190] ---> AUTH TLS <--- 500 AUTH not understood ---> USER skywatcher <--- 331 Password required for skywatcher. ---> PASS XXXX <--- 230 User skywatcher logged in. ---> CWD /test/empty_dir <--- 250 CWD command successful. ---> PASV <--- 227 Entering Passive Mode (209,25,134,190,175,250). ---- Connecting data socket to (209.25.134.190) port 45050 ---> NLST **** Connection reset by peer ---- Closing data socket <--- 450 /test/empty_dir: Permission denied ---> QUIT <--- 221 Goodbye. ---- Closing control socket ---- Connecting to ravenscall.net (209.25.134.190) port 21 <--- 220 ProFTPD 1.2.9 Server (50free.org) [209.25.134.190] ---> AUTH TLS <--- 500 AUTH not understood ---> USER skywatcher <--- 331 Password required for skywatcher. ---> PASS XXXX <--- 230 User skywatcher logged in. ---> CWD /test/empty_dir <--- 250 CWD command successful. ---> PASV <--- 227 Entering Passive Mode (209,25,134,190,176,39). ---- Connecting data socket to (209.25.134.190) port 45095 ---> NLST **** Connection reset by peer ---- Closing data socket <--- 450 /test/empty_dir: Permission denied ---> QUIT <--- 221 Goodbye. ---- Closing control socket Interrupt lftp [EMAIL PROTECTED]:/>
lftp [EMAIL PROTECTED]:/> version Lftp | Version 2.6.12 | Copyright (c) 1996-2002 Alexander V. Lukyanov This is free software with ABSOLUTELY NO WARRANTY. See COPYING for details. Send bug reports and questions to <[EMAIL PROTECTED]>. lftp [EMAIL PROTECTED]:/>
Now here's the other way I was able to reproduce the bug.
lftp [EMAIL PROTECTED]:/> mkdir test2 ---> MKD test2 <--- 257 "/test2" - Directory successfully created mkdir ok, `test2' created lftp [EMAIL PROTECTED]:/> mkdir test2/empty_dir ---> MKD test2/empty_dir <--- 257 "/test2/empty_dir" - Directory successfully created mkdir ok, `test2/empty_dir' created lftp [EMAIL PROTECTED]:/> cd test2/empty_dir ---> CWD /test2/empty_dir <--- 250 CWD command successful. cd ok, cwd=/test2/empty_dir lftp [EMAIL PROTECTED]:/test2/empty_dir> nlist ---> PASV <--- 227 Entering Passive Mode (209,25,134,190,169,239). ---- Connecting data socket to (209.25.134.190) port 43503 ---> NLST **** Connection reset by peer ---- Closing data socket <--- 450 /test2/empty_dir: Permission denied ---> QUIT <--- 221 Goodbye. ---- Closing control socket ---- Connecting to ravenscall.net (209.25.134.190) port 21 <--- 220 ProFTPD 1.2.9 Server (50free.org) [209.25.134.190] ---> AUTH TLS <--- 500 AUTH not understood ---> USER skywatcher <--- 331 Password required for skywatcher. ---> PASS XXXX <--- 230 User skywatcher logged in. ---> CWD /test2/empty_dir <--- 250 CWD command successful. ---> PASV <--- 227 Entering Passive Mode (209,25,134,190,169,241). ---- Connecting data socket to (209.25.134.190) port 43505 ---> NLST **** Connection reset by peer ---- Closing data socket <--- 450 /test2/empty_dir: Permission denied ---> QUIT <--- 221 Goodbye. ---- Closing control socket Interrupt lftp [EMAIL PROTECTED]:/test2/empty_dir>
Oh, and it's not a permission issue, either:
lftp [EMAIL PROTECTED]:/test2/empty_dir> ls ---> CWD /test2/empty_dir <--- 250 CWD command successful. ---> PASV <--- 227 Entering Passive Mode (209,25,134,190,186,192). ---- Connecting data socket to (209.25.134.190) port 47808 ---> LIST ---- Closing data socket <--- 150 Opening ASCII mode data connection for file list <--- 226 Transfer complete. lftp [EMAIL PROTECTED]:/test2/empty_dir>
