fix(tokio_impl): shutdown WouldBlock
This commit is contained in:
parent
40837e4805
commit
fff2f4a73b
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tokio-rustls"
|
name = "tokio-rustls"
|
||||||
version = "0.6.0-alpha"
|
version = "0.6.0-alpha.1"
|
||||||
authors = ["quininer kel <quininer@live.com>"]
|
authors = ["quininer kel <quininer@live.com>"]
|
||||||
license = "MIT/Apache-2.0"
|
license = "MIT/Apache-2.0"
|
||||||
repository = "https://github.com/quininer/tokio-rustls"
|
repository = "https://github.com/quininer/tokio-rustls"
|
||||||
@ -24,5 +24,5 @@ webpki = "0.18.0-alpha"
|
|||||||
tokio = "0.1"
|
tokio = "0.1"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = [ "unstable-futures", "tokio" ]
|
default = [ "tokio" ]
|
||||||
unstable-futures = [ "futures", "tokio/unstable-futures" ]
|
unstable-futures = [ "futures", "tokio/unstable-futures" ]
|
||||||
|
@ -64,7 +64,13 @@ impl<S, C> AsyncWrite for TlsStream<S, C>
|
|||||||
self.session.send_close_notify();
|
self.session.send_close_notify();
|
||||||
self.is_shutdown = true;
|
self.is_shutdown = true;
|
||||||
}
|
}
|
||||||
self.session.complete_io(&mut self.io)?;
|
|
||||||
|
match self.session.complete_io(&mut self.io) {
|
||||||
|
Ok(_) => (),
|
||||||
|
Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => return Ok(Async::NotReady),
|
||||||
|
Err(e) => return Err(e)
|
||||||
|
}
|
||||||
|
|
||||||
self.io.shutdown()
|
self.io.shutdown()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,10 +73,11 @@ fn start_client(addr: &SocketAddr, domain: &str, chain: Option<BufReader<Cursor<
|
|||||||
.and_then(|stream| config.connect_async(domain, stream))
|
.and_then(|stream| config.connect_async(domain, stream))
|
||||||
.and_then(|stream| aio::write_all(stream, HELLO_WORLD))
|
.and_then(|stream| aio::write_all(stream, HELLO_WORLD))
|
||||||
.and_then(|(stream, _)| aio::read_exact(stream, vec![0; HELLO_WORLD.len()]))
|
.and_then(|(stream, _)| aio::read_exact(stream, vec![0; HELLO_WORLD.len()]))
|
||||||
.and_then(|(_, buf)| {
|
.and_then(|(stream, buf)| {
|
||||||
assert_eq!(buf, HELLO_WORLD);
|
assert_eq!(buf, HELLO_WORLD);
|
||||||
Ok(())
|
aio::shutdown(stream)
|
||||||
});
|
})
|
||||||
|
.map(drop);
|
||||||
|
|
||||||
done.wait()
|
done.wait()
|
||||||
}
|
}
|
||||||
@ -98,10 +99,11 @@ fn start_client2(addr: &SocketAddr, domain: &str, chain: Option<BufReader<Cursor
|
|||||||
.and_then(|stream| config.connect_async(domain, stream))
|
.and_then(|stream| config.connect_async(domain, stream))
|
||||||
.and_then(|stream| stream.write_all(HELLO_WORLD))
|
.and_then(|stream| stream.write_all(HELLO_WORLD))
|
||||||
.and_then(|(stream, _)| stream.read_exact(vec![0; HELLO_WORLD.len()]))
|
.and_then(|(stream, _)| stream.read_exact(vec![0; HELLO_WORLD.len()]))
|
||||||
.and_then(|(_, buf)| {
|
.and_then(|(stream, buf)| {
|
||||||
assert_eq!(buf, HELLO_WORLD);
|
assert_eq!(buf, HELLO_WORLD);
|
||||||
Ok(())
|
stream.close()
|
||||||
});
|
})
|
||||||
|
.map(drop);
|
||||||
|
|
||||||
block_on(done)
|
block_on(done)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user