2

We use Mina sshd client to connect to Linux based server. It looks like when we get the command SSH_MSG_CHANNEL_DATA along with the Received SSH_MSG_CHANNEL_EOF, Mina will not put the data into the output buffer and will log: "ChannelExec - Discarding output packet because channel is being closed"

Here is my sample code and Mina debug.

Is This a bug our am I using Mina async wrong?

val channel: ChannelExec = clientSession.createExecChannel(cmd)
channel.setupSensibleDefaultPty()
channel.setUsePty(true)
channel.setStreaming(ClientChannel.Streaming.Async)

val bais: ByteArrayInputStream = new ByteArrayInputStream(Array[Byte]())
channel.setIn(bais)

val openFuture = channel.open()

val baosOut: ByteArrayOutputStream = new ByteArrayOutputStream()

openFuture.addListener(new SshFutureListener[OpenFuture] {
    override def operationComplete(future: OpenFuture): Unit = {
        channel.getAsyncOut.read(new Buffer).addListener(new SshFutureListener[IoReadFuture] {
            def operationComplete(future: IoReadFuture) {
                readBuffer(channel, future, channel.getAsyncOut, baosOut, this)
            }
        })
    }
})
openFuture.await(connectionConfig.maxConnTime)

DEBUG Nio2Session - Read 244 bytes    
DEBUG ChannelExec - Received SSH_MSG_CHANNEL_WINDOW_ADJUST on channel ChannelExec[id=153, recipient=0]    
DEBUG Window - Increase client remote window by 2097152 up to 2097152    
DEBUG ChannelExec - Received SSH_MSG_CHANNEL_DATA on channel ChannelExec[id=153, recipient=0]    
DEBUG ChannelExec - Received SSH_MSG_CHANNEL_EOF on channel ChannelExec[id=153, recipient=0]    
DEBUG ChannelExec - Received SSH_MSG_CHANNEL_REQUEST exit-status on channel ChannelExec[id=153, recipient=0] (wantReply false)    
DEBUG ChannelExec - Received SSH_MSG_CHANNEL_CLOSE on channel ChannelExec[id=153, recipient=0]    
DEBUG ChannelExec - Closing ChannelExec[id=153, recipient=0] gracefully    
DEBUG ChannelSession$1 - Closing ChannelAsyncOutputStream[ChannelExec[id=153, recipient=0]] gracefully    
DEBUG ChannelExec - Send SSH_MSG_CHANNEL_EOF on channel ChannelExec[id=153, recipient=0]    
DEBUG ChannelExec - Discarding output packet because channel is being closed    
DEBUG ChannelSession$1 - ChannelAsyncOutputStream[ChannelExec[id=153, recipient=0]] closed    
DEBUG ChannelAsyncInputStream - Closing ChannelAsyncInputStream[ChannelExec[id=153, recipient=0]] gracefully    
DEBUG ChannelAsyncInputStream - ChannelAsyncInputStream[ChannelExec[id=153, recipient=0]] closed    
DEBUG ChannelAsyncInputStream - Closing ChannelAsyncInputStream[ChannelExec[id=153, recipient=0]] gracefully    
DEBUG ChannelAsyncInputStream - ChannelAsyncInputStream[ChannelExec[id=153, recipient=0]] closed    
DEBUG ChannelExec - Send SSH_MSG_CHANNEL_CLOSE on channel ChannelExec[id=153, recipient=0]    
DEBUG Nio2Session - Writing 52 bytes    
DEBUG Nio2Session - Finished writing    
DEBUG ChannelExec - Message SSH_MSG_CHANNEL_CLOSE written on channel ChannelExec[id=153, recipient=0]    
DEBUG ChannelSession$1 - ChannelAsyncOutputStream[ChannelExec[id=153, recipient=0]] is already closed    
DEBUG ChannelAsyncInputStream - ChannelAsyncInputStream[ChannelExec[id=153, recipient=0]] is already closed    
DEBUG ChannelAsyncInputStream - ChannelAsyncInputStream[ChannelExec[id=153, recipient=0]] is already closed    
DEBUG ChannelExec - ChannelExec[id=153, recipient=0] closed

0 Answers0