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

Otto Frost commented on SSHD-118:
---------------------------------

               if (raf!=null) 
             raf.close(); 
I'm rather safe than sorry. Don't know under which conditions, but in my 
experience it usually dumps if the file failed to open.

Added fix for the real problem in the description


> 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 fix:
> class NativeSshFile
>       public void truncate() throws IOException {
>               // e.on 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

Reply via email to