summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-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!(