diff options
| -rw-r--r-- | CHANGELOG.md | 3 | ||||
| -rw-r--r-- | talpid-core/src/routing/mod.rs | 3 | ||||
| -rw-r--r-- | talpid-core/src/tunnel/openvpn/mod.rs | 7 |
3 files changed, 11 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index e0939c8ed8..1d9029e278 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,9 @@ Line wrap the file at 100 chars. Th ### Fixed - Fix delay in showing/hiding update notification when toggling beta program. +#### Linux +- Fix crash when trying to apply IPv6 rotues for OpenVPN when IPv6 is disabled. + ## [2021.1] - 2021-02-10 ### Fixed diff --git a/talpid-core/src/routing/mod.rs b/talpid-core/src/routing/mod.rs index d1508f7c5f..a8491a8588 100644 --- a/talpid-core/src/routing/mod.rs +++ b/talpid-core/src/routing/mod.rs @@ -64,7 +64,8 @@ impl fmt::Display for Route { /// default route. #[derive(Debug, Hash, Eq, PartialEq, Clone)] pub struct RequiredRoute { - prefix: IpNetwork, + /// Route's prefix + pub prefix: IpNetwork, node: NetNode, #[cfg(target_os = "linux")] table_id: u32, diff --git a/talpid-core/src/tunnel/openvpn/mod.rs b/talpid-core/src/tunnel/openvpn/mod.rs index 38a1d26d22..3446c6d0d6 100644 --- a/talpid-core/src/tunnel/openvpn/mod.rs +++ b/talpid-core/src/tunnel/openvpn/mod.rs @@ -295,11 +295,16 @@ impl OpenVpnMonitor<OpenVpnCommand> { #[cfg(target_os = "linux")] let route_manager_handle = route_manager.handle().map_err(Error::SetupRoutingError)?; + let ipv6_enabled = params.generic_options.enable_ipv6; let on_openvpn_event = move |event, env: HashMap<String, String>| { #[cfg(target_os = "linux")] if event == openvpn_plugin::EventType::Up { tokio::task::block_in_place(|| { - let routes = extract_routes(&env).unwrap(); + let routes = extract_routes(&env) + .unwrap() + .into_iter() + .filter(|route| route.prefix.is_ipv4() || ipv6_enabled) + .collect(); let route_manager_handle = route_manager_handle.clone(); if let Err(error) = route_manager_handle.add_routes(routes) { log::error!("{}", error.display_chain()); |
