Repository: mina-sshd Updated Branches: refs/heads/master 92c9ea86d -> 39392f594
[SSHD-800] Numerous SSH_MSG_CHANNEL_FAILURE messages sent for SSH_MSG_CHANNEL_DATA on unknown channel Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/39392f59 Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/39392f59 Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/39392f59 Branch: refs/heads/master Commit: 39392f59487515e38ebf35781f3caa0850805418 Parents: 92c9ea8 Author: Lyor Goldstein <[email protected]> Authored: Thu Feb 1 20:02:50 2018 +0200 Committer: Lyor Goldstein <[email protected]> Committed: Thu Feb 1 20:03:13 2018 +0200 ---------------------------------------------------------------------- .../DefaultUnknownChannelReferenceHandler.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/39392f59/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/DefaultUnknownChannelReferenceHandler.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/DefaultUnknownChannelReferenceHandler.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/DefaultUnknownChannelReferenceHandler.java index 42c0617..927460e 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/DefaultUnknownChannelReferenceHandler.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/DefaultUnknownChannelReferenceHandler.java @@ -21,6 +21,7 @@ package org.apache.sshd.common.session.helpers; import java.io.IOException; +import org.apache.sshd.common.PropertyResolverUtils; import org.apache.sshd.common.SshConstants; import org.apache.sshd.common.channel.Channel; import org.apache.sshd.common.io.IoWriteFuture; @@ -36,6 +37,15 @@ import org.apache.sshd.common.util.logging.AbstractLoggingBean; public class DefaultUnknownChannelReferenceHandler extends AbstractLoggingBean implements UnknownChannelReferenceHandler { + /** + * RFC4254 does not clearly specify how to handle {@code SSH_MSG_CHANNEL_DATA} + * and {@code SSH_MSG_CHANNEL_EXTENDED_DATA} received through an unknown channel. + * Therefore, we provide a configurable approach to it with the default set to ignore it. + */ + public static final String SEND_REPLY_FOR_CHANNEL_DATA = "send-unknown-channel-data-reply"; + // Not sure if entirely compliant with RFC4254, but try to stem the flood + public static final boolean DEFAULT_SEND_REPLY_FOR_CHANNEL_DATA = false; + public static final DefaultUnknownChannelReferenceHandler INSTANCE = new DefaultUnknownChannelReferenceHandler(); public DefaultUnknownChannelReferenceHandler() { @@ -74,8 +84,11 @@ public class DefaultUnknownChannelReferenceHandler case SshConstants.SSH_MSG_CHANNEL_DATA: case SshConstants.SSH_MSG_CHANNEL_EXTENDED_DATA: - // Not sure if entirely compliant with RFC4254, but try to stem the flood - wantReply = true; + wantReply = PropertyResolverUtils.getBooleanProperty(session, SEND_REPLY_FOR_CHANNEL_DATA, DEFAULT_SEND_REPLY_FOR_CHANNEL_DATA); + // Use TRACE level to avoid log overflow due to invalid messages flood + if (log.isTraceEnabled()) { + log.trace("handleUnknownChannelCommand({}) received msg channel data (opcode={}) reply={}", session, cmd, wantReply); + } break; default: // do nothing
