diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-05-04 11:45:11 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2021-05-20 11:01:12 +0200 |
| commit | 3a692258a5e0fea39e5404d1055cb5a50203b4e0 (patch) | |
| tree | b8156a114ce60b70d8dd95c2052ee47bd4abb0c4 | |
| parent | a1802d96aff3cadc6436589a92d8a49ce78e62ad (diff) | |
| download | mullvadvpn-3a692258a5e0fea39e5404d1055cb5a50203b4e0.tar.xz mullvadvpn-3a692258a5e0fea39e5404d1055cb5a50203b4e0.zip | |
Wait for IP interfaces to become available on Wintun adapter
| -rw-r--r-- | talpid-core/src/tunnel/openvpn/mod.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/talpid-core/src/tunnel/openvpn/mod.rs b/talpid-core/src/tunnel/openvpn/mod.rs index cbb89f912e..8d1aa03607 100644 --- a/talpid-core/src/tunnel/openvpn/mod.rs +++ b/talpid-core/src/tunnel/openvpn/mod.rs @@ -146,6 +146,11 @@ pub enum Error { #[error(display = "Failed to delete existing Wintun adapter")] WintunDeleteExistingError(#[error(source)] io::Error), + /// Error while waiting for IP interfaces to become available + #[cfg(windows)] + #[error(display = "Failed while waiting for IP interfaces")] + IpInterfacesError(#[error(source)] io::Error), + /// Error returned from `ConvertInterfaceAliasToLuid` #[cfg(windows)] #[error(display = "Cannot find LUID for virtual adapter")] @@ -394,6 +399,14 @@ impl OpenVpnMonitor<OpenVpnCommand> { log::warn!("You may need to restart Windows to complete the install of Wintun"); } + log::debug!("Wait for IP interfaces"); + windows::wait_for_interfaces( + &adapter.adapter().luid(), + true, + params.generic_options.enable_ipv6, + ) + .map_err(Error::IpInterfacesError)?; + let assigned_guid = adapter.adapter().guid(); let assigned_guid = assigned_guid.as_ref().unwrap_or_else(|error| { log::error!( |
