summaryrefslogtreecommitdiffhomepage
path: root/test/test-rpc
diff options
context:
space:
mode:
authorMarkus Pettersson <markus.pettersson@mullvad.net>2024-04-08 11:26:39 +0200
committerMarkus Pettersson <markus.pettersson@mullvad.net>2024-04-08 11:26:39 +0200
commit86d0ce199e591bef64edc964b6a7e4d1d0d21dd4 (patch)
treedcb72fa4b4fe0640f66a5f6881e17610348c110b /test/test-rpc
parentde28009a01832ef8f5910a93b6ae167a91cc90e0 (diff)
parent291f115fefef468bdade0dc1db67482faf51adc4 (diff)
downloadmullvadvpn-86d0ce199e591bef64edc964b6a7e4d1d0d21dd4.tar.xz
mullvadvpn-86d0ce199e591bef64edc964b6a7e4d1d0d21dd4.zip
Merge branch 'write-relay-selection-tests-for-relay-ip-overrides-des-579'
Diffstat (limited to 'test/test-rpc')
-rw-r--r--test/test-rpc/src/net.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/test/test-rpc/src/net.rs b/test/test-rpc/src/net.rs
index 77aa5c938a..124b4f9ad3 100644
--- a/test/test-rpc/src/net.rs
+++ b/test/test-rpc/src/net.rs
@@ -2,7 +2,7 @@ use futures::channel::oneshot;
use hyper::{Client, Uri};
use once_cell::sync::Lazy;
use serde::{de::DeserializeOwned, Deserialize, Serialize};
-use std::net::SocketAddr;
+use std::{net::SocketAddr, time::Duration};
use tokio_rustls::rustls::ClientConfig;
use crate::{AmIMullvad, Error};
@@ -72,10 +72,10 @@ impl Drop for SockHandle {
}
}
-pub async fn geoip_lookup(mullvad_host: String) -> Result<AmIMullvad, Error> {
+pub async fn geoip_lookup(mullvad_host: String, timeout: Duration) -> Result<AmIMullvad, Error> {
let uri = Uri::try_from(format!("https://ipv4.am.i.{mullvad_host}/json"))
.map_err(|_| Error::InvalidUrl)?;
- http_get(uri).await
+ http_get_with_timeout(uri, timeout).await
}
pub async fn http_get<T: DeserializeOwned>(url: Uri) -> Result<T, Error> {
@@ -106,6 +106,15 @@ pub async fn http_get<T: DeserializeOwned>(url: Uri) -> Result<T, Error> {
})
}
+pub async fn http_get_with_timeout<T: DeserializeOwned>(
+ url: Uri,
+ timeout: Duration,
+) -> Result<T, Error> {
+ tokio::time::timeout(timeout, http_get(url))
+ .await
+ .map_err(|_| Error::HttpRequest("Request timed out".into()))?
+}
+
fn read_cert_store() -> tokio_rustls::rustls::RootCertStore {
let mut cert_store = tokio_rustls::rustls::RootCertStore::empty();