Merge branch 'arti-hyper-fixing-715' into 'main'

Temporary fix for #715 and #569

Closes #715

See merge request tpo/core/arti!958
This commit is contained in:
eta 2023-01-09 14:43:37 +00:00
commit 371bcdc554
4 changed files with 36 additions and 2 deletions

16
Cargo.lock generated
View File

@ -212,6 +212,7 @@ dependencies = [
"thiserror",
"tls-api",
"tls-api-native-tls",
"tls-api-openssl",
"tokio",
"tor-error",
"tor-rtcompat",
@ -3441,6 +3442,21 @@ dependencies = [
"tokio",
]
[[package]]
name = "tls-api-openssl"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82155f245c99a3b652627f32abeacd4eae9e0fec996c1090df121e01379d28f3"
dependencies = [
"anyhow",
"openssl",
"openssl-sys",
"thiserror",
"tls-api",
"tls-api-test",
"tokio",
]
[[package]]
name = "tls-api-test"
version = "0.9.0"

View File

@ -43,8 +43,12 @@ tokio = { package = "tokio", version = "1.7", features = [
tor-error = { path = "../tor-error", version = "0.4.0" }
tor-rtcompat = { path = "../tor-rtcompat", version = "0.8.0", features = ["tokio"] }
[target.'cfg(target_vendor="apple")'.dev-dependencies]
tls-api-openssl = "0.9.0"
[dev-dependencies]
tracing-subscriber = "0.3.0"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

View File

@ -10,4 +10,9 @@ to connect to Tor and make a single HTTP\[S] request.
[`hyper.rs`]: <https://gitlab.torproject.org/tpo/core/arti/-/blob/main/crates/arti-hyper/examples/hyper.rs>
## Warning
On `apple-darwin` targets only the `tls-api-openssl` tls implementation is working.
If you get a issue related to tls failure, please refer to issue [#715](https://gitlab.torproject.org/tpo/core/arti/-/issues/715).
License: MIT OR Apache-2.0

View File

@ -13,7 +13,16 @@ use arti_hyper::*;
use anyhow::Result;
use arti_client::{TorClient, TorClientConfig};
use hyper::Body;
use tls_api::{TlsConnector, TlsConnectorBuilder};
use tls_api::{TlsConnector as TlsConnectorTrait, TlsConnectorBuilder};
// On apple-darwin targets there is an issue with the native and rustls
// tls implementation so this makes it fall back to the openssl variant.
//
// https://gitlab.torproject.org/tpo/core/arti/-/issues/715
#[cfg(not(target_vendor = "apple"))]
use tls_api_native_tls::TlsConnector;
#[cfg(target_vendor = "apple")]
use tls_api_openssl::TlsConnector;
#[tokio::main]
async fn main() -> Result<()> {
@ -40,7 +49,7 @@ async fn main() -> Result<()> {
// (This takes a while to gather the necessary consensus state, etc.)
let tor_client = TorClient::create_bootstrapped(config).await?;
let tls_connector = tls_api_native_tls::TlsConnector::builder()?.build()?;
let tls_connector = TlsConnector::builder()?.build()?;
// The `ArtiHttpConnector` lets us make HTTP requests via the Tor network.
let tor_connector = ArtiHttpConnector::new(tor_client, tls_connector);