From d37b54b1fd2ba7aa495c01a03a6b92bc104633bb Mon Sep 17 00:00:00 2001 From: David Kocher Date: Wed, 10 Sep 2014 11:10:42 +0200 Subject: [PATCH] Change handle to byte[]. Fix interoperability issue with Tectia SSH Server. Refer to issue #54. --- src/main/java/net/schmizz/sshj/sftp/RemoteDirectory.java | 2 +- src/main/java/net/schmizz/sshj/sftp/RemoteFile.java | 4 ++-- src/main/java/net/schmizz/sshj/sftp/RemoteResource.java | 4 ++-- src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/schmizz/sshj/sftp/RemoteDirectory.java b/src/main/java/net/schmizz/sshj/sftp/RemoteDirectory.java index c564881b..08e9cdf5 100644 --- a/src/main/java/net/schmizz/sshj/sftp/RemoteDirectory.java +++ b/src/main/java/net/schmizz/sshj/sftp/RemoteDirectory.java @@ -25,7 +25,7 @@ import java.util.concurrent.TimeUnit; public class RemoteDirectory extends RemoteResource { - public RemoteDirectory(Requester requester, String path, String handle) { + public RemoteDirectory(Requester requester, String path, byte[] handle) { super(requester, path, handle); } diff --git a/src/main/java/net/schmizz/sshj/sftp/RemoteFile.java b/src/main/java/net/schmizz/sshj/sftp/RemoteFile.java index 025980c6..3ee824f1 100644 --- a/src/main/java/net/schmizz/sshj/sftp/RemoteFile.java +++ b/src/main/java/net/schmizz/sshj/sftp/RemoteFile.java @@ -29,7 +29,7 @@ import java.util.concurrent.TimeUnit; public class RemoteFile extends RemoteResource { - public RemoteFile(Requester requester, String path, String handle) { + public RemoteFile(Requester requester, String path, byte[] handle) { super(requester, path, handle); } @@ -108,7 +108,7 @@ public class RemoteFile return 1 + // packet type 4 + // request id 4 + // next length - handle.length() + // next + handle.length + // next 8 + // file offset 4 + // data length 4; // packet length diff --git a/src/main/java/net/schmizz/sshj/sftp/RemoteResource.java b/src/main/java/net/schmizz/sshj/sftp/RemoteResource.java index bf1e3e8c..e3742d35 100644 --- a/src/main/java/net/schmizz/sshj/sftp/RemoteResource.java +++ b/src/main/java/net/schmizz/sshj/sftp/RemoteResource.java @@ -30,9 +30,9 @@ public abstract class RemoteResource protected final Requester requester; protected final String path; - protected final String handle; + protected final byte[] handle; - protected RemoteResource(Requester requester, String path, String handle) { + protected RemoteResource(Requester requester, String path, byte[] handle) { this.requester = requester; this.path = path; this.handle = handle; diff --git a/src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java b/src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java index 0b9d3d26..94a4fb46 100644 --- a/src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java +++ b/src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java @@ -132,9 +132,9 @@ public class SFTPEngine public RemoteFile open(String path, Set modes, FileAttributes fa) throws IOException { - final String handle = doRequest( + final byte[] handle = doRequest( newRequest(PacketType.OPEN).putString(path).putUInt32(OpenMode.toMask(modes)).putFileAttributes(fa) - ).ensurePacketTypeIs(PacketType.HANDLE).readString(); + ).ensurePacketTypeIs(PacketType.HANDLE).readBytes(); return new RemoteFile(this, path, handle); } @@ -150,9 +150,9 @@ public class SFTPEngine public RemoteDirectory openDir(String path) throws IOException { - final String handle = doRequest( + final byte[] handle = doRequest( newRequest(PacketType.OPENDIR).putString(path) - ).ensurePacketTypeIs(PacketType.HANDLE).readString(); + ).ensurePacketTypeIs(PacketType.HANDLE).readBytes(); return new RemoteDirectory(this, path, handle); }