summaryrefslogtreecommitdiff
path: root/src/ssh.c
diff options
context:
space:
mode:
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;