[ https://issues.apache.org/jira/browse/SSHD-118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13022055#comment-13022055 ]
Otto Frost commented on SSHD-118: --------------------------------- The patch solves the immediate problem, but the patch has no error handling. I think you should include the stuff I have above, and improve it. Instead of e.printStackTrace(); there should be some better logging and error handling. > uploading and then renaming a file doesn't work (on windows) > ------------------------------------------------------------ > > Key: SSHD-118 > URL: https://issues.apache.org/jira/browse/SSHD-118 > Project: MINA SSHD > Issue Type: Bug > Affects Versions: 0.5.0 > Environment: windows xp professional sun jdk 1.5.0.22, jre 1.6 > windows 2003 server SP2 sun jdk jre 1.5.0.22 > Reporter: Otto Frost > Priority: Critical > Original Estimate: 1h > Remaining Estimate: 1h > > I logon, and then > put xx xx > rename xx yy > O1706@WKE198515 ~ > $ sftp -oport=2222 a@localhost > Connecting to localhost... > a@localhost's password: > sftp> cd tmp > sftp> put xx > Uploading xx to /C:/NWDS7.1EHP1/workspace/minasshd_custom/tmp/xx > xx 100% 1039 1.0KB/s 00:00 > sftp> rename xx yy > Couldn't rename file "/C:/NWDS7.1EHP1/workspace/minasshd_custom/tmp/xx" to > "/C:/ > NWDS7.1EHP1/workspace/minasshd_custom/tmp/yy": Failure > sftp> > The problem is that the file isn't closed after uploading, > SftpSubSystem.process SSH_FXP_WRITE > NativeSshFile.createOutputStream doesn't close the file, even though the > close method is called. > I can't rename the file from the os either because mina sshd holds it locked > after upload. When mina sshd is shut down I can rename the file. After > restarting minasshd the file can be renamed (from mina sshd or from the os). > Here is the correction: > class NativeSshFile > public void truncate() throws IOException { > // modification > // permission check > // and close the raf > if (!isWritable()) { > throw new IOException("No write permission : " + > file.getName()); > } > RandomAccessFile raf = new RandomAccessFile(file, "rw"); > if (raf != null) { > raf.setLength(0); > raf.close(); > } > } -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira