Hello. I've been tracking a bug in lftp which has been around for quite a while. Searches on Google show that I'm not the only person who has noticed this.

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>

Reply via email to