summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-05-04 11:45:11 +0200
committerDavid Lönnhager <david.l@mullvad.net>2021-05-20 11:01:12 +0200
commit3a692258a5e0fea39e5404d1055cb5a50203b4e0 (patch)
treeb8156a114ce60b70d8dd95c2052ee47bd4abb0c4
parenta1802d96aff3cadc6436589a92d8a49ce78e62ad (diff)
downloadmullvadvpn-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.rs13
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!(