[
https://issues.apache.org/jira/browse/NET-610?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15855646#comment-15855646
]
Sergey Yanzin commented on NET-610:
-----------------------------------
No, I used FTPClient to internal work, in production it works fine, in local
(home) environment I used the first available free FTP server - XLight in my
case (https://www.xlightftpd.com/). It is very simple to install and configure.
I can help if necessary.
> FTPClient.mlistFile incorrectly handles MLST reply
> --------------------------------------------------
>
> Key: NET-610
> URL: https://issues.apache.org/jira/browse/NET-610
> Project: Commons Net
> Issue Type: Bug
> Components: FTP
> Affects Versions: 3.5
> Environment: using some FTP-server incorrectly releasing RFC 3659.
> For example xlight ftp server (https://www.xlightftpd.com/)
> Reporter: Sergey Yanzin
> Labels: easyfix, patch
> Fix For: 3.6
>
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> By RFC 3659 server must start fact with space character. But some inaccurate
> realisations reply without starting space.
> But org.apache.commons.net.ftp.FTPClient.mlistFile() skips leading character
> even it is not a space:
> public FTPFile mlistFile(String pathname) throws IOException
> {
> boolean success =
> FTPReply.isPositiveCompletion(sendCommand(FTPCmd.MLST, pathname));
> if (success){
> String entry = getReplyStrings()[1].substring(1); // skip leading
> space for parser
> return MLSxEntryParser.parseEntry(entry);
> } else {
> return null;
> }
> }
> I think it is wrong. The method should throw exception, if first character is
> not a space. Or does not remove starting char (and should be some option
> responsible for that behaviour) if it is not a space.
> my workaround in overriden method:
> public FTPFile mlistFile(String pathname) throws IOException {
> final boolean success =
> FTPReply.isPositiveCompletion(sendCommand(FTPCmd.MLST, pathname));
> if (success) {
> final String reply = getReplyStrings()[1];
> final String entry = reply.charAt(0) == ' ' ? reply.substring(1)
> : reply;
> return MLSxEntryParser.parseEntry(entry);
> } else {
> return null;
> }
> }
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)