From 387c74f26aaed5661e45b377364965ca66e238eb Mon Sep 17 00:00:00 2001 From: SGavrl <277843151+SGavrl@users.noreply.github.com> Date: Wed, 3 Jun 2026 20:45:25 +0000 Subject: [PATCH] fix(net): pin exact wreq and wreq-util versions for stealth build (#235) wreq and wreq-util are pre-release crates whose public API shifts between rc releases. The caret version requirements let a fresh resolve pull a newer rc where CertStore moved out of tls, cert_store was renamed to tls_cert_store, and the Emulation builder changed. That broke cargo build --features stealth (issue #234). Pin to =6.0.0-rc.28 and =3.0.0-rc.10, the versions wreq_client.rs is written against, so the build always resolves to a compatible API. --- crates/obscura-net/Cargo.toml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/crates/obscura-net/Cargo.toml b/crates/obscura-net/Cargo.toml index 4dba1e2..1b13bdf 100644 --- a/crates/obscura-net/Cargo.toml +++ b/crates/obscura-net/Cargo.toml @@ -18,14 +18,19 @@ thiserror = { workspace = true } async-trait = "0.1" encoding_rs = "0.8" tempfile = "3" -wreq-util = { version = "3.0.0-rc.10", optional = true } +# wreq and wreq-util are pre-release crates whose API changes between rc builds +# (CertStore moved out of `tls`, `cert_store` renamed to `tls_cert_store`, the +# Emulation builder reshuffled). A caret requirement let a fresh resolve pull a +# newer, incompatible rc and broke `cargo build --features stealth` (issue #234). +# Pin exact versions so the build always resolves to the API wreq_client.rs targets. +wreq-util = { version = "=3.0.0-rc.10", optional = true } # `prefix-symbols` renames BoringSSL exports to avoid clashes with system OpenSSL, # but the renaming is only correct on Linux and Android (per wreq's README). # Enabling it on other platforms produces unresolved `build_script_main_*` # symbols at link time (see issue #39). [target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies] -wreq = { version = "6.0.0-rc.28", optional = true, features = ["prefix-symbols", "socks"] } +wreq = { version = "=6.0.0-rc.28", optional = true, features = ["prefix-symbols", "socks"] } [target.'cfg(not(any(target_os = "linux", target_os = "android")))'.dependencies] -wreq = { version = "6.0.0-rc.28", optional = true, features = ["socks"] } +wreq = { version = "=6.0.0-rc.28", optional = true, features = ["socks"] }