diff options
| author | Steven Fackler <[email protected]> | 2015-04-30 00:14:06 -0700 |
|---|---|---|
| committer | Steven Fackler <[email protected]> | 2015-04-30 00:18:23 -0700 |
| commit | 73617dabfa2c74ea9787f14d5e4b220c98a894ec (patch) | |
| tree | 214998f17df441ef3e8405647daba2ef6d36bf51 /openssl/src/ssl/mod.rs | |
| parent | Merge pull request #207 from Byron/master (diff) | |
| download | rust-openssl-73617dabfa2c74ea9787f14d5e4b220c98a894ec.tar.xz rust-openssl-73617dabfa2c74ea9787f14d5e4b220c98a894ec.zip | |
Write through to underlying stream for every write call
cc #208
Diffstat (limited to 'openssl/src/ssl/mod.rs')
| -rw-r--r-- | openssl/src/ssl/mod.rs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/openssl/src/ssl/mod.rs b/openssl/src/ssl/mod.rs index 26851ade..ab559b46 100644 --- a/openssl/src/ssl/mod.rs +++ b/openssl/src/ssl/mod.rs @@ -899,14 +899,14 @@ impl<S: Read+Write> Read for SslStream<S> { impl<S: Read+Write> Write for SslStream<S> { fn write(&mut self, buf: &[u8]) -> io::Result<usize> { - match self.in_retry_wrapper(|ssl| ssl.write(buf)) { - Ok(len) => Ok(len as usize), - Err(SslSessionClosed) => Ok(0), + let count = match self.in_retry_wrapper(|ssl| ssl.write(buf)) { + Ok(len) => len as usize, + Err(SslSessionClosed) => 0, Err(StreamError(e)) => return Err(e), - Err(e @ OpenSslErrors(_)) => { - Err(io::Error::new(io::ErrorKind::Other, e)) - } - } + Err(e @ OpenSslErrors(_)) => return Err(io::Error::new(io::ErrorKind::Other, e)), + }; + try!(self.write_through()); + Ok(count) } fn flush(&mut self) -> io::Result<()> { |