summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2018-08-30 08:53:08 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2018-08-30 08:53:08 -0300
commit74cf3950d47cadb91a982826b1acca3fc733b4fe (patch)
tree848d3345a89b085ab676411cd437792aa920cdd5
parent56bcfed5d5ebca63be66986d58f1ccfd96b31dca (diff)
parent6b5b25fbc9a0bcc08c9ffe2dee671243c330293e (diff)
downloadmullvadvpn-74cf3950d47cadb91a982826b1acca3fc733b4fe.tar.xz
mullvadvpn-74cf3950d47cadb91a982826b1acca3fc733b4fe.zip
Merge branch 'fetch-relay-list-on-start'
-rw-r--r--CHANGELOG.md1
-rw-r--r--mullvad-daemon/src/main.rs3
-rw-r--r--mullvad-daemon/src/relays.rs11
3 files changed, 13 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 32332e8524..37a0a438db 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -41,6 +41,7 @@ Line wrap the file at 100 chars. Th
`mullvad relay list locations`.
- Replace WebSockets with Unix domain sockets/Named pipes for IPC. The location
of the socket can be controlled with `MULLVAD_RPC_SOCKET_PATH`.
+- Update the relay list if it's out of date when the daemon starts.
### Fixed
- Fix incorrect window position when using external display.
diff --git a/mullvad-daemon/src/main.rs b/mullvad-daemon/src/main.rs
index f5672ff225..12fe4bacb3 100644
--- a/mullvad-daemon/src/main.rs
+++ b/mullvad-daemon/src/main.rs
@@ -243,6 +243,9 @@ impl Daemon {
let management_interface_broadcaster =
Self::start_management_interface(tx.clone(), cache_dir.clone())?;
+ // Attempt to download a fresh relay list
+ relay_selector.update();
+
Ok(Daemon {
tunnel_command_tx: Sink::wait(tunnel_command_tx),
tunnel_state: TunnelStateTransition::Disconnected,
diff --git a/mullvad-daemon/src/relays.rs b/mullvad-daemon/src/relays.rs
index 4b0b07217e..86d4efbc51 100644
--- a/mullvad-daemon/src/relays.rs
+++ b/mullvad-daemon/src/relays.rs
@@ -122,7 +122,7 @@ impl ParsedRelays {
pub struct RelaySelector {
parsed_relays: Arc<Mutex<ParsedRelays>>,
rng: ThreadRng,
- _updater: RelayListUpdaterHandle,
+ updater: RelayListUpdaterHandle,
}
impl RelaySelector {
@@ -148,10 +148,17 @@ impl RelaySelector {
RelaySelector {
parsed_relays,
rng: rand::thread_rng(),
- _updater: updater,
+ updater,
}
}
+ /// Download the newest relay list.
+ pub fn update(&self) {
+ self.updater
+ .send(())
+ .expect("Relay list updated thread has stopped unexpectedly");
+ }
+
/// Returns all countries and cities. The cities in the object returned does not have any
/// relays in them.
pub fn get_locations(&mut self) -> RelayList {