summaryrefslogtreecommitdiffstats
path: root/buffered-reader
diff options
context:
space:
mode:
authorNeal H. Walfield <neal@pep.foundation>2018-10-04 12:26:02 +0200
committerNeal H. Walfield <neal@pep.foundation>2018-10-04 12:26:02 +0200
commiteb69271ba5fd569e98c4f99ca561a5b8d50ad9bd (patch)
treea8a4523a3cd98a0c151f624d06e5f271d77134ca /buffered-reader
parent723459a0c13f19fdc6ca41264959fc5ccdd6e52a (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.rs2
-rw-r--r--buffered-reader/src/lib.rs3
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::*;