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