diff options
Diffstat (limited to 'mullvad-api')
| -rw-r--r-- | mullvad-api/src/relay_list.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/mullvad-api/src/relay_list.rs b/mullvad-api/src/relay_list.rs index 5bccea9d67..22410549b8 100644 --- a/mullvad-api/src/relay_list.rs +++ b/mullvad-api/src/relay_list.rs @@ -10,6 +10,7 @@ use std::{ collections::BTreeMap, future::Future, net::{IpAddr, Ipv4Addr, Ipv6Addr}, + ops::RangeInclusive, time::Duration, }; @@ -253,15 +254,28 @@ struct Wireguard { impl From<&Wireguard> for relay_list::WireguardEndpointData { fn from(wg: &Wireguard) -> Self { Self { - port_ranges: wg.port_ranges.clone(), + port_ranges: inclusive_range_from_pair_set(wg.port_ranges.clone()).collect(), ipv4_gateway: wg.ipv4_gateway, ipv6_gateway: wg.ipv6_gateway, - shadowsocks_port_ranges: wg.shadowsocks_port_ranges.clone(), + shadowsocks_port_ranges: inclusive_range_from_pair_set( + wg.shadowsocks_port_ranges.clone(), + ) + .collect(), udp2tcp_ports: vec![], } } } +fn inclusive_range_from_pair_set<T>( + set: impl IntoIterator<Item = (T, T)>, +) -> impl Iterator<Item = RangeInclusive<T>> { + set.into_iter().map(inclusive_range_from_pair) +} + +fn inclusive_range_from_pair<T>(pair: (T, T)) -> RangeInclusive<T> { + RangeInclusive::new(pair.0, pair.1) +} + impl Wireguard { /// Consumes `self` and appends all its relays to `countries`. fn extract_relays( |
