summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mullvad-daemon/src/access_method.rs3
-rw-r--r--mullvad-daemon/src/api.rs21
-rw-r--r--mullvad-daemon/src/lib.rs4
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(),
);