[ 
https://issues.apache.org/jira/browse/SSHD-456?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Work on SSHD-456 started by Goldstein Lyor.
-------------------------------------------
> Nio2Acceptor does not unmanage the session upon exception in SessionListener
> ----------------------------------------------------------------------------
>
>                 Key: SSHD-456
>                 URL: https://issues.apache.org/jira/browse/SSHD-456
>             Project: MINA SSHD
>          Issue Type: Bug
>    Affects Versions: 0.14.0
>            Reporter: Clement Pellerin
>            Assignee: Goldstein Lyor
>
> When the sessionCreated() method of a SessionListener throws an exception the 
> Nio2Acceptor gets confused. The IoService stops listening for new connections 
> (socket.accept() is not called again) and the rejected session is never 
> unmanaged.
> The bug occurs in the exception handling of 
> Nio2Acceptor.AcceptCompletionHandler.onCompleted()
> {code}
>            try {
>                 // Create a session
>                 Nio2Session session = new Nio2Session(Nio2Acceptor.this, 
> handler, result);
>                 handler.sessionCreated(session);
>                 sessions.put(session.getId(), session);
>                 session.startReading();
>                 // Accept new connections
>                 socket.accept(address, this);
>             } catch (Throwable exc) {
>                 failed(exc, address);
>             }
> {code}
> Here is a sample SessionListener
> {code}
> import org.apache.sshd.common.Session;
> import org.apache.sshd.common.SessionListener;
> public class MySessionListener implements SessionListener
> {
>       public void sessionCreated(Session session) {
>               throw new RuntimeException();
>       }
>       public void sessionEvent(Session session, Event event) {
>       }
>       public void sessionClosed(Session session) {
>       }
> }
> {code}
> Here is how to attach the SessionListener:
> {code}
> SshServer server = ...;
> SessionFactory sessionFactory = new SessionFactory();
> sessionFactory.addListener(new MySessionListener());
> server.setSessionFactory(sessionFactory);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to