[ 
https://issues.apache.org/jira/browse/SSHD-580?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Volth updated SSHD-580:
-----------------------
    Description: 
{code:java}
val channel = session.createExecChannel("cat /dev/stdin")
channel.setOut(new sshd.common.util.io.NoCloseOutputStream(System.out))
channel.setErr(new sshd.common.util.io.NoCloseOutputStream(System.err))
channel.open().verify()
val out = channel.getInvertedIn
out.write("lala\nla".getBytes)
out.close()
channel.waitFor(sshd.client.channel.ClientChannel.ClientChannelEvent.CLOSED :: 
Nil, 0)
{code}

I expect that out.close() would close stdin of remote program and such process 
as "cat /dev/stdin" would terminate after reading stdin to the end.

It works well when pumping thread is in action:
{code:java}
val channel = session.createExecChannel("cat /dev/stdin")
channel.setOut(new sshd.common.util.io.NoCloseOutputStream(System.out))
channel.setErr(new sshd.common.util.io.NoCloseOutputStream(System.err))
channel.setIn(new ByteArrayInputStream("lala\nla".getBytes))
channel.open().verify()
channel.waitFor(sshd.client.channel.ClientChannel.ClientChannelEvent.CLOSED :: 
Nil, 0)
{code}

The pumping thread sends SSH_MSG_CHANNEL_EOF message at the end of the data.
invertedIn.close() does not.

Tested agains git "master" and wide range of remote ssh-servers


  was:
{code:java}
val channel = session.createExecChannel("cat /dev/stdin")
channel.setOut(new sshd.common.util.io.NoCloseOutputStream(System.out))
channel.setErr(new sshd.common.util.io.NoCloseOutputStream(System.err))
channel.open().verify()
val out = channel.getInvertedIn
out.write("lala\nla".getBytes)
out.close()
channel.waitFor(sshd.client.channel.ClientChannel.ClientChannelEvent.CLOSED :: 
Nil, 0)
{code}

Perhaps, it is not a bug. 

I expect that out.close() would close stdin of remote program and such process 
as "cat /dev/stdin" would terminate after reading stdin to the end.

It terminates with JSch and does not terminate with Mina SSHD.
Tested agains git "master" and wide range of remote ssh-servers

It works well when pumping thread is in action:
{code:java}
val channel = session.createExecChannel("cat /dev/stdin")
channel.setOut(new sshd.common.util.io.NoCloseOutputStream(System.out))
channel.setErr(new sshd.common.util.io.NoCloseOutputStream(System.err))
channel.setIn(new ByteArrayInputStream("lala\nla".getBytes))
channel.open().verify()
channel.waitFor(sshd.client.channel.ClientChannel.ClientChannelEvent.CLOSED :: 
Nil, 0)
{code}

The pumping thread sends SSH_MSG_CHANNEL_EOF message at the end of the data.
invertedIn.close() does not.


> getInvertedIn.close() does not close stdin of remote program
> ------------------------------------------------------------
>
>                 Key: SSHD-580
>                 URL: https://issues.apache.org/jira/browse/SSHD-580
>             Project: MINA SSHD
>          Issue Type: Bug
>    Affects Versions: 1.1.0
>            Reporter: Volth
>
> {code:java}
> val channel = session.createExecChannel("cat /dev/stdin")
> channel.setOut(new sshd.common.util.io.NoCloseOutputStream(System.out))
> channel.setErr(new sshd.common.util.io.NoCloseOutputStream(System.err))
> channel.open().verify()
> val out = channel.getInvertedIn
> out.write("lala\nla".getBytes)
> out.close()
> channel.waitFor(sshd.client.channel.ClientChannel.ClientChannelEvent.CLOSED 
> :: Nil, 0)
> {code}
> I expect that out.close() would close stdin of remote program and such 
> process as "cat /dev/stdin" would terminate after reading stdin to the end.
> It works well when pumping thread is in action:
> {code:java}
> val channel = session.createExecChannel("cat /dev/stdin")
> channel.setOut(new sshd.common.util.io.NoCloseOutputStream(System.out))
> channel.setErr(new sshd.common.util.io.NoCloseOutputStream(System.err))
> channel.setIn(new ByteArrayInputStream("lala\nla".getBytes))
> channel.open().verify()
> channel.waitFor(sshd.client.channel.ClientChannel.ClientChannelEvent.CLOSED 
> :: Nil, 0)
> {code}
> The pumping thread sends SSH_MSG_CHANNEL_EOF message at the end of the data.
> invertedIn.close() does not.
> Tested agains git "master" and wide range of remote ssh-servers



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to