On 6/1/10 10:14 AM, Doron Fediuck wrote:
On Sunday 30 May 2010 10:04:37 Doron Fediuck wrote:
Hi !
I'm implementing some basic client functionality using sshd client.
I found a case where I need to implement something of this concept:
"gzip /tmp/sample.txt | ssh [email protected] gunzip -c> /tmp/sample.txt"
On my implementation the code (using sshd client) is running an exec channel
of the gzip command into stdout. Then I should be able to use the stdout stream
and use it to unzip the file locally.
Here's a snip of my implementation:
// Create the GZIP output stream
ByteArrayOutputStream baosGZipped = new ByteArrayOutputStream ();
GZIPOutputStream gzOut = new GZIPOutputStream(baosGZipped);
// Open the input file
FileInputStream src = new FileInputStream(sourceFileName);
byte[] buf = new byte[1024];
int len;
while ((len = src.read(buf))> 0) {
gzOut.write(buf, 0, len);
}
src.close();
// Complete the GZIP file
gzOut.finish();
gzOut.flush();
gzOut.close();
//create channel
ClientChannel channel = session.createExecChannel("gunzip -c>" +
destFile);
ByteArrayInputStream in = new
ByteArrayInputStream(baosGZipped.toByteArray());
channel.setIn(in);
ByteArrayOutputStream out = new ByteArrayOutputStream();
channel.setOut(out);
ByteArrayOutputStream err = new ByteArrayOutputStream();
channel.setErr(err);
//open channel
channel.open();
//wait close
channel.waitFor(ClientChannel.CLOSED, 0);
What I discovered is that this will never end !!!
The problem is, that there's a pumpInputStream thread in
(org/apache/sshd/client/channel/ChannelSession.java),
that will never end until closeFuture.isClosed. Since this does not happen, the
unzip in the remote host doesn't end,
and the channel will never close. This prevents the client from a proper pipe
implementation.
There should be a method to properly end this while-loop thus the remote side
will be able to finish and close.
Can you please open a bug for this issue ?
Thanks !
Doron.
Anyone ?
Can you open a JIRA ? Sounds like a bug... (see
http://mina.apache.org/issue-tracking.html)`
Thanks !
--
Regards,
Cordialement,
Emmanuel Lécharny
www.nextury.com