mirror of
https://github.com/actix/actix-web.git
synced 2024-12-30 12:00:38 +00:00
Fixes a bug in OpenWaitingConnection where the h2 flow would panic a future (#1031)
This commit is contained in:
parent
dbe4c9ffb5
commit
915010e733
1 changed files with 23 additions and 0 deletions
|
@ -590,6 +590,29 @@ where
|
||||||
type Error = ();
|
type Error = ();
|
||||||
|
|
||||||
fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
|
fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
|
||||||
|
if let Some(ref mut h2) = self.h2 {
|
||||||
|
return match h2.poll() {
|
||||||
|
Ok(Async::Ready((snd, connection))) => {
|
||||||
|
tokio_current_thread::spawn(connection.map_err(|_| ()));
|
||||||
|
let rx = self.rx.take().unwrap();
|
||||||
|
let _ = rx.send(Ok(IoConnection::new(
|
||||||
|
ConnectionType::H2(snd),
|
||||||
|
Instant::now(),
|
||||||
|
Some(Acquired(self.key.clone(), self.inner.take())),
|
||||||
|
)));
|
||||||
|
Ok(Async::Ready(()))
|
||||||
|
}
|
||||||
|
Ok(Async::NotReady) => Ok(Async::NotReady),
|
||||||
|
Err(err) => {
|
||||||
|
let _ = self.inner.take();
|
||||||
|
if let Some(rx) = self.rx.take() {
|
||||||
|
let _ = rx.send(Err(ConnectError::H2(err)));
|
||||||
|
}
|
||||||
|
Err(())
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
match self.fut.poll() {
|
match self.fut.poll() {
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
let _ = self.inner.take();
|
let _ = self.inner.take();
|
||||||
|
|
Loading…
Reference in a new issue