feat: replace hyper-tls with hyper-rustls for HttpsConnector (#280)

This commit is contained in:
Gaius 2024-02-28 16:48:01 +08:00 committed by GitHub
parent 0e4bcbe046
commit cfb41b0862
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 24 deletions

19
Cargo.lock generated
View File

@ -627,7 +627,6 @@ dependencies = [
"humantime-serde", "humantime-serde",
"hyper 1.1.0", "hyper 1.1.0",
"hyper-rustls", "hyper-rustls",
"hyper-tls 0.6.0",
"hyper-util", "hyper-util",
"indicatif", "indicatif",
"lazy_static", "lazy_static",
@ -1241,22 +1240,6 @@ dependencies = [
"tokio-native-tls", "tokio-native-tls",
] ]
[[package]]
name = "hyper-tls"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
dependencies = [
"bytes",
"http-body-util",
"hyper 1.1.0",
"hyper-util",
"native-tls",
"tokio",
"tokio-native-tls",
"tower-service",
]
[[package]] [[package]]
name = "hyper-util" name = "hyper-util"
version = "0.1.2" version = "0.1.2"
@ -2357,7 +2340,7 @@ dependencies = [
"http 0.2.11", "http 0.2.11",
"http-body 0.4.6", "http-body 0.4.6",
"hyper 0.14.28", "hyper 0.14.28",
"hyper-tls 0.5.0", "hyper-tls",
"ipnet", "ipnet",
"js-sys", "js-sys",
"log", "log",

View File

@ -79,10 +79,9 @@ openssl = { version = "0.10", features = ["vendored"] }
humantime-serde = "1.1.1" humantime-serde = "1.1.1"
leaky-bucket = "1.0.1" leaky-bucket = "1.0.1"
hyper = { version = "1.1", features = ["full"] } hyper = { version = "1.1", features = ["full"] }
hyper-util = { version = "0.1.2", features = ["client-legacy", "tokio", "server-auto", "http1"] } hyper-util = { version = "0.1.2", features = ["client", "client-legacy", "tokio", "server-auto", "http1", "http2"] }
hyper-tls = "0.6.0"
tokio-rustls = "0.25" tokio-rustls = "0.25"
hyper-rustls = "0.26" hyper-rustls = { version = "0.26", features = [ "http1", "http2", "logging" ] }
http-body-util = "0.1.0" http-body-util = "0.1.0"
regex = "1.10.2" regex = "1.10.2"
http-range-header = "0.4.0" http-range-header = "0.4.0"

View File

@ -40,7 +40,6 @@ use hyper::server::conn::http1;
use hyper::service::service_fn; use hyper::service::service_fn;
use hyper::upgrade::Upgraded; use hyper::upgrade::Upgraded;
use hyper::{Method, Request}; use hyper::{Method, Request};
use hyper_tls::HttpsConnector;
use hyper_util::{ use hyper_util::{
client::legacy::Client, client::legacy::Client,
rt::{tokio::TokioIo, TokioExecutor}, rt::{tokio::TokioIo, TokioExecutor},
@ -620,8 +619,16 @@ async fn proxy_http(request: Request<hyper::body::Incoming>) -> ClientResult<Res
// proxy_https proxies the HTTPS request directly to the remote server. // proxy_https proxies the HTTPS request directly to the remote server.
#[instrument(skip_all)] #[instrument(skip_all)]
async fn proxy_https(request: Request<hyper::body::Incoming>) -> ClientResult<Response> { async fn proxy_https(request: Request<hyper::body::Incoming>) -> ClientResult<Response> {
let https = HttpsConnector::new(); let https = hyper_rustls::HttpsConnectorBuilder::new()
let client = Client::builder(TokioExecutor::new()).build::<_, hyper::body::Incoming>(https); .with_native_roots()?
.https_or_http()
.enable_http1()
.enable_http2()
.build();
let client = Client::builder(TokioExecutor::new())
.http2_only(true)
.build::<_, hyper::body::Incoming>(https);
let response = client.request(request).await?; let response = client.request(request).await?;
Ok(response.map(|b| b.map_err(ClientError::from).boxed())) Ok(response.map(|b| b.map_err(ClientError::from).boxed()))
} }