Hello, all!

I noted that, after receiving a given amount of data, the server
session is not able to close the connection properly.

A good connection with a small amount of data transferred looks like
the following:

==> Call to onExit callback.
[pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession
- Send SSH_MSG_CHANNEL_EOF on channel 101
[pool-3-thread-1] DEBUG org.apache.sshd.common.io.nio2.Nio2Session -
Writing 52 bytes
[pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession
- Send SSH_MSG_CHANNEL_REQUEST exit-status on channel 101
[pool-2-thread-2] DEBUG org.apache.sshd.common.io.nio2.Nio2Session -
Read 36 bytes
[pool-3-thread-1] DEBUG org.apache.sshd.common.io.nio2.Nio2Session -
Writing 68 bytes
[pool-2-thread-2] DEBUG org.apache.sshd.server.session.ServerSession -
Received packet SSH_MSG_CHANNEL_EOF
[pool-2-thread-2] DEBUG org.apache.sshd.server.channel.ChannelSession
- Received SSH_MSG_CHANNEL_EOF on channel 101
[pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession
- Closing channel 101 gracefully
[pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession
- Wait 5s for shell to exit cleanly
[pool-2-thread-3] DEBUG org.apache.sshd.common.io.nio2.Nio2Session -
Read 36 bytes
[pool-2-thread-3] DEBUG org.apache.sshd.server.session.ServerSession -
Received packet SSH_MSG_CHANNEL_CLOSE
[pool-2-thread-3] DEBUG org.apache.sshd.server.channel.ChannelSession
- Received SSH_MSG_CHANNEL_CLOSE on channel 101
==> Received the destroy() callback.
[pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession
- Send SSH_MSG_CHANNEL_CLOSE on channel 101
[pool-3-thread-1] DEBUG org.apache.sshd.common.io.nio2.Nio2Session -
Writing 52 bytes
[pool-2-thread-5] DEBUG org.apache.sshd.common.io.nio2.Nio2Session -
Socket has been disconnected, closing IoSession now
[pool-2-thread-5] DEBUG org.apache.sshd.common.io.nio2.Nio2Session -
Closing Nio2Session
[pool-2-thread-5] DEBUG org.apache.sshd.common.io.nio2.Nio2Session -
Closing socket
[pool-2-thread-5] DEBUG org.apache.sshd.server.session.ServerSession -
Closing session
[pool-2-thread-5] DEBUG org.apache.sshd.server.session.ServerSession -
Closing IoSession
[pool-2-thread-5] DEBUG org.apache.sshd.server.session.ServerSession -
IoSession closed
[pool-2-thread-5] INFO org.apache.sshd.server.session.ServerSession -
Session 123@/0:0:0:0:0:0:0:1:62075 closed

And this is what happen to a connection that is not clearly closed:

==> Call to onExit callback.
[pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession
- Send SSH_MSG_CHANNEL_EOF on channel 101
[pool-3-thread-1] DEBUG org.apache.sshd.common.io.nio2.Nio2Session -
Writing 52 bytes
[pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession
- Send SSH_MSG_CHANNEL_REQUEST exit-status on channel 101
[pool-2-thread-4] DEBUG org.apache.sshd.common.io.nio2.Nio2Session -
Read 36 bytes
[pool-3-thread-1] DEBUG org.apache.sshd.common.io.nio2.Nio2Session -
Writing 68 bytes
[pool-2-thread-4] DEBUG org.apache.sshd.server.session.ServerSession -
Received packet SSH_MSG_CHANNEL_EOF
[pool-2-thread-4] DEBUG org.apache.sshd.server.channel.ChannelSession
- Received SSH_MSG_CHANNEL_EOF on channel 101
[pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession
- Closing channel 101 gracefully
[pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession
- Wait 5s for shell to exit cleanly
[pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession
- Send SSH_MSG_CHANNEL_CLOSE on channel 101
[pool-3-thread-1] DEBUG org.apache.sshd.common.io.nio2.Nio2Session -
Writing 52 bytes

In this second faulty example, the destroy method is never called and
the connection only closes with the 10 minutes (600000ms) threshold.

Is it a kind of bug or am I misusing the application? Note that I'm
not running a shell application, but in this place I'm creating a
Lanterna (code.google.com/p/lanterna) based shell directly by
implementing Command interface and its factory. In order to confirm
this behavior I tried to run the default SSHD implementation
(SshServer.main(String[] args)) and it's still getting the same
errors.

Does someone have any idea about how to get it working?

Thanks,

Renato A. Ferreira

Enviado do Email do Windows

Reply via email to