From 9f6b73a7c04607c4594bbc88fa02a9c6be815266 Mon Sep 17 00:00:00 2001 From: Jun Kurihara Date: Mon, 11 Jul 2022 21:00:21 +0900 Subject: [PATCH] change global allocator and fix some services --- Cargo.toml | 11 +++++------ src/main.rs | 4 ++-- src/proxy/proxy_tls.rs | 31 +++++++++++++++++++++---------- 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index c42df7f..80b359f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,10 +17,10 @@ h3 = ["quinn"] [dependencies] anyhow = "1.0.58" -clap = { version = "3.2.6", features = ["std", "cargo", "wrap_help"] } +clap = { version = "3.2.8", features = ["std", "cargo", "wrap_help"] } env_logger = "0.9.0" futures = "0.3.21" -hyper = { version = "0.14.19", default-features = false, features = [ +hyper = { version = "0.14.20", default-features = false, features = [ "server", "http1", "http2", @@ -41,7 +41,7 @@ rustls = "0.20.6" rand = "0.8.5" toml = "0.5.9" rustc-hash = "1.1.0" -serde = { version = "1.0.137", features = ["derive"] } +serde = { version = "1.0.139", features = ["derive"] } hyper-rustls = { version = "0.23.0", default-features = false, features = [ "tokio-runtime", "webpki-tokio", @@ -52,9 +52,7 @@ quinn = { version = "0.8.3", optional = true } h3 = { git = "https://github.com/hyperium/h3.git" } h3-quinn = { git = "https://github.com/hyperium/h3.git" } bytes = "1.1.0" - -[target.'cfg(not(target_env = "msvc"))'.dependencies] -tikv-jemallocator = "0.5.0" +mimalloc-rust = "0.2.0" [dev-dependencies] @@ -66,3 +64,4 @@ incremental = false lto = "fat" opt-level = 3 panic = "abort" +strip = true diff --git a/src/main.rs b/src/main.rs index 1ab9c57..e0e4b6e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ -#[cfg(not(target_env = "msvc"))] +use mimalloc_rust::*; #[global_allocator] -static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc; +static GLOBAL_MIMALLOC: GlobalMiMalloc = GlobalMiMalloc; mod backend; mod backend_opt; diff --git a/src/proxy/proxy_tls.rs b/src/proxy/proxy_tls.rs index 80d5042..c4a9d70 100644 --- a/src/proxy/proxy_tls.rs +++ b/src/proxy/proxy_tls.rs @@ -209,39 +209,50 @@ where #[cfg(not(feature = "h3"))] { select! { - _= self.cert_service(tx) => { + _= self.cert_service(tx).fuse() => { error!("Cert service for TLS exited"); }, - _ = self.listener_service(server, rx) => { + _ = self.listener_service(server, rx).fuse() => { error!("TCP proxy service for TLS exited"); }, + complete => { + error!("Something went wrong"); + return Ok(()) + } }; Ok(()) } #[cfg(feature = "h3")] { if self.globals.http3 { - tokio::select! { - _= self.cert_service(tx) => { + select! { + _= self.cert_service(tx).fuse() => { error!("Cert service for TLS exited"); }, - _ = self.listener_service(server, rx.clone()) => { + _ = self.listener_service(server, rx.clone()).fuse() => { error!("TCP proxy service for TLS exited"); }, - _= self.listener_service_h3(rx) => { + _= self.listener_service_h3(rx).fuse() => { error!("UDP proxy service for QUIC exited"); }, + complete => { + error!("Something went wrong"); + return Ok(()) + } }; Ok(()) } else { - tokio::select! { - _= self.cert_service(tx) => { + select! { + _= self.cert_service(tx).fuse() => { error!("Cert service for TLS exited"); }, - _ = self.listener_service(server, rx) => { + _ = self.listener_service(server, rx).fuse() => { error!("TCP proxy service for TLS exited"); }, - + complete => { + error!("Something went wrong"); + return Ok(()) + } }; Ok(()) }