You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Frits Jalvingh (Jira)" <ji...@apache.org> on 2021/07/06 20:01:00 UTC

[jira] [Commented] (NET-702) FTPSClient fails on listFiles()

    [ https://issues.apache.org/jira/browse/NET-702?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17375985#comment-17375985 ] 

Frits Jalvingh commented on NET-702:
------------------------------------

There seems to be an issue around this with ssl reuse; when I set require_ssl_reuse=NO for vsftpd then listing files does work..

> FTPSClient fails on listFiles()
> -------------------------------
>
>                 Key: NET-702
>                 URL: https://issues.apache.org/jira/browse/NET-702
>             Project: Commons Net
>          Issue Type: Bug
>          Components: FTP
>    Affects Versions: 3.7.2, 3.8.0
>            Reporter: Frits Jalvingh
>            Priority: Major
>
> Calling ftpsclient.listFiles() fails in all ways.
> See the program below.
> Not having the "magic incantations" (execPROT("P")) makes it fail because it returns no files without ANY indication of error, even though the remote server answered with a "522 data connections must be encrypted" error. This is silent failure.
> If you do add the execPROC call then listFiles fails with the following exception:
> Exception in thread "main" javax.net.ssl.SSLProtocolException: Received close_notify during handshakeException in thread "main" javax.net.ssl.SSLProtocolException: Received close_notify during handshake at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:129) at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:264) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:255) at java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:250) at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:181) at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164) at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1155) at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1125) at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:823) at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) at java.base/java.io.InputStreamReader.read(InputStreamReader.java:185) at java.base/java.io.BufferedReader.fill(BufferedReader.java:161) at java.base/java.io.BufferedReader.readLine(BufferedReader.java:326) at java.base/java.io.BufferedReader.readLine(BufferedReader.java:392) at org.apache.commons.net.ftp.FTPFileEntryParserImpl.readNextEntry(FTPFileEntryParserImpl.java:53) at org.apache.commons.net.ftp.FTPListParseEngine.read(FTPListParseEngine.java:139) at org.apache.commons.net.ftp.FTPListParseEngine.readServerList(FTPListParseEngine.java:119) at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2264) at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2390) at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2651) at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2595) at nl.skarp.dataloader.datasources.TestFtps.main(TestFtps.java:40)
>  
> The program I used:
> {code:java}
> public class TestFtps {
>    static public void main(String[] args) throws Exception {
>       FTPSClient client = new FTPSClient();
>       client.connect("localhost");
>       int reply = client.getReplyCode();
>       if(!FTPReply.isPositiveCompletion(reply)) {
>          throw new DataAccessConfigException("ftp(s) server refused connection");
>       }
>       client.enterLocalPassiveMode();                   // For firewall usage
>       System.out.println("ftp: login");
>       if(!client.login("jal", "possward")) {
>          throw new DataAccessConfigException("ftp(s) login failed");
>       }
>       client.setFileType(FTP.BINARY_FILE_TYPE);
>       client.type(FTP.BINARY_FILE_TYPE);
>       System.out.println("ftp: set passive mode");
>       //client.enterLocalPassiveMode();                 // For firewall usage
>       System.out.println("Fixing ftps listing");
>       FTPSClient ftpsClient = (FTPSClient) client;
>       ftpsClient.execPROT("P");
>       ftpsClient.execPBSZ(0);
>       FTPFile[] ftpFiles = client.listFiles();
>       for(FTPFile ftpFile : ftpFiles) {
>          System.out.println("Got file " + ftpFile.getName());
>       }
>    }
> }
> {code}
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)