Details
Description
When connecting to the SFTP subsystem running on a windows server, directory listing for the root directory (C in my case is wrong/does not work. Actually, the response is "Failure" due to an IOException. I debugged it a little, and my finding is, that in the end in org.apache.sshd.common.file.nativefs.NativeFileSystemView.getFile(String, String) it instantiates a new File("/C:"). This however does not do what is expected it seems. calling .list() on this File lists the contents of the current working directory of ther server!
This results in a wrong file list, and as soon as org.apache.sshd.server.sftp.SftpSubsystem.writeAttrs(Buffer, SshFile, boolean) tries to read attributes for those files, it will throw an IOException:
java.io.FileNotFoundException: /C:/.classpath
at org.apache.sshd.server.sftp.SftpSubsystem.writeAttrs(SftpSubsystem.java:973)
at org.apache.sshd.server.sftp.SftpSubsystem.sendName(SftpSubsystem.java:840)
at org.apache.sshd.server.sftp.SftpSubsystem.process(SftpSubsystem.java:615)
at org.apache.sshd.server.sftp.SftpSubsystem.run(SftpSubsystem.java:334)
at java.lang.Thread.run(Thread.java:724)
As you can see the not found file is C:\.classpath which clearly does not exist, but $(PWD)/.classpath does exist, as the server runs from the plugin i'm developing in eclipse.
Attachments
Attachments
Issue Links
- Is contained by
-
SSHD-310 Better file system abstraction to support multiple roots
- Resolved