summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2022-04-25 15:17:35 +0200
committerDavid Lönnhager <david.l@mullvad.net>2022-04-26 10:46:01 +0200
commitbd6793c4295a1420dcf2985b8143b82407bee1ec (patch)
tree5393e219bc6b904e0cc99ef8b57acf61656c7e9f
parent93511101d30f3e1b6b023f1d5e722fd457073d81 (diff)
downloadmullvadvpn-bd6793c4295a1420dcf2985b8143b82407bee1ec.tar.xz
mullvadvpn-bd6793c4295a1420dcf2985b8143b82407bee1ec.zip
Rotate the API endpoint when bridge constraints change
-rw-r--r--mullvad-api/src/rest.rs7
-rw-r--r--mullvad-daemon/src/lib.rs3
2 files changed, 10 insertions, 0 deletions
diff --git a/mullvad-api/src/rest.rs b/mullvad-api/src/rest.rs
index 4297bd92ed..517e0b3a03 100644
--- a/mullvad-api/src/rest.rs
+++ b/mullvad-api/src/rest.rs
@@ -256,6 +256,13 @@ impl RequestServiceHandle {
.map_err(|_| Error::SendError)?;
completion_rx.await.map_err(|_| Error::ReceiveError)?
}
+
+ /// Forcibly update the connection mode.
+ pub async fn next_api_endpoint(&self) -> Result<()> {
+ self.tx
+ .unbounded_send(RequestCommand::NextApiConfig)
+ .map_err(|_| Error::SendError)
+ }
}
#[derive(Debug)]
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs
index b98c6b5321..106f3c1784 100644
--- a/mullvad-daemon/src/lib.rs
+++ b/mullvad-daemon/src/lib.rs
@@ -2138,6 +2138,9 @@ where
.notify_settings(self.settings.to_settings());
self.relay_selector
.set_config(new_selector_config(&self.settings));
+ if let Err(error) = self.api_handle.service().next_api_endpoint().await {
+ log::error!("Failed to rotate API endpoint: {}", error);
+ }
self.reconnect_tunnel();
};
Self::oneshot_send(tx, Ok(()), "set_bridge_settings");