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