diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-05-27 11:05:23 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2021-07-02 09:54:19 +0200 |
| commit | a0895524074cead9929a55f00b7429b9cf7e8009 (patch) | |
| tree | f4ed95450f87fc92024bcbc3043e2fab0231fe4c | |
| parent | d1f203db76a0a06ddd89c54a0c9f990b0a35f208 (diff) | |
| download | mullvadvpn-a0895524074cead9929a55f00b7429b9cf7e8009.tar.xz mullvadvpn-a0895524074cead9929a55f00b7429b9cf7e8009.zip | |
Always disengage the driver before deinitializing WinFw
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/mod.rs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/talpid-core/src/tunnel_state_machine/mod.rs b/talpid-core/src/tunnel_state_machine/mod.rs index 2f8f6cea0c..5fabfb0daf 100644 --- a/talpid-core/src/tunnel_state_machine/mod.rs +++ b/talpid-core/src/tunnel_state_machine/mod.rs @@ -264,6 +264,8 @@ impl TunnelStateMachine { .map_err(Error::InitSplitTunneling)?; let mut shared_values = SharedTunnelStateValues { + #[cfg(windows)] + split_tunnel, runtime, firewall, dns_monitor, @@ -280,8 +282,6 @@ impl TunnelStateMachine { resource_dir, #[cfg(target_os = "linux")] connectivity_check_was_enabled: None, - #[cfg(windows)] - split_tunnel, }; let (initial_state, _) = DisconnectedState::enter(&mut shared_values, reset_firewall); @@ -336,6 +336,11 @@ pub trait TunnelParametersGenerator: Send + 'static { /// Values that are common to all tunnel states. struct SharedTunnelStateValues { + /// Management of excluded apps. + /// This object should be dropped before deinitializing WinFw (dropping the `Firewall` + /// instance), since the driver may add filters to the same sublayer. + #[cfg(windows)] + split_tunnel: split_tunnel::SplitTunnel, runtime: tokio::runtime::Handle, firewall: Firewall, dns_monitor: DnsMonitor, @@ -363,9 +368,6 @@ struct SharedTunnelStateValues { /// NetworkManager's connecitivity check state. #[cfg(target_os = "linux")] connectivity_check_was_enabled: Option<bool>, - /// Management of excluded apps. - #[cfg(windows)] - split_tunnel: split_tunnel::SplitTunnel, } impl SharedTunnelStateValues { |
