summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEmīls <emils@mullvad.net>2020-10-26 11:29:55 +0000
committerEmīls <emils@mullvad.net>2020-10-26 11:52:51 +0000
commitf163173a316fb5a91fa3ac2db7032f86902e35b8 (patch)
tree91d87b39ce67d36e99b32ad73c92d850abdcbc5e
parente00ecb134f89edf9f9fc5a9370e889ee032ec99e (diff)
downloadmullvadvpn-f163173a316fb5a91fa3ac2db7032f86902e35b8.tar.xz
mullvadvpn-f163173a316fb5a91fa3ac2db7032f86902e35b8.zip
Sort routes by prefix length before applying them
-rw-r--r--talpid-core/src/routing/linux.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/talpid-core/src/routing/linux.rs b/talpid-core/src/routing/linux.rs
index 4516f19127..dbe35f2c96 100644
--- a/talpid-core/src/routing/linux.rs
+++ b/talpid-core/src/routing/linux.rs
@@ -196,7 +196,9 @@ impl RouteManagerImpl {
async fn initialize_exclusions_routes(&mut self) -> Result<()> {
self.purge_exclusions_routes().await?;
- let main_routes = self.get_routes(None).await?;
+ let mut main_routes = self.get_routes(None).await?.into_iter().collect::<Vec<_>>();
+ main_routes.sort_by(|a, b| a.prefix.prefix().cmp(&b.prefix.prefix()));
+
for mut route in main_routes {
route.table_id = self.split_table_id;
self.add_route_direct(route).await?;