summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEmīls Piņķis <emils@mullvad.net>2020-04-28 01:43:15 +0100
committerEmīls Piņķis <emils@mullvad.net>2020-04-28 09:42:03 +0100
commit83a950990ff77a06758c273293b9d15cc564c6d5 (patch)
tree15d075779d4cb83b65de47a19efdd18fa9af2182
parent21d2ca1e70cd75461cf07b0bb81a61097842e247 (diff)
downloadmullvadvpn-83a950990ff77a06758c273293b9d15cc564c6d5.tar.xz
mullvadvpn-83a950990ff77a06758c273293b9d15cc564c6d5.zip
Actually loop over netlink messages
-rw-r--r--talpid-core/src/routing/linux.rs30
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<()> {