This is an automated email from the ASF dual-hosted git repository. lgoldstein pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mina-sshd.git
commit 1de0f8be4c3b275f4b8935c9c295df12a2390ef3 Author: Lyor Goldstein <lgoldst...@apache.org> AuthorDate: Thu Nov 28 20:03:39 2019 +0200 [SSHD-956] Fixed return value of SessionHelper#checkForTimeouts in case session is being closed --- .../sshd/common/session/helpers/SessionHelper.java | 8 +++++--- .../session/helpers/SessionTimeoutListener.java | 24 +++++++++++----------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionHelper.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionHelper.java index d18d803..baf056d 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionHelper.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionHelper.java @@ -225,13 +225,14 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements if ((!isOpen()) || isClosing() || isClosed()) { if (log.isDebugEnabled()) { log.debug("checkForTimeouts({}) session closing", this); - return TimeoutIndicator.NONE; } + return TimeoutIndicator.NONE; } // If already detected a timeout don't check again TimeoutIndicator result = timeoutStatus.get(); - TimeoutStatus status = (result == null) ? TimeoutStatus.NoTimeout : result.getStatus(); + TimeoutStatus status = + (result == null) ? TimeoutStatus.NoTimeout : result.getStatus(); if ((status != null) && (status != TimeoutStatus.NoTimeout)) { if (log.isDebugEnabled()) { log.debug("checkForTimeouts({}) already detected {}", this, result); @@ -289,7 +290,8 @@ public abstract class SessionHelper extends AbstractKexFactoryManager implements timeoutStatus.set(result); disconnect(SshConstants.SSH2_DISCONNECT_PROTOCOL_ERROR, - "Detected " + status + " after " + result.getExpiredValue() + "/" + result.getThresholdValue() + " ms."); + "Detected " + status + " after " + result.getExpiredValue() + + "/" + result.getThresholdValue() + " ms."); return result; } diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionTimeoutListener.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionTimeoutListener.java index 0da3e66..bcd69c1 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionTimeoutListener.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/SessionTimeoutListener.java @@ -31,8 +31,10 @@ import org.apache.sshd.common.util.logging.AbstractLoggingBean; * * @see org.apache.sshd.common.session.helpers.AbstractSession#checkForTimeouts() */ -public class SessionTimeoutListener extends AbstractLoggingBean implements SessionListener, Runnable { - private final Set<AbstractSession> sessions = new CopyOnWriteArraySet<>(); +public class SessionTimeoutListener + extends AbstractLoggingBean + implements SessionListener, Runnable { + protected final Set<SessionHelper> sessions = new CopyOnWriteArraySet<>(); public SessionTimeoutListener() { super(); @@ -40,8 +42,9 @@ public class SessionTimeoutListener extends AbstractLoggingBean implements Sessi @Override public void sessionCreated(Session session) { - if ((session instanceof AbstractSession) && ((session.getAuthTimeout() > 0L) || (session.getIdleTimeout() > 0L))) { - sessions.add((AbstractSession) session); + if ((session instanceof SessionHelper) + && ((session.getAuthTimeout() > 0L) || (session.getIdleTimeout() > 0L))) { + sessions.add((SessionHelper) session); if (log.isDebugEnabled()) { log.debug("sessionCreated({}) tracking", session); } @@ -53,14 +56,10 @@ public class SessionTimeoutListener extends AbstractLoggingBean implements Sessi } @Override - public void sessionEvent(Session session, Event event) { - // ignored - } - - @Override public void sessionException(Session session, Throwable t) { if (log.isDebugEnabled()) { - log.debug("sessionException({}) {}: {}", session, t.getClass().getSimpleName(), t.getMessage()); + log.debug("sessionException({}) {}: {}", + session, t.getClass().getSimpleName(), t.getMessage()); } if (log.isTraceEnabled()) { log.trace("sessionException(" + session + ") details", t); @@ -84,11 +83,12 @@ public class SessionTimeoutListener extends AbstractLoggingBean implements Sessi @Override public void run() { - for (AbstractSession session : sessions) { + for (SessionHelper session : sessions) { try { session.checkForTimeouts(); } catch (Exception e) { - log.warn(e.getClass().getSimpleName() + " while checking session=" + session + " timeouts: " + e.getMessage(), e); + log.warn(e.getClass().getSimpleName() + " while checking" + + " session=" + session + " timeouts: " + e.getMessage(), e); } } }