diff --git a/frontend-utils/Cargo.toml b/frontend-utils/Cargo.toml index 599d09807..49b030a55 100644 --- a/frontend-utils/Cargo.toml +++ b/frontend-utils/Cargo.toml @@ -26,6 +26,7 @@ async-net = "2.0.0" futures-lite = "2.3.0" webbrowser = "0.8.14" reqwest = { version = "0.12.3", default-features = false, features = ["rustls-tls", "cookies", "charset", "http2", "macos-system-configuration"] } +tokio = { workspace = true } [dev-dependencies] tempfile = "3" diff --git a/frontend-utils/src/backends/navigator.rs b/frontend-utils/src/backends/navigator.rs index 48f051853..46b71ba69 100644 --- a/frontend-utils/src/backends/navigator.rs +++ b/frontend-utils/src/backends/navigator.rs @@ -25,6 +25,7 @@ use std::path::Path; use std::rc::Rc; use std::sync::{Arc, Mutex}; use std::time::Duration; +use tokio::task; use tracing::warn; use url::{ParseError, Url}; @@ -237,17 +238,19 @@ impl NavigatorBackend for ExternalNavig request_builder = request_builder.body(body_data); - let response = request_builder.send().await.map_err(|e| { - let inner = if e.is_connect() { - Error::InvalidDomain(processed_url.to_string()) - } else { - Error::FetchError(e.to_string()) - }; - ErrorResponse { - url: processed_url.to_string(), - error: inner, - } - })?; + let response = task::unconstrained(request_builder.send()) + .await + .map_err(|e| { + let inner = if e.is_connect() { + Error::InvalidDomain(processed_url.to_string()) + } else { + Error::FetchError(e.to_string()) + }; + ErrorResponse { + url: processed_url.to_string(), + error: inner, + } + })?; let url = response.url().to_string(); @@ -464,7 +467,6 @@ mod tests { use ruffle_core::socket::SocketAction::{Close, Connect, Data}; use std::net::SocketAddr; use std::str::FromStr; - use tokio::task; use super::*;