Change summary
src/happy_eyeballs.rs | 26 ++++++++++++++++++++------
src/stream_start.rs | 2 +-
2 files changed, 21 insertions(+), 7 deletions(-)
Detailed changes
@@ -80,15 +80,29 @@ impl Future for Connecter {
return Err(format!("{}", e)),
}
- for mut connect in self.connects.values_mut() {
+ let mut connected_stream = None;
+ self.connects.retain(|_, connect| {
+ if connected_stream.is_some() {
+ return false;
+ }
+
match connect.poll() {
- Ok(Async::NotReady) => (),
- Ok(Async::Ready(tcp_stream)) =>
+ Ok(Async::NotReady) => true,
+ Ok(Async::Ready(tcp_stream)) => {
// Success!
- return Ok(Async::Ready(tcp_stream)),
- Err(e) =>
- println!("{}", e),
+ connected_stream = Some(tcp_stream);
+ false
+ },
+ Err(e) => {
+ println!("{}", e);
+ false
+ },
}
+ });
+ match connected_stream {
+ Some(tcp_stream) =>
+ return Ok(Async::Ready(tcp_stream)),
+ None => (),
}
if self.lookup.is_none() &&
@@ -89,7 +89,7 @@ impl<S: AsyncRead + AsyncWrite> Future for StreamStart<S> {
} else {
(StreamStartState::RecvFeatures(stream, stream_ns), Ok(Async::NotReady))
},
- Ok(Async::Ready(item)) =>
+ Ok(Async::Ready(_)) =>
(StreamStartState::RecvFeatures(stream, stream_ns), Ok(Async::NotReady)),
Ok(Async::NotReady) =>
(StreamStartState::RecvFeatures(stream, stream_ns), Ok(Async::NotReady)),