From de39e321e9db12b97cddec02426417ae8efd2cb6 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Mon, 25 Jun 2018 14:29:15 +0200 Subject: [PATCH] Fix a missing loop in SwarmFuture::poll (#272) --- core/src/swarm.rs | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/core/src/swarm.rs b/core/src/swarm.rs index 3929ee01..ad28a185 100644 --- a/core/src/swarm.rs +++ b/core/src/swarm.rs @@ -191,19 +191,22 @@ where fn poll(&mut self) -> Poll { let handler = &mut self.handler; - match self.next_incoming.poll() { - Ok(Async::Ready(connec)) => { - debug!("Swarm received new multiplexed incoming connection"); - self.next_incoming = self.transport.clone().next_incoming(); - let connec = connec.map(|(out, maf)| { - (out, Box::new(maf) as Box>) - }); - self.listeners_upgrade.push(Box::new(connec) as Box<_>); - } - Ok(Async::NotReady) => {} - Err(err) => { - debug!("Error in multiplexed incoming connection: {:?}", err); - self.next_incoming = self.transport.clone().next_incoming(); + loop { + match self.next_incoming.poll() { + Ok(Async::Ready(connec)) => { + debug!("Swarm received new multiplexed incoming connection"); + self.next_incoming = self.transport.clone().next_incoming(); + let connec = connec.map(|(out, maf)| { + (out, Box::new(maf) as Box>) + }); + self.listeners_upgrade.push(Box::new(connec) as Box<_>); + } + Ok(Async::NotReady) => break, + Err(err) => { + debug!("Error in multiplexed incoming connection: {:?}", err); + self.next_incoming = self.transport.clone().next_incoming(); + break; + } } }