Details
Description
First setting a restart offset and then requesting a directory listing makes FtpClient send REST, LIST. The correct behavior should be to send only LIST and send REST on the first file transfer operation.
Versions 3.1 and 3.0.1 of commons-net have shown this behavior in our software.
Following is a minimal sample, tested with version 3.1:
package test; import java.io.PrintWriter; import org.apache.commons.net.PrintCommandListener; import org.apache.commons.net.ftp.FTPClient; public class Test { public static void main(String[] args) throws Exception { FTPClient client = new FTPClient(); client.addProtocolCommandListener(new PrintCommandListener( new PrintWriter(System.out), true)); client.connect(Server.ip); client.login(Server.username, Server.password); client.setRestartOffset(10); client.listFiles(""); } }
Output:
220 Welcome to FTP service. USER ******* 331 Please specify the password. PASS ******* 230 Login successful. SYST 215 UNIX Type: L8 PORT 10,43,92,50,230,56 200 PORT command successful. Consider using PASV. REST 10 350 Restart position accepted (10). LIST 150 Here comes the directory listing. 226 Directory send OK.