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 7cb63ea032bfed34ffee1548c41f4a24818d3615
Author: Lyor Goldstein <lgoldst...@apache.org>
AuthorDate: Thu Feb 27 12:20:12 2020 +0200

    [SSHD-968] Separated reserved messages handler invocation to separate 
overridable methods in SessionHelper
---
 .../common/session/helpers/AbstractSession.java    |  3 +-
 .../sshd/common/session/helpers/SessionHelper.java | 47 ++++++++++++++++++++--
 2 files changed, 44 insertions(+), 6 deletions(-)

diff --git 
a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
 
b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
index 05e6275..ab46578 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
@@ -1624,8 +1624,7 @@ public abstract class AbstractSession extends 
SessionHelper {
      * @see #sendNotImplemented(long)
      */
     protected IoWriteFuture notImplemented(int cmd, Buffer buffer) throws 
Exception {
-        ReservedSessionMessagesHandler handler = 
resolveReservedSessionMessagesHandler();
-        if (handler.handleUnimplementedMessage(this, cmd, buffer)) {
+        if (doInvokeUnimplementedMessageHandler(cmd, buffer)) {
             return null;
         }
 
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 8fd2b44..3676a44 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
@@ -404,8 +404,22 @@ public abstract class SessionHelper extends 
AbstractKexFactoryManager implements
             return;
         }
         resetIdleTimeout();
+        doInvokeIgnoreMessageHandler(buffer);
+    }
 
-        ReservedSessionMessagesHandler handler = 
resolveReservedSessionMessagesHandler();
+    /**
+     * Invoked by {@link #handleDebug(Buffer)} after validating that the buffer
+     * structure seems well-formed and also resetting the idle timeout. By 
default,
+     * retrieves the {@link #resolveReservedSessionMessagesHandler() 
ReservedSessionMessagesHandler}
+     * and invokes its {@link 
ReservedSessionMessagesHandler#handleIgnoreMessage(Session, Buffer) 
handleIgnoreMessage}
+     * method.
+     *
+     * @param buffer The input {@link Buffer}
+     * @throws Exception if failed to handle the message
+     */
+    protected void doInvokeIgnoreMessageHandler(Buffer buffer) throws 
Exception {
+        ReservedSessionMessagesHandler handler =
+            resolveReservedSessionMessagesHandler();
         handler.handleIgnoreMessage(this, buffer);
     }
 
@@ -430,9 +444,19 @@ public abstract class SessionHelper extends 
AbstractKexFactoryManager implements
             return;
         }
         resetIdleTimeout();
+        
doInvokeUnimplementedMessageHandler(SshConstants.SSH_MSG_UNIMPLEMENTED, buffer);
+    }
 
-        ReservedSessionMessagesHandler handler = 
resolveReservedSessionMessagesHandler();
-        handler.handleUnimplementedMessage(this, 
SshConstants.SSH_MSG_UNIMPLEMENTED, buffer);
+    /**
+     * @param cmd The unimplemented command
+     * @param buffer The input {@link Buffer}
+     * @return Result of invoking {@link 
ReservedSessionMessagesHandler#handleUnimplementedMessage(Session, int, Buffer) 
handleUnimplementedMessage}
+     * @throws Exception if failed to handle the message
+     */
+    protected boolean doInvokeUnimplementedMessageHandler(int cmd, Buffer 
buffer) throws Exception {
+        ReservedSessionMessagesHandler handler =
+            resolveReservedSessionMessagesHandler();
+        return handler.handleUnimplementedMessage(this, cmd, buffer);
     }
 
     @Override
@@ -456,9 +480,24 @@ public abstract class SessionHelper extends 
AbstractKexFactoryManager implements
             }
             return;
         }
+
         resetIdleTimeout();
+        doInvokeDebugMessageHandler(buffer);
+    }
 
-        ReservedSessionMessagesHandler handler = 
resolveReservedSessionMessagesHandler();
+    /**
+     * Invoked by {@link #handleDebug(Buffer)} after validating that the buffer
+     * structure seems well-formed and also resetting the idle timeout. By 
default,
+     * retrieves the {@link #resolveReservedSessionMessagesHandler() 
ReservedSessionMessagesHandler}
+     * and invokes its {@link 
ReservedSessionMessagesHandler#handleDebugMessage(Session, Buffer) 
handleDebugMessage}
+     * method.
+     *
+     * @param buffer The input {@link Buffer}
+     * @throws Exception if failed to handle the message
+     */
+    protected void doInvokeDebugMessageHandler(Buffer buffer) throws Exception 
{
+        ReservedSessionMessagesHandler handler =
+            resolveReservedSessionMessagesHandler();
         handler.handleDebugMessage(this, buffer);
     }
 

Reply via email to