You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by gn...@apache.org on 2013/07/17 21:36:59 UTC

git commit: [SSHD-226] ServerSession's idle timer is not reset, if server only sends data

Updated Branches:
  refs/heads/master e6005dc31 -> 5e69ae74a


[SSHD-226] ServerSession's idle timer is not reset, if server only sends data

Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/5e69ae74
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/5e69ae74
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/5e69ae74

Branch: refs/heads/master
Commit: 5e69ae74aa9b17d9678820187e5feaffddb1ed35
Parents: e6005dc
Author: Guillaume Nodet <gn...@apache.org>
Authored: Wed Jul 17 21:36:53 2013 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Wed Jul 17 21:36:53 2013 +0200

----------------------------------------------------------------------
 .../apache/sshd/server/session/ServerSession.java    | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/5e69ae74/sshd-core/src/main/java/org/apache/sshd/server/session/ServerSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerSession.java b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerSession.java
index 67d3be9..12b4bf6 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerSession.java
@@ -28,6 +28,7 @@ import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.mina.core.future.WriteFuture;
 import org.apache.mina.core.session.IoSession;
 import org.apache.sshd.SshServer;
 import org.apache.sshd.agent.common.AgentForwardSupport;
@@ -121,6 +122,19 @@ public class ServerSession extends AbstractSession {
         return getServerFactoryManager().getScheduledExecutorService();
     }
 
+    @Override
+    public WriteFuture writePacket(Buffer buffer) throws IOException {
+        boolean rescheduleIdleTimer = getState() == State.Running;
+        if (rescheduleIdleTimer) {
+            unscheduleIdleTimer();
+        }
+        WriteFuture future = super.writePacket(buffer);
+        if (rescheduleIdleTimer) {
+            scheduleIdleTimer();
+        }
+        return future;
+    }
+
     protected void handleMessage(Buffer buffer) throws Exception {
         SshConstants.Message cmd = buffer.getCommand();
         log.debug("Received packet {}", cmd);
@@ -291,6 +305,7 @@ public class ServerSession extends AbstractSession {
             // A timeout less than one means there is no timeout.
             return;
         }
+        unscheduleIdleTimer();
         Runnable idleTimerTask = new Runnable() {
             public void run() {
                 try {