diff options
| author | David Lönnhager <david.l@mullvad.net> | 2022-05-03 16:15:45 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2022-05-09 14:30:56 +0200 |
| commit | 243ca7ce48cd67834b6a7d49fb1ffad5a50d7aee (patch) | |
| tree | da2938eb7c4c63586d31cce8efe83d952b156312 /talpid-core/src | |
| parent | dfeaebfd02ac6745657f0e14194d5ba4edc34e3a (diff) | |
| download | mullvadvpn-243ca7ce48cd67834b6a7d49fb1ffad5a50d7aee.tar.xz mullvadvpn-243ca7ce48cd67834b6a7d49fb1ffad5a50d7aee.zip | |
Decouple tunnel parameters generation from daemon message handler
Diffstat (limited to 'talpid-core/src')
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/connecting_state.rs | 9 | ||||
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/mod.rs | 4 |
2 files changed, 8 insertions, 5 deletions
diff --git a/talpid-core/src/tunnel_state_machine/connecting_state.rs b/talpid-core/src/tunnel_state_machine/connecting_state.rs index f79c6ab35d..7e22bd6aa0 100644 --- a/talpid-core/src/tunnel_state_machine/connecting_state.rs +++ b/talpid-core/src/tunnel_state_machine/connecting_state.rs @@ -528,10 +528,11 @@ impl TunnelState for ConnectingState { if shared_values.is_offline { return ErrorState::enter(shared_values, ErrorStateCause::IsOffline); } - match shared_values - .tunnel_parameters_generator - .generate(retry_attempt) - { + match shared_values.runtime.block_on( + shared_values + .tunnel_parameters_generator + .generate(retry_attempt), + ) { Err(err) => { ErrorState::enter(shared_values, ErrorStateCause::TunnelParameterError(err)) } diff --git a/talpid-core/src/tunnel_state_machine/mod.rs b/talpid-core/src/tunnel_state_machine/mod.rs index f6fa472983..6c388a4680 100644 --- a/talpid-core/src/tunnel_state_machine/mod.rs +++ b/talpid-core/src/tunnel_state_machine/mod.rs @@ -32,9 +32,11 @@ use futures::{ use std::os::unix::io::RawFd; use std::{ collections::HashSet, + future::Future, io, net::IpAddr, path::PathBuf, + pin::Pin, sync::{Arc, Mutex}, time::Duration, }; @@ -366,7 +368,7 @@ pub trait TunnelParametersGenerator: Send + 'static { fn generate( &mut self, retry_attempt: u32, - ) -> Result<TunnelParameters, ParameterGenerationError>; + ) -> Pin<Box<dyn Future<Output = Result<TunnelParameters, ParameterGenerationError>>>>; } /// Values that are common to all tunnel states. |
