diff --git a/Cargo.lock b/Cargo.lock index 03d2cfd..655fbfb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1088,9 +1088,9 @@ dependencies = [ [[package]] name = "hot_reload" -version = "0.1.9" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75c6b9b663cacaa5655b282218152476f7d38f6dc29b0d9b93a7f5fd73209b6a" +checksum = "469bdabdc9436358811cd8fa2d35b3a0fc60534aca57979b931b9f5f9551ce16" dependencies = [ "anyhow", "async-trait", @@ -2093,7 +2093,7 @@ dependencies = [ [[package]] name = "rpxy" -version = "0.10.0" +version = "0.10.1" dependencies = [ "ahash", "anyhow", @@ -2117,7 +2117,7 @@ dependencies = [ [[package]] name = "rpxy-acme" -version = "0.10.0" +version = "0.10.1" dependencies = [ "ahash", "async-trait", @@ -2138,7 +2138,7 @@ dependencies = [ [[package]] name = "rpxy-certs" -version = "0.10.0" +version = "0.10.1" dependencies = [ "ahash", "async-trait", @@ -2156,7 +2156,7 @@ dependencies = [ [[package]] name = "rpxy-lib" -version = "0.10.0" +version = "0.10.1" dependencies = [ "ahash", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 211fce7..9b7841f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "0.10.0" +version = "0.10.1" authors = ["Jun Kurihara"] homepage = "https://github.com/junkurihara/rust-rpxy" repository = "https://github.com/junkurihara/rust-rpxy" diff --git a/rpxy-bin/Cargo.toml b/rpxy-bin/Cargo.toml index 7ceaef4..da5925d 100644 --- a/rpxy-bin/Cargo.toml +++ b/rpxy-bin/Cargo.toml @@ -61,7 +61,7 @@ futures-util = { version = "0.3.31", default-features = false } # config clap = { version = "4.5.40", features = ["std", "cargo", "wrap_help"] } toml = { version = "0.8.23", default-features = false, features = ["parse"] } -hot_reload = "0.1.9" +hot_reload = "0.2.0" serde_ignored = "0.1.12" # logging diff --git a/rpxy-bin/src/main.rs b/rpxy-bin/src/main.rs index 860a804..1419bc7 100644 --- a/rpxy-bin/src/main.rs +++ b/rpxy-bin/src/main.rs @@ -33,10 +33,9 @@ fn main() { init_logger(parsed_opts.log_dir_path.as_deref()); - let (config_service, config_rx) = ReloaderService::::new( + let (config_service, config_rx) = ReloaderService::::with_delay( &parsed_opts.config_file_path, CONFIG_WATCH_DELAY_SECS, - false, ) .await .unwrap(); @@ -256,7 +255,7 @@ async fn rpxy_service( } /* ---------- */ _ = config_rx.changed() => { - let Some(new_config_toml) = config_rx.borrow().clone() else { + let Some(new_config_toml) = config_rx.get() else { error!("Something wrong in config reloader receiver"); return Err(anyhow!("Something wrong in config reloader receiver")); }; diff --git a/rpxy-certs/Cargo.toml b/rpxy-certs/Cargo.toml index 00f0384..e89c3fc 100644 --- a/rpxy-certs/Cargo.toml +++ b/rpxy-certs/Cargo.toml @@ -20,7 +20,7 @@ ahash = { version = "0.8.12" } tracing = { version = "0.1.41" } derive_builder = { version = "0.20.2" } thiserror = { version = "2.0.12" } -hot_reload = { version = "0.1.9" } +hot_reload = { version = "0.2.0" } async-trait = { version = "0.1.88" } rustls = { version = "0.23.28", default-features = false, features = [ "std", diff --git a/rpxy-certs/src/lib.rs b/rpxy-certs/src/lib.rs index 2cc29bd..9abdfc4 100644 --- a/rpxy-certs/src/lib.rs +++ b/rpxy-certs/src/lib.rs @@ -27,8 +27,6 @@ pub use crate::{ // Constants /// Default delay in seconds to watch certificates const DEFAULT_CERTS_WATCH_DELAY_SECS: u32 = 60; -/// Load certificates only when updated -const LOAD_CERTS_ONLY_WHEN_UPDATED: bool = true; /// Result type inner of certificate reloader service type ReloaderServiceResultInner = ( @@ -62,6 +60,7 @@ where let certs_watch_period = certs_watch_period.unwrap_or(DEFAULT_CERTS_WATCH_DELAY_SECS); let (cert_reloader_service, cert_reloader_rx) = - ReloaderService::::new(&source, certs_watch_period, !LOAD_CERTS_ONLY_WHEN_UPDATED).await?; + ReloaderService::::with_delay(&source, certs_watch_period).await?; + Ok((cert_reloader_service, cert_reloader_rx)) } diff --git a/rpxy-lib/Cargo.toml b/rpxy-lib/Cargo.toml index 90af737..790bcab 100644 --- a/rpxy-lib/Cargo.toml +++ b/rpxy-lib/Cargo.toml @@ -79,7 +79,7 @@ hyper-rustls = { version = "0.27.7", default-features = false, features = [ # tls and cert management for server rpxy-certs = { path = "../rpxy-certs/", default-features = false } -hot_reload = "0.1.9" +hot_reload = "0.2.0" rustls = { version = "0.23.28", default-features = false } rustls-post-quantum = { version = "0.2.2", optional = true } tokio-rustls = { version = "0.26.2", features = ["early-data"] } diff --git a/rpxy-lib/src/proxy/proxy_main.rs b/rpxy-lib/src/proxy/proxy_main.rs index b858072..e2c977f 100644 --- a/rpxy-lib/src/proxy/proxy_main.rs +++ b/rpxy-lib/src/proxy/proxy_main.rs @@ -313,7 +313,7 @@ where error!("Reloader is broken"); break; } - let server_crypto_base = server_crypto_rx.borrow().clone().unwrap(); + let server_crypto_base = server_crypto_rx.get().unwrap(); let Some(server_config): Option> = (&server_crypto_base).try_into().ok() else { error!("Failed to update server crypto"); break; diff --git a/rpxy-lib/src/proxy/proxy_quic_quinn.rs b/rpxy-lib/src/proxy/proxy_quic_quinn.rs index 4fd4c38..f2cd6a0 100644 --- a/rpxy-lib/src/proxy/proxy_quic_quinn.rs +++ b/rpxy-lib/src/proxy/proxy_quic_quinn.rs @@ -102,7 +102,7 @@ where error!("Reloader is broken"); break; } - let cert_keys_map = server_crypto_rx.borrow().clone().unwrap(); + let cert_keys_map = server_crypto_rx.get().unwrap(); server_crypto = (&cert_keys_map).try_into().ok(); let Some(inner) = server_crypto.clone() else { diff --git a/rpxy-lib/src/proxy/proxy_quic_s2n.rs b/rpxy-lib/src/proxy/proxy_quic_s2n.rs index 70659dd..85d438a 100644 --- a/rpxy-lib/src/proxy/proxy_quic_s2n.rs +++ b/rpxy-lib/src/proxy/proxy_quic_s2n.rs @@ -52,7 +52,7 @@ where /// Receive server crypto from reloader fn receive_server_crypto(&self, server_crypto_rx: ReloaderReceiver) -> RpxyResult { - let cert_keys_map = server_crypto_rx.borrow().clone().ok_or_else(|| { + let cert_keys_map = server_crypto_rx.get().ok_or_else(|| { error!("Reloader is broken"); RpxyError::CertificateReloadError(anyhow!("Reloader is broken").into()) })?;