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 2021/08/06 04:11:10 UTC
[mina-sshd] branch master updated: [SSHD-1196] Provide configurable
support for SFTP output stream chunking behavior
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
The following commit(s) were added to refs/heads/master by this push:
new 4fa8f2c [SSHD-1196] Provide configurable support for SFTP output stream chunking behavior
4fa8f2c is described below
commit 4fa8f2cbb8638e7f92cbfbc4b85fea644e6804ae
Author: Lyor Goldstein <lg...@apache.org>
AuthorDate: Fri Aug 6 07:10:35 2021 +0300
[SSHD-1196] Provide configurable support for SFTP output stream chunking behavior
---
CHANGES.md | 1 +
.../org/apache/sshd/common/channel/ChannelAsyncOutputStream.java | 2 +-
.../src/main/java/org/apache/sshd/sftp/SftpModuleProperties.java | 9 +++++++++
.../java/org/apache/sshd/sftp/client/impl/DefaultSftpClient.java | 4 +++-
4 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 47d6b2e..531127d 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -21,6 +21,7 @@
## Minor code helpers
* [SSHD-1193](https://issues.apache.org/jira/browse/SSHD-1193) Provide a more user-friendly text in case disconnecting due to timeout(s).
+* [SSHD-1196](https://issues.apache.org/jira/browse/SSHD-1196) Provide configurable support for SFTP output stream chunking behavior.
## Behavioral changes and enhancements
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java
index eb2d5c5..84fbf34 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java
@@ -61,7 +61,7 @@ public class ChannelAsyncOutputStream extends AbstractCloseable implements IoOut
* SSH_MSG_CHANNEL_EXTENDED_DATA} indicating the output stream
* type
* @param sendChunkIfRemoteWindowIsSmallerThanPacketSize Determines the chunking behaviour, if the remote window
- * size is smaller than the packet size. Can be use to
+ * size is smaller than the packet size. Can be used to
* establish compatibility with certain clients, that wait
* until the window size is 0 before adjusting it.
* @see <A HREF=
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/sftp/SftpModuleProperties.java b/sshd-sftp/src/main/java/org/apache/sshd/sftp/SftpModuleProperties.java
index 3144884..3303913 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/sftp/SftpModuleProperties.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/sftp/SftpModuleProperties.java
@@ -217,6 +217,15 @@ public final class SftpModuleProperties {
public static final Property<Integer> SFTP_VERSION
= SshServerConfigFileReader.SFTP_FORCED_VERSION_PROP;
+ /**
+ * Determines the chunking behaviour, if the remote window size is smaller than the packet size. Can be used to
+ * establish compatibility with certain clients, that wait until the window size is 0 before adjusting it.
+ *
+ * @see <A HREF="https://issues.apache.org/jira/browse/SSHD-1123">SSHD-1123</A>
+ */
+ public static final Property<Boolean> CHUNK_IF_WINDOW_LESS_THAN_PACKET
+ = Property.bool("sftp-chunk-if-window-less-than-packet", false);
+
private SftpModuleProperties() {
throw new UnsupportedOperationException("No instance");
}
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/impl/DefaultSftpClient.java b/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/impl/DefaultSftpClient.java
index 1df279c..ae3f1c7 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/impl/DefaultSftpClient.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/impl/DefaultSftpClient.java
@@ -556,7 +556,9 @@ public class DefaultSftpClient extends AbstractSftpClient {
}
protected ChannelAsyncOutputStream createAsyncInput(Session session) {
- return new ChannelAsyncOutputStream(this, SshConstants.SSH_MSG_CHANNEL_DATA) {
+ return new ChannelAsyncOutputStream(
+ this, SshConstants.SSH_MSG_CHANNEL_DATA,
+ SftpModuleProperties.CHUNK_IF_WINDOW_LESS_THAN_PACKET.getRequired(session)) {
@SuppressWarnings("synthetic-access")
@Override
protected CloseFuture doCloseGracefully() {