diff options
author | Neal H. Walfield <neal@pep.foundation> | 2018-10-04 12:26:02 +0200 |
---|---|---|
committer | Neal H. Walfield <neal@pep.foundation> | 2018-10-04 12:26:02 +0200 |
commit | eb69271ba5fd569e98c4f99ca561a5b8d50ad9bd (patch) | |
tree | a8a4523a3cd98a0c151f624d06e5f271d77134ca /buffered-reader | |
parent | 723459a0c13f19fdc6ca41264959fc5ccdd6e52a (diff) |
buffered-reader: Ignore EINTR.
- If we get an EINTR while reading, automatically retry.
Diffstat (limited to 'buffered-reader')
-rw-r--r-- | buffered-reader/src/generic.rs | 2 | ||||
-rw-r--r-- | buffered-reader/src/lib.rs | 3 |
2 files changed, 5 insertions, 0 deletions
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<T: io::Read, C> BufferedReaderGeneric<T, C> { 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<C> : 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::*; |