Commons Net
  1. Commons Net
  2. NET-475

FtpClient sends REST when calling listFiles

    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.
      

        Activity

        Hide
        Sebb added a comment -

        Clarified Javadoc:

        URL: http://svn.apache.org/viewvc?rev=1361522&view=rev
        Log:
        NET-475 FtpClient sends REST when calling listFiles

        Modified:
        commons/proper/net/trunk/src/changes/changes.xml
        commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java

        Show
        Sebb added a comment - Clarified Javadoc: URL: http://svn.apache.org/viewvc?rev=1361522&view=rev Log: NET-475 FtpClient sends REST when calling listFiles Modified: commons/proper/net/trunk/src/changes/changes.xml commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java
        Hide
        Sebb added a comment -

        The obvious fix is to only set the restart offset immediately before a file transfer.

        On further reflection, does it make sense to change NET to delay the sending of REST until the next file transfer?
        It seems more natural to me to set the offset immediately before starting the transfer.

        So the only change required is to clarify that setRestartOffset() should only be called immediately before a file transfer.

        Show
        Sebb added a comment - The obvious fix is to only set the restart offset immediately before a file transfer. On further reflection, does it make sense to change NET to delay the sending of REST until the next file transfer? It seems more natural to me to set the offset immediately before starting the transfer. So the only change required is to clarify that setRestartOffset() should only be called immediately before a file transfer.

          People

          • Assignee:
            Unassigned
            Reporter:
            Thomas Axelsson
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development