[
https://issues.apache.org/jira/browse/SSHD-118?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Otto Frost updated SSHD-118:
----------------------------
Description:
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();
}
}
was:
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 {
// 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();
}
}
> 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