diff options
| author | Markus Pettersson <markus.pettersson@mullvad.net> | 2024-02-15 10:21:59 +0100 |
|---|---|---|
| committer | Markus Pettersson <markus.pettersson@mullvad.net> | 2024-02-15 10:21:59 +0100 |
| commit | 02240d69574e0d373c71d109e7ce4f006b916d2e (patch) | |
| tree | 02c86a5d58153997fd3a1773abf6555f2083d274 /mullvad-api/src | |
| parent | 05a78732fc38c241a7465adca3f906d5f20c1ad6 (diff) | |
| parent | b226b8e634f4b9d7dff2f67c2752aa02bdd25a13 (diff) | |
| download | mullvadvpn-02240d69574e0d373c71d109e7ce4f006b916d2e.tar.xz mullvadvpn-02240d69574e0d373c71d109e7ce4f006b916d2e.zip | |
Merge branch 'fix/consider-direct-access-method-first'
Diffstat (limited to 'mullvad-api/src')
| -rw-r--r-- | mullvad-api/src/bin/relay_list.rs | 9 | ||||
| -rw-r--r-- | mullvad-api/src/lib.rs | 46 | ||||
| -rw-r--r-- | mullvad-api/src/rest.rs | 9 |
3 files changed, 30 insertions, 34 deletions
diff --git a/mullvad-api/src/bin/relay_list.rs b/mullvad-api/src/bin/relay_list.rs index c016b4c8a1..e395d8ae5f 100644 --- a/mullvad-api/src/bin/relay_list.rs +++ b/mullvad-api/src/bin/relay_list.rs @@ -11,11 +11,10 @@ async fn main() { let runtime = mullvad_api::Runtime::new(tokio::runtime::Handle::current()) .expect("Failed to load runtime"); - let relay_list_request = RelayListProxy::new( - runtime - .mullvad_rest_handle(ApiConnectionMode::Direct.into_repeat()) - .await, - ) + let relay_list_request = RelayListProxy::new(runtime.mullvad_rest_handle( + ApiConnectionMode::Direct, + ApiConnectionMode::Direct.into_repeat(), + )) .relay_list(None) .await; diff --git a/mullvad-api/src/lib.rs b/mullvad-api/src/lib.rs index 26d6b9758c..17e80b66c0 100644 --- a/mullvad-api/src/lib.rs +++ b/mullvad-api/src/lib.rs @@ -382,9 +382,10 @@ impl Runtime { } /// Creates a new request service and returns a handle to it. - async fn new_request_service<T: Stream<Item = ApiConnectionMode> + Unpin + Send + 'static>( + fn new_request_service<T: Stream<Item = ApiConnectionMode> + Unpin + Send + 'static>( &self, sni_hostname: Option<String>, + initial_connection_mode: ApiConnectionMode, proxy_provider: T, #[cfg(target_os = "android")] socket_bypass_tx: Option<mpsc::Sender<SocketBypassRequest>>, ) -> rest::RequestServiceHandle { @@ -392,28 +393,26 @@ impl Runtime { sni_hostname, self.api_availability.handle(), self.address_cache.clone(), + initial_connection_mode, proxy_provider, #[cfg(target_os = "android")] socket_bypass_tx, ) - .await } /// Returns a request factory initialized to create requests for the master API - pub async fn mullvad_rest_handle< - T: Stream<Item = ApiConnectionMode> + Unpin + Send + 'static, - >( + pub fn mullvad_rest_handle<T: Stream<Item = ApiConnectionMode> + Unpin + Send + 'static>( &self, + initial_connection_mode: ApiConnectionMode, proxy_provider: T, ) -> rest::MullvadRestHandle { - let service = self - .new_request_service( - Some(API.host().to_string()), - proxy_provider, - #[cfg(target_os = "android")] - self.socket_bypass_tx.clone(), - ) - .await; + let service = self.new_request_service( + Some(API.host().to_string()), + initial_connection_mode, + proxy_provider, + #[cfg(target_os = "android")] + self.socket_bypass_tx.clone(), + ); let token_store = access::AccessTokenStore::new(service.clone()); let factory = rest::RequestFactory::new(API.host(), Some(token_store)); @@ -426,15 +425,14 @@ impl Runtime { } /// This is only to be used in test code - pub async fn static_mullvad_rest_handle(&self, hostname: String) -> rest::MullvadRestHandle { - let service = self - .new_request_service( - Some(hostname.clone()), - futures::stream::repeat(ApiConnectionMode::Direct), - #[cfg(target_os = "android")] - self.socket_bypass_tx.clone(), - ) - .await; + pub fn static_mullvad_rest_handle(&self, hostname: String) -> rest::MullvadRestHandle { + let service = self.new_request_service( + Some(hostname.clone()), + ApiConnectionMode::Direct, + futures::stream::repeat(ApiConnectionMode::Direct), + #[cfg(target_os = "android")] + self.socket_bypass_tx.clone(), + ); let token_store = access::AccessTokenStore::new(service.clone()); let factory = rest::RequestFactory::new(hostname, Some(token_store)); @@ -447,14 +445,14 @@ impl Runtime { } /// Returns a new request service handle - pub async fn rest_handle(&self) -> rest::RequestServiceHandle { + pub fn rest_handle(&self) -> rest::RequestServiceHandle { self.new_request_service( None, + ApiConnectionMode::Direct, ApiConnectionMode::Direct.into_repeat(), #[cfg(target_os = "android")] None, ) - .await } pub fn handle(&mut self) -> &mut tokio::runtime::Handle { diff --git a/mullvad-api/src/rest.rs b/mullvad-api/src/rest.rs index 0560642bb0..ca63f16c1f 100644 --- a/mullvad-api/src/rest.rs +++ b/mullvad-api/src/rest.rs @@ -131,11 +131,12 @@ pub(crate) struct RequestService<T: Stream<Item = ApiConnectionMode>> { impl<T: Stream<Item = ApiConnectionMode> + Unpin + Send + 'static> RequestService<T> { /// Constructs a new request service. - pub async fn spawn( + pub fn spawn( sni_hostname: Option<String>, api_availability: ApiAvailabilityHandle, address_cache: AddressCache, - mut proxy_config_provider: T, + initial_connection_mode: ApiConnectionMode, + proxy_config_provider: T, #[cfg(target_os = "android")] socket_bypass_tx: Option<mpsc::Sender<SocketBypassRequest>>, ) -> RequestServiceHandle { let (connector, connector_handle) = HttpsConnectorWithSni::new( @@ -145,9 +146,7 @@ impl<T: Stream<Item = ApiConnectionMode> + Unpin + Send + 'static> RequestServic socket_bypass_tx.clone(), ); - if let Some(config) = proxy_config_provider.next().await { - connector_handle.set_connection_mode(config); - } + connector_handle.set_connection_mode(initial_connection_mode); let (command_tx, command_rx) = mpsc::unbounded(); let client = Client::builder().build(connector); |
