diff options
| author | Emīls Piņķis <emils@mullvad.net> | 2020-04-28 01:43:15 +0100 |
|---|---|---|
| committer | Emīls Piņķis <emils@mullvad.net> | 2020-04-28 09:42:03 +0100 |
| commit | 83a950990ff77a06758c273293b9d15cc564c6d5 (patch) | |
| tree | 15d075779d4cb83b65de47a19efdd18fa9af2182 | |
| parent | 21d2ca1e70cd75461cf07b0bb81a61097842e247 (diff) | |
| download | mullvadvpn-83a950990ff77a06758c273293b9d15cc564c6d5.tar.xz mullvadvpn-83a950990ff77a06758c273293b9d15cc564c6d5.zip | |
Actually loop over netlink messages
| -rw-r--r-- | talpid-core/src/routing/linux.rs | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/talpid-core/src/routing/linux.rs b/talpid-core/src/routing/linux.rs index a123ede323..a186eb5fa3 100644 --- a/talpid-core/src/routing/linux.rs +++ b/talpid-core/src/routing/linux.rs @@ -382,21 +382,23 @@ impl RouteManagerImplInner { mut self, shutdown_rx: futures01::sync::oneshot::Receiver<futures01::sync::oneshot::Sender<()>>, ) -> Result<()> { - futures::select! { - shutdown_signal = shutdown_rx.compat().fuse() => { - log::trace!("Shutting down route manager"); - self.cleanup_routes().await; - log::trace!("Route manager done"); - if let Ok(shutdown_signal) = shutdown_signal { - let _ = shutdown_signal.send(()); + let mut shutdown = shutdown_rx.compat().fuse(); + loop { + futures::select! { + shutdown_signal = shutdown => { + log::trace!("Shutting down route manager"); + self.cleanup_routes().await; + log::trace!("Route manager done"); + if let Ok(shutdown_signal) = shutdown_signal { + let _ = shutdown_signal.send(()); + } + return Ok(()); + }, + (route_change, socket) = self.messages.select_next_some().fuse() => { + self.process_netlink_message(route_change).await?; } - return Ok(()); - }, - (route_change, socket) = self.messages.select_next_some().fuse() => { - self.process_netlink_message(route_change).await?; - } - }; - Ok(()) + }; + } } async fn process_netlink_message(&mut self, msg: NetlinkMessage<RtnlMessage>) -> Result<()> { |
