diff --git a/src/util.rs b/src/util.rs index f9f18e0..e5dd0e4 100644 --- a/src/util.rs +++ b/src/util.rs @@ -55,7 +55,11 @@ pub trait BufReadExt { impl BufReadExt for T where T: io::BufRead { fn discard_exact(&mut self, mut len: usize) -> io::Result<()> { while len > 0 { - let consume_len = self.fill_buf()?.len().min(len); + let consume_len = match self.fill_buf() { + Ok(buf) => buf.len().min(len), + Err(e) if e.kind() == io::ErrorKind::Interrupted => continue, + Err(e) => return Err(e), + }; self.consume(consume_len); len -= consume_len; }