summaryrefslogtreecommitdiffstats
path: root/PROTOCOL
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2021-02-18 00:30:17 +0000
committerDamien Miller <djm@mindrot.org>2021-02-18 13:17:43 +1100
commit788cbc5b74a53956ba9fff11e1ca506271a3597f (patch)
treeda241b74c12c8de60579fb5f980249e4466f46cf /PROTOCOL
parent324449a68d510720d0e4dfcc8e9e5a702fe6a48f (diff)
upstream: sftp-server: implement limits@openssh.com extension
This is a simple extension that allows the server to clearly communicate transfer limits it is imposing so the client doesn't have to guess, or force the user to manually tune. This is particularly useful when an attempt to use too large of a value causes the server to abort the connection. Patch from Mike Frysinger; ok dtucker@ OpenBSD-Commit-ID: f96293221e5aa24102d9bf30e4f4ef04d5f4fb51
Diffstat (limited to 'PROTOCOL')
-rw-r--r--PROTOCOL45
1 files changed, 44 insertions, 1 deletions
diff --git a/PROTOCOL b/PROTOCOL
index 5c5e042e..88c0c409 100644
--- a/PROTOCOL
+++ b/PROTOCOL
@@ -481,6 +481,49 @@ See the "setstat" command for more details.
This extension is advertised in the SSH_FXP_VERSION hello with version
"1".
+3.8. sftp: Extension request "limits@openssh.com"
+
+This request is used to determine various limits the server might impose.
+Clients should not attempt to exceed these limits as the server might sever
+the connection immediately.
+
+ uint32 id
+ string "limits@openssh.com"
+
+The server will respond with a SSH_FXP_EXTENDED_REPLY reply:
+
+ uint32 id
+ uint64 max-packet-length
+ uint64 max-read-length
+ uint64 max-write-length
+ uint64 max-open-handles
+
+The 'max-packet-length' applies to the total number of bytes in a
+single SFTP packet. Servers SHOULD set this at least to 34000.
+
+The 'max-read-length' is the largest length in a SSH_FXP_READ packet.
+Even if the client requests a larger size, servers will usually respond
+with a shorter SSH_FXP_DATA packet. Servers SHOULD set this at least to
+32768.
+
+The 'max-write-length' is the largest length in a SSH_FXP_WRITE packet
+the server will accept. Servers SHOULD set this at least to 32768.
+
+The 'max-open-handles' is the maximum number of active handles that the
+server allows (e.g. handles created by SSH_FXP_OPEN and SSH_FXP_OPENDIR
+packets). Servers MAY count internal file handles against this limit
+(e.g. system logging or stdout/stderr), so clients SHOULD NOT expect to
+open this many handles in practice.
+
+If the server doesn't enforce a specific limit, then the field may be
+set to 0. This implies the server relies on the OS to enforce limits
+(e.g. available memory or file handles), and such limits might be
+dynamic. The client SHOULD take care to not try to exceed reasonable
+limits.
+
+This extension is advertised in the SSH_FXP_VERSION hello with version
+"1".
+
4. Miscellaneous changes
4.1 Public key format
@@ -512,4 +555,4 @@ OpenSSH's connection multiplexing uses messages as described in
PROTOCOL.mux over a Unix domain socket for communications between a
master instance and later clients.
-$OpenBSD: PROTOCOL,v 1.39 2021/02/12 03:49:09 djm Exp $
+$OpenBSD: PROTOCOL,v 1.40 2021/02/18 00:30:17 djm Exp $