From b661ff017568e000813b040e8d59b5781e278ea1 Mon Sep 17 00:00:00 2001 From: Tim Kuehn Date: Fri, 30 Sep 2016 15:36:55 -0400 Subject: [PATCH] Complete ClientFuture on error. --- src/client.rs | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/client.rs b/src/client.rs index 0fb0092..5bcaec9 100644 --- a/src/client.rs +++ b/src/client.rs @@ -115,16 +115,23 @@ pub mod future { REMOTE.spawn(move |handle| { let handle2 = handle.clone(); TcpStream::connect(&addr, handle) - .and_then(move |tcp| { - let tcp = RefCell::new(Some(tcp)); - let c = - multiplex::connect(move || { - Ok(Framed::new(tcp.borrow_mut().take().unwrap())) - }, - &handle2); - Ok(Client { inner: c }) + .then(move |tcp| { + match tcp { + Ok(tcp) => { + let tcp = RefCell::new(Some(tcp)); + let c = + multiplex::connect(move || { + Ok(Framed::new(tcp.borrow_mut().take().unwrap())) + }, + &handle2); + tx.complete(Ok(Client { inner: c })); + } + Err(e) => { + tx.complete(Err(e)); + } + } + Ok(()) }) - .then(|client| Ok(tx.complete(client))) }); ClientFuture { inner: rx } }