summaryrefslogtreecommitdiffhomepage
path: root/talpid-core/src
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2022-05-03 16:15:45 +0200
committerDavid Lönnhager <david.l@mullvad.net>2022-05-09 14:30:56 +0200
commit243ca7ce48cd67834b6a7d49fb1ffad5a50d7aee (patch)
treeda2938eb7c4c63586d31cce8efe83d952b156312 /talpid-core/src
parentdfeaebfd02ac6745657f0e14194d5ba4edc34e3a (diff)
downloadmullvadvpn-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.rs9
-rw-r--r--talpid-core/src/tunnel_state_machine/mod.rs4
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.