[ 
https://issues.apache.org/jira/browse/SSHD-188?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13457987#comment-13457987
 ] 

Guillaume Nodet commented on SSHD-188:
--------------------------------------

I haven't tested with putty because the client side should not be the problem 
in your scenario -- unless the destroy() method is called when using a 
different client.  And i've set up a unit test which simulates a timeout of the 
server and it works.  And replicating your exact scenario would also mean to 
understand what kind of shell you use (and I've also tested with bash without 
problem).

Sshd uses slf4j, so you need to configure the implementation of the slf4j api 
you use.  Not sure which one it is.

                
> Session timeout doesn't call destroy() from InvertedShell
> ---------------------------------------------------------
>
>                 Key: SSHD-188
>                 URL: https://issues.apache.org/jira/browse/SSHD-188
>             Project: MINA SSHD
>          Issue Type: Bug
>         Environment: Windows, Linux
>            Reporter: Maarten Smit
>              Labels: close, destroy,, idle,, shell, timeout,
>
> When creating the ssh server I have this:
> sshd.setShellFactory(new PseudoTerminalFactory("/system/bin/sh", "-i"));
> The PseudoTerminalFactory has this:
>     @Override
>     public Command create() {
>         return new InvertedShellWrapper(new PseudoTerminal());
>     }
> And the "PseudoTerminal implements InvertedShell" contains the following
> functions:
> destroy()
> exitValue()
> getErrorStream()
> getInputStream()
> getOutputStream()
> isAlive()
> start(Map<String, String> env)
> Now here is the thing, when a session is created and the user:
> - closes it
> - or the server is stopped
> The destroy and exitValue functions are being called. In the destroy
> function we stop the shell process (which is started in the start function).
> However, if a user has a shell connection and doesn't do anything, default
> after 10 minutes the idletimeout will have passed and the user gets a
> timeout error and gets disconnected. HOWEVER, after that the destroy and
> exitValue are never called, so the isAlive function will continue being
> called (always returns true till the destroy function is called) and we
> will have an endless running thread.
> Next time we start the server we get an error the port is in use, etc. And
> all the time the checking of isAlive of that session will just continue.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to