You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2019/12/05 17:44:31 UTC

[mina-sshd] 01/09: [SSHD-956] Fixed return value of SessionHelper#checkForTimeouts in case session is being closed

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 <lg...@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);
             }
         }
     }