summaryrefslogtreecommitdiff
path: root/src/ssh.c
diff options
context:
space:
mode:
authorRyo Nakamura <upa@haeena.net>2022-10-23 21:43:44 +0900
committerRyo Nakamura <upa@haeena.net>2022-10-23 21:43:44 +0900
commit79e717d1ed46a210dae7b44e3db3af5991b0de70 (patch)
tree07731e3836702fa659b5b049df5679fbfc4e9068 /src/ssh.c
parente6339bf4641e8ba47b5221f9bb5a5adfefeb3c8e (diff)
configurable sftp_buf_sz.
default value 131072 is derived from qemu/block/ssh.c. we need more investigaion.
Diffstat (limited to 'src/ssh.c')
-rw-r--r--src/ssh.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/ssh.c b/src/ssh.c
index 536b63e..b64e0a9 100644
--- a/src/ssh.c
+++ b/src/ssh.c
@@ -245,21 +245,13 @@ void ssh_sftp_close(sftp_session sftp)
}
-/* from libssh/src/channels.c:
- *
- * All implementations MUST be able to process packets with an
- * uncompressed payload length of 32768 bytes or less and a total packet
- * size of 35000 bytes or less.
- */
-#define CHANNEL_MAX_PACKET 32768
-
-int sftp_write2(sftp_file sf, const void *buf, size_t len)
+int sftp_write2(sftp_file sf, const void *buf, size_t len, size_t sftp_buf_sz)
{
- int n, ret, nbytes;
+ int ret, nbytes;
for (nbytes = 0; nbytes < len;) {
ret = sftp_write(sf, buf + nbytes,
- min(len - nbytes, CHANNEL_MAX_PACKET));
+ min(len - nbytes, sftp_buf_sz));
if (ret < 0)
return ret;
nbytes += ret;
@@ -267,13 +259,13 @@ int sftp_write2(sftp_file sf, const void *buf, size_t len)
return nbytes;
}
-int sftp_read2(sftp_file sf, void *buf, size_t len)
+int sftp_read2(sftp_file sf, void *buf, size_t len, size_t sftp_buf_sz)
{
- int n, ret, nbytes;
+ int ret, nbytes;
for (nbytes = 0; nbytes < len;) {
ret = sftp_read(sf, buf + nbytes,
- min(len - nbytes, CHANNEL_MAX_PACKET));
+ min(len - nbytes, sftp_buf_sz));
if (ret < 0)
return ret;
nbytes += ret;