mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guillaume Nodet (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (SSHD-188) Session timeout doesn't call destroy() from InvertedShell
Date Tue, 18 Sep 2012 17:48:08 GMT

    [ 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

Mime
View raw message