Actually add a limit to prevent infinite buffering memory
This commit is contained in:
parent
e306acd196
commit
a9379dba14
@ -7,11 +7,12 @@ use openssh_sftp_client::error::SftpErrorKind;
|
|||||||
use openssh_sftp_client::file::{File, TokioCompatFile};
|
use openssh_sftp_client::file::{File, TokioCompatFile};
|
||||||
use openssh_sftp_client::fs::{DirEntry, Fs};
|
use openssh_sftp_client::fs::{DirEntry, Fs};
|
||||||
use openssh_sftp_client::Error::SftpError;
|
use openssh_sftp_client::Error::SftpError;
|
||||||
use openssh_sftp_client::Sftp;
|
use openssh_sftp_client::{Sftp, SftpOptions};
|
||||||
use ouroboros::self_referencing;
|
use ouroboros::self_referencing;
|
||||||
use std::fmt::{Debug, Formatter};
|
use std::fmt::{Debug, Formatter};
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::{ErrorKind, SeekFrom};
|
use std::io::{ErrorKind, SeekFrom};
|
||||||
|
use std::num::NonZeroUsize;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@ -76,10 +77,16 @@ impl SftpConn {
|
|||||||
},
|
},
|
||||||
sftp_builder: |ssh_child| {
|
sftp_builder: |ssh_child| {
|
||||||
Box::pin(async move {
|
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(
|
Sftp::new(
|
||||||
ssh_child.stdin().take().unwrap(),
|
ssh_child.stdin().take().unwrap(),
|
||||||
ssh_child.stdout().take().unwrap(),
|
ssh_child.stdout().take().unwrap(),
|
||||||
Default::default(),
|
sftp_opts,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
.map_err(|e| eyre::Error::from(e))
|
.map_err(|e| eyre::Error::from(e))
|
||||||
|
Loading…
Reference in New Issue
Block a user