aboutsummaryrefslogtreecommitdiff
path: root/openssl/src/ssl/mod.rs
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2015-04-30 00:14:06 -0700
committerSteven Fackler <[email protected]>2015-04-30 00:18:23 -0700
commit73617dabfa2c74ea9787f14d5e4b220c98a894ec (patch)
tree214998f17df441ef3e8405647daba2ef6d36bf51 /openssl/src/ssl/mod.rs
parentMerge pull request #207 from Byron/master (diff)
downloadrust-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.rs14
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<()> {