summaryrefslogtreecommitdiffhomepage
path: root/mullvad-relay-selector/src
AgeCommit message (Collapse)AuthorFilesLines
2025-10-22Add entry and exit no relay errorsJonatan Rhodin2-40/+57
The old no relay error is still kept for single hop
2025-10-21Add support for multihop entry filters in daemonKalle Lindström2-2/+38
In the upcoming re-design of select location, separate sets of filters can now be picked for the entry and the exit relays. This commit adds support for that in the relay selector. In order to not affect the current behavior of the desktop and Android apps before the new UI is implemented, the entry filters are set to the same as the exit filters when the relay settings are updated via gRPC.
2025-10-09Enable lwo in the relay selectorJonatan Rhodin1-1/+0
2025-10-02Enable quic in the relay selector for androidJonatan Rhodin1-1/+0
2025-10-02Append LWO to retry orderDavid Lönnhager1-0/+3
2025-09-30Add relay list selector test for LWODavid Lönnhager1-0/+22
2025-09-30Add LWO relay list feature and filteringDavid Lönnhager2-6/+5
2025-09-25Select random in-address for QUICDavid Lönnhager2-5/+7
2025-09-23Upgrade `rand` to `0.9` in `mullvad-relay-selector`Markus Pettersson2-11/+10
2025-09-18Add documentation for multiplexer obfuscationDavid Lönnhager1-3/+10
2025-09-18Add multiplexer POC to daemon, TSM, and relay selectorDavid Lönnhager2-19/+93
2025-09-18Ignore IP version constraint for OpenVPNDavid Lönnhager1-0/+3
2025-09-15Add LWO obfuscatorDavid Lönnhager4-0/+30
2025-09-10Add fallback to relay selectorSebastian Holmin1-17/+19
Make the relay selection disregard retry order if the user's preferences are incompatible with all queries in the retry order.
2025-09-10Refactor relay selector fnSebastian Holmin1-42/+23
2025-09-10Add offending query to relay select errSebastian Holmin2-13/+14
2025-08-22Do not filter out all OpenVPN relays when QUIC is enabledDavid Lönnhager1-12/+13
2025-08-19Disregard `include_in_country` flag when neededMarkus Pettersson2-37/+90
In an edge case where there are very few relays to choose from and the location constraint is a country for both the exit and entry, the `include_in_country` could filter out too many relays to be able to pick a working multihop circuit. Opportunistically filter based on the `include_in_country` flag. If the relay selector fails to select a valid multihop circuit, try to filter relays without considering the `include_in_country` flag.
2025-08-18Fail if QUIC address set is emptyDavid Lönnhager1-12/+7
2025-08-18Filter out relays without QUIC endpoint for selected IP versionDavid Lönnhager1-1/+13
2025-08-14Set relay to current country on first startKalle Lindström1-0/+5
Sets the default relay selection to the current country (as determined by am.i.mullvad.net). If the current country does not have any relays the country with the closest relay is choosen instead. In non-release builds of the Android app we do not bundle a relay list in the APK, and the relay list is fetched when the user logs in. So one of the following can happen: 1. Geolocation request returns, we have a relay list. 2. Geolocation request returns, we do not yet have a relay list. 3. Relay list request returns, we have a geolocation. 4. Relay list request returns, we do not have a geolocation. In 1. and 3. we can update the default location. In 2. we have to wait until the relay list is fetched from the api until we can update the default location. 4. is unlikely to happen but could happen if am.i.mullvad is down.
2025-08-11Add e2e test `test_wireguard_over_quic` for QUIC obfuscation methodMarkus Pettersson1-1/+1
2025-07-23Refactor Relay protobuf typeMarkus Pettersson2-18/+17
Remove the dependency on google/protobuf/any.proto.
2025-07-16Remove QUIC obfuscation from automatic retry order on AndroidMarkus Pettersson1-0/+1
2025-07-10Run `cargo fmt`Sebastian Holmin5-19/+25
2025-07-09Add support for QUIC in the relay selectorMarkus Pettersson4-17/+56
Parse new 'features' key from relay list API, and add Quic obfuscation to automatic retry order
2025-06-24Enable support for creating a custom list with locationsJonatan Rhodin1-1/+1
2025-06-09Add `AllowedIps` setting to CLISebastian Holmin3-9/+24
2025-05-08Add QUIC obfuscation to mullvad daemon and management interfaceDavid Lönnhager2-0/+18
2025-04-09Improve error message when an unavailable ip version is selectedJonatan Rhodin2-11/+18
2025-03-25Avoid using an unavailable ip version to connect to a relayJonatan Rhodin3-57/+42
Co-authored-by: Sebastian Holmin <sebastian.holmin@mullvad.net>
2025-03-18Replace to_owned with clone where that's implicitly what was going onLinus Färnstrand1-4/+1
2025-03-13Remove "Any" tunnel protocol from query builderSebastian Holmin2-48/+32
2025-03-05Remove automatic tunnel typeDavid Lönnhager4-108/+72
Co-authored-by: Markus Pettersson <markus.pettersson@mullvad.net>
2025-02-24Make `filter_matching_relay_list` publicSebastian Holmin3-51/+57
2024-11-22Enable Multihop on Android in the relay selectorMarkus Pettersson1-6/+0
2024-11-20Add consuming getters for constraints on queriesSebastian Holmin1-3/+10
2024-11-14Improve error messageSebastian Holmin1-1/+1
2024-11-14Move constructor for `SelectorConfig` to `mullvad-types`Sebastian Holmin1-0/+34
2024-11-12Generalize `entry` and `location` functions of relay query builder APIMarkus Pettersson1-5/+4
2024-11-05Use weighted random picker also for multihopSebastian Holmin2-12/+9
2024-10-31Do not fallback to direct API connections when testing access methodsMarkus Pettersson2-8/+14
2024-10-18Run nightly formatterMarkus Pettersson5-38/+44
2024-10-18Add test case for smart routing overriding multihopMarkus Pettersson1-1/+3
2024-10-18Do not use multihop on Android (yet)Markus Pettersson1-1/+6
2024-10-18Remove superflous functionMarkus Pettersson1-37/+22
2024-10-18Add missing docsMarkus Pettersson1-16/+25
2024-10-18Define the trait `RelayQueryExtensions` for grouping common methodsMarkus Pettersson2-26/+31
2024-10-18Make smart routing take precedence over multihopMarkus Pettersson1-8/+22
If both multihop and DAITA (with smart routing) is enabled, a DAITA-compatible entry relay will be selected. This implies that if the user has selected an entry relay which is not DAITA-enabled, the relay selector will override this choice and force a DAITA-enabled relay as entry. If smart routing is disabled in this case, the user's selected entry will always be selected, even if this means that the user will end up in a blocked state.
2024-10-18Refactor smart routing logic a bitMarkus Pettersson1-42/+42