From eb69271ba5fd569e98c4f99ca561a5b8d50ad9bd Mon Sep 17 00:00:00 2001 From: "Neal H. Walfield" Date: Thu, 4 Oct 2018 12:26:02 +0200 Subject: buffered-reader: Ignore EINTR. - If we get an EINTR while reading, automatically retry. --- buffered-reader/src/generic.rs | 2 ++ buffered-reader/src/lib.rs | 3 +++ 2 files changed, 5 insertions(+) (limited to 'buffered-reader') diff --git a/buffered-reader/src/generic.rs b/buffered-reader/src/generic.rs index 61dd8da6..a2a5321b 100644 --- a/buffered-reader/src/generic.rs +++ b/buffered-reader/src/generic.rs @@ -121,6 +121,8 @@ impl BufferedReaderGeneric { continue; } }, + Err(ref err) if err.kind() == ErrorKind::Interrupted => + continue, Err(err) => { // Don't return yet, because we may have // actually read something. diff --git a/buffered-reader/src/lib.rs b/buffered-reader/src/lib.rs index c8e30866..506c8222 100644 --- a/buffered-reader/src/lib.rs +++ b/buffered-reader/src/lib.rs @@ -324,6 +324,9 @@ pub trait BufferedReader : io::Read + fmt::Debug { /// returned, it will always be returned until it is consumed. /// As such, the following must hold: /// + /// If `BufferedReader` receives `EINTR` when `read`ing, it will + /// automatically retry reading. + /// /// ``` /// # f(); fn f() -> Result<(), std::io::Error> { /// use buffered_reader::*; -- cgit v1.2.3