diff options
| author | Markus Pettersson <markus.pettersson@mullvad.net> | 2024-12-10 15:43:46 +0100 |
|---|---|---|
| committer | Markus Pettersson <markus.pettersson@mullvad.net> | 2024-12-17 11:54:03 +0100 |
| commit | 1a4730359f0edbf1c7c3d6489ff9616c2ac9e163 (patch) | |
| tree | 1a92ae51567e1ad44305c1e4b7d4285b8f8c10f2 /test | |
| parent | a59360c0e3a5b6ae06db0854eb87821f5d207759 (diff) | |
| download | mullvadvpn-1a4730359f0edbf1c7c3d6489ff9616c2ac9e163.tar.xz mullvadvpn-1a4730359f0edbf1c7c3d6489ff9616c2ac9e163.zip | |
Use SFTP instead of SCP to copy file
Fix SCP not working on well with Windows guests. Switch over to
SFTP instead
Diffstat (limited to 'test')
| -rw-r--r-- | test/test-manager/src/vm/provision.rs | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/test/test-manager/src/vm/provision.rs b/test/test-manager/src/vm/provision.rs index 359cf16c33..0997780207 100644 --- a/test/test-manager/src/vm/provision.rs +++ b/test/test-manager/src/vm/provision.rs @@ -196,20 +196,11 @@ fn ssh_send_file<P: AsRef<Path> + Copy>( } /// Analogues to [`std::fs::write`], but over ssh! -fn ssh_write<P: AsRef<Path>, C: AsRef<[u8]>>(session: &Session, dest: P, source: C) -> Result<()> { - let bytes = source.as_ref(); +fn ssh_write<P: AsRef<Path>>(session: &Session, dest: P, mut source: impl Read) -> Result<()> { + let sftp = session.sftp()?; + let mut remote_file = sftp.create(dest.as_ref())?; - let source = &mut &bytes[..]; - let source_len = u64::try_from(bytes.len()).context("File too large, did not fit in a u64")?; - - let mut remote_file = session.scp_send(dest.as_ref(), 0o744, source_len, None)?; - - io::copy(source, &mut remote_file).context("failed to write file")?; - - remote_file.send_eof()?; - remote_file.wait_eof()?; - remote_file.close()?; - remote_file.wait_close()?; + io::copy(&mut source, &mut remote_file).context("failed to write file")?; Ok(()) } |
