From c5f60881d87a24f1b6747e3054aacd74de6979ec Mon Sep 17 00:00:00 2001 From: Jun Kurihara Date: Fri, 17 Nov 2023 20:55:43 +0900 Subject: [PATCH] hyper-util-0.1.0 --- .gitmodules | 3 --- Cargo.toml | 2 +- relay-lib/Cargo.toml | 4 ++-- relay-lib/src/http_client.rs | 15 ++++++++------ relay-lib/src/relay/forwarder.rs | 2 +- relay-lib/src/relay/forwarder_handle_url.rs | 2 +- relay-lib/src/relay/relay_main.rs | 20 +++++++++++-------- .../src/validator/validator_jwks_service.rs | 2 +- relay-lib/src/validator/validator_main.rs | 2 +- submodules/hyper-tls | 2 +- submodules/hyper-util | 1 - 11 files changed, 29 insertions(+), 26 deletions(-) delete mode 160000 submodules/hyper-util diff --git a/.gitmodules b/.gitmodules index c4040c3..51557eb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "submodules/hyper-util"] - path = submodules/hyper-util - url = git@github.com:junkurihara/hyper-util.git [submodule "submodules/hyper-tls"] path = submodules/hyper-tls url = git@github.com:junkurihara/hyper-tls.git diff --git a/Cargo.toml b/Cargo.toml index a6cf463..7e63041 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [workspace] members = ["relay-bin", "relay-lib"] -exclude = ["submodules/hyper-util/", "submodule/hyper-tls"] +exclude = ["submodules/hyper-tls"] resolver = "2" [profile.release] diff --git a/relay-lib/Cargo.toml b/relay-lib/Cargo.toml index fd4fd8d..b7f87a6 100644 --- a/relay-lib/Cargo.toml +++ b/relay-lib/Cargo.toml @@ -51,10 +51,10 @@ async-trait = "0.1.74" # http handling url = "2.4.1" rustc-hash = "1.1.0" -hyper = { version = "1.0.0", default-features = false } +hyper = { version = "1.0.1", default-features = false } http = "1.0.0" http-body-util = "0.1.0" -hyper-util = { path = "../submodules/hyper-util/", features = ["full"] } +hyper-util = { version = "0.1.0", features = ["full"] } hyper-tls = { path = "../submodules/hyper-tls/", default-features = false } # hyper-rustls = { version = "0.24.2", default-features = false, features = [ # "tokio-runtime", diff --git a/relay-lib/src/http_client.rs b/relay-lib/src/http_client.rs index df42f2a..38f906e 100644 --- a/relay-lib/src/http_client.rs +++ b/relay-lib/src/http_client.rs @@ -1,10 +1,10 @@ use crate::hyper_executor::LocalExecutor; -use http::Request; -use hyper::body::Body; +use http::{Request, Response}; +use hyper::body::{Body, Incoming}; use hyper_tls::HttpsConnector; -use hyper_util::client::{ +use hyper_util::client::legacy::{ connect::{Connect, HttpConnector}, - legacy::{Client, ResponseFuture}, + Client, }; #[derive(Clone)] @@ -27,8 +27,11 @@ where ::Error: Into>, { /// wrapper request fn - pub fn request(&self, req: Request) -> ResponseFuture { - self.inner.request(req) + pub async fn request( + &self, + req: Request, + ) -> std::result::Result, hyper_util::client::legacy::Error> { + self.inner.request(req).await } } diff --git a/relay-lib/src/relay/forwarder.rs b/relay-lib/src/relay/forwarder.rs index 8682025..811f696 100644 --- a/relay-lib/src/relay/forwarder.rs +++ b/relay-lib/src/relay/forwarder.rs @@ -6,7 +6,7 @@ use http::{ }; use hyper::body::{Body, Incoming}; use hyper_tls::HttpsConnector; -use hyper_util::client::connect::{Connect, HttpConnector}; +use hyper_util::client::legacy::connect::{Connect, HttpConnector}; use std::{net::SocketAddr, sync::Arc}; use url::Url; diff --git a/relay-lib/src/relay/forwarder_handle_url.rs b/relay-lib/src/relay/forwarder_handle_url.rs index eb729e2..85c00eb 100644 --- a/relay-lib/src/relay/forwarder_handle_url.rs +++ b/relay-lib/src/relay/forwarder_handle_url.rs @@ -1,7 +1,7 @@ use super::forwarder::InnerForwarder; use crate::{constants::HOSTNAME, error::*, log::*}; use hyper::body::Body; -use hyper_util::client::connect::Connect; +use hyper_util::client::legacy::connect::Connect; use rustc_hash::FxHashMap as HashMap; use url::Url; diff --git a/relay-lib/src/relay/relay_main.rs b/relay-lib/src/relay/relay_main.rs index 4a217b1..b9a0fd3 100644 --- a/relay-lib/src/relay/relay_main.rs +++ b/relay-lib/src/relay/relay_main.rs @@ -4,17 +4,21 @@ use super::{ use crate::{ error::*, globals::Globals, hyper_executor::LocalExecutor, log::*, relay::passthrough_response, validator::Validator, }; -use hyper::{body::Incoming, header, service::service_fn, Request, StatusCode}; +use hyper::{ + body::Incoming, + header, + rt::{Read, Write}, + service::service_fn, + Request, StatusCode, +}; use hyper_tls::HttpsConnector; use hyper_util::{ - client::connect::{Connect, HttpConnector}, + client::legacy::connect::{Connect, HttpConnector}, + rt::TokioIo, server::{self, conn::auto::Builder as ConnectionBuilder}, }; use std::{net::SocketAddr, sync::Arc, time::Duration}; -use tokio::{ - io::{AsyncRead, AsyncWrite}, - time::timeout, -}; +use tokio::time::timeout; /// (M)ODoH Relay main object pub struct Relay @@ -81,7 +85,7 @@ where /// Serve tcp stream fn serve_connection(&self, stream: I, peer_addr: SocketAddr) where - I: AsyncRead + AsyncWrite + Unpin + Send + 'static, + I: Read + Write + Unpin + Send + 'static, { let request_count = self.request_count.clone(); if request_count.increment() > self.globals.relay_config.max_clients { @@ -119,7 +123,7 @@ where let tcp_listener = tcp_socket.listen(self.globals.relay_config.tcp_listen_backlog)?; info!("Start TCP listener serving with HTTP request for configured host names"); while let Ok((stream, peer_addr)) = tcp_listener.accept().await { - self.serve_connection(stream, peer_addr); + self.serve_connection(TokioIo::new(stream), peer_addr); } Ok(()) as Result<()> }; diff --git a/relay-lib/src/validator/validator_jwks_service.rs b/relay-lib/src/validator/validator_jwks_service.rs index 4731a81..8f3b15f 100644 --- a/relay-lib/src/validator/validator_jwks_service.rs +++ b/relay-lib/src/validator/validator_jwks_service.rs @@ -1,7 +1,7 @@ use super::validator_main::Validator; use crate::{constants::JWKS_REFETCH_DELAY_SEC, error::*, log::*}; use futures::{select, FutureExt}; -use hyper_util::client::connect::Connect; +use hyper_util::client::legacy::connect::Connect; use std::{sync::Arc, time::Duration}; use tokio::time::sleep; diff --git a/relay-lib/src/validator/validator_main.rs b/relay-lib/src/validator/validator_main.rs index 50ba424..50210fa 100644 --- a/relay-lib/src/validator/validator_main.rs +++ b/relay-lib/src/validator/validator_main.rs @@ -12,7 +12,7 @@ use http::{header, HeaderValue, Method, Request}; use http_body_util::{combinators::BoxBody, BodyExt, Empty}; use hyper::body::{Body, Buf, Bytes}; use hyper_tls::HttpsConnector; -use hyper_util::client::connect::{Connect, HttpConnector}; +use hyper_util::client::legacy::connect::{Connect, HttpConnector}; use serde::de::DeserializeOwned; use std::{sync::Arc, time::Duration}; use url::Url; diff --git a/submodules/hyper-tls b/submodules/hyper-tls index a78b8d5..322dd3b 160000 --- a/submodules/hyper-tls +++ b/submodules/hyper-tls @@ -1 +1 @@ -Subproject commit a78b8d52730828d0c00ab6eb8bea848079825542 +Subproject commit 322dd3b2e767ae6b032a8de018e440f9f4be2920 diff --git a/submodules/hyper-util b/submodules/hyper-util deleted file mode 160000 index e91fba8..0000000 --- a/submodules/hyper-util +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e91fba80ac00464caea786be743274c4b7e958a0