diff options
| -rw-r--r-- | mullvad-daemon/src/access_method.rs | 3 | ||||
| -rw-r--r-- | mullvad-daemon/src/api.rs | 21 | ||||
| -rw-r--r-- | mullvad-daemon/src/lib.rs | 4 |
3 files changed, 11 insertions, 17 deletions
diff --git a/mullvad-daemon/src/access_method.rs b/mullvad-daemon/src/access_method.rs index fa4da174d3..dc6c06de06 100644 --- a/mullvad-daemon/src/access_method.rs +++ b/mullvad-daemon/src/access_method.rs @@ -98,7 +98,8 @@ where .api_access_methods .api_access_methods .iter() - .map(|x| x.access_method.clone()) + .filter(|api_access_method| api_access_method.enabled()) + .map(|api_access_method| api_access_method.access_method.clone()) .collect(), ) }; diff --git a/mullvad-daemon/src/api.rs b/mullvad-daemon/src/api.rs index 5605f567ca..c5a5bda73e 100644 --- a/mullvad-daemon/src/api.rs +++ b/mullvad-daemon/src/api.rs @@ -173,10 +173,10 @@ pub struct ConnectionModesIterator { } impl ConnectionModesIterator { - pub fn new(modes: Vec<AccessMethod>) -> ConnectionModesIterator { + pub fn new(access_methods: Vec<AccessMethod>) -> ConnectionModesIterator { Self { next: None, - available_modes: Self::get_filtered_access_methods(modes), + available_modes: Self::cycle(access_methods), } } @@ -186,21 +186,12 @@ impl ConnectionModesIterator { } /// Update the collection of [`AccessMethod`] which this iterator will /// return. - pub fn update_access_methods(&mut self, api_access_methods: Vec<AccessMethod>) { - self.available_modes = Self::get_filtered_access_methods(api_access_methods); + pub fn update_access_methods(&mut self, access_methods: Vec<AccessMethod>) { + self.available_modes = Self::cycle(access_methods) } - /// [`ConnectionModesIterator`] will only consider [`AccessMethod`]s which - /// are explicitly marked as enabled. As such, a pre-processing step before - /// assigning an iterator to `available_modes` is to filter out all disabled - /// [`AccessMethod`]s that may be present in the input. - fn get_filtered_access_methods( - modes: Vec<AccessMethod>, - ) -> Box<dyn Iterator<Item = AccessMethod> + Send> { - Box::new(modes - .into_iter() - // .filter(|access_method| access_method.enabled()) - .cycle()) + fn cycle(access_methods: Vec<AccessMethod>) -> Box<dyn Iterator<Item = AccessMethod> + Send> { + Box::new(access_methods.into_iter().cycle()) } } diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs index 1fedbfbde2..8d9980ba42 100644 --- a/mullvad-daemon/src/lib.rs +++ b/mullvad-daemon/src/lib.rs @@ -642,7 +642,9 @@ where .api_access_methods .api_access_methods .iter() - .map(|x| x.access_method.clone()) + // We only care about the access methods which are set to 'enabled' by the user. + .filter(|api_access_method| api_access_method.enabled()) + .map(|api_access_method| api_access_method.access_method.clone()) .collect(), ); |
