From 3c2dd8ad054b57e057406f5f692fa47c7cf93deb Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Thu, 5 Nov 2020 09:29:06 +0100 Subject: [PATCH] pxar/create: handle ErrorKind::Interrupted for file reads they are not an error and we should retry the read Signed-off-by: Dominik Csapak Signed-off-by: Wolfgang Bumiller --- src/pxar/create.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pxar/create.rs b/src/pxar/create.rs index f4c735d0..6fe820bd 100644 --- a/src/pxar/create.rs +++ b/src/pxar/create.rs @@ -657,7 +657,11 @@ impl<'a, 'b> Archiver<'a, 'b> { let mut remaining = file_size; let mut out = encoder.create_file(metadata, file_name, file_size)?; while remaining != 0 { - let mut got = file.read(&mut self.file_copy_buffer[..])?; + let mut got = match file.read(&mut self.file_copy_buffer[..]) { + Ok(got) => got, + Err(err) if err.kind() == std::io::ErrorKind::Interrupted => continue, + Err(err) => bail!(err), + }; if got as u64 > remaining { self.report_file_grew_while_reading()?; got = remaining as usize;