Actually add a limit to prevent infinite buffering memory

This commit is contained in:
Olivier 'reivilibre' 2023-08-11 22:19:12 +01:00
parent e306acd196
commit a9379dba14

View File

@ -7,11 +7,12 @@ use openssh_sftp_client::error::SftpErrorKind;
use openssh_sftp_client::file::{File, TokioCompatFile};
use openssh_sftp_client::fs::{DirEntry, Fs};
use openssh_sftp_client::Error::SftpError;
use openssh_sftp_client::Sftp;
use openssh_sftp_client::{Sftp, SftpOptions};
use ouroboros::self_referencing;
use std::fmt::{Debug, Formatter};
use std::io;
use std::io::{ErrorKind, SeekFrom};
use std::num::NonZeroUsize;
use std::path::{Path, PathBuf};
use std::pin::Pin;
use std::sync::Arc;
@ -76,10 +77,16 @@ impl SftpConn {
},
sftp_builder: |ssh_child| {
Box::pin(async move {
let sftp_opts = SftpOptions::new()
// Don't buffer infinitely when writing files: 32 MiB per file in flight
// will do.
.tokio_compat_file_write_limit(
NonZeroUsize::new(32 * 1024 * 1024).unwrap(),
);
Sftp::new(
ssh_child.stdin().take().unwrap(),
ssh_child.stdout().take().unwrap(),
Default::default(),
sftp_opts,
)
.await
.map_err(|e| eyre::Error::from(e))