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);
}
}
}