diff --git a/Cargo.lock b/Cargo.lock index 2f99fef242..aeef286bff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5690,6 +5690,7 @@ dependencies = [ "rivet-config", "rivet-metrics", "rivet-util", + "rustls 0.23.29", "serde", "tempfile", "thiserror 1.0.69", diff --git a/engine/packages/guard/src/lib.rs b/engine/packages/guard/src/lib.rs index c67d3712a1..261a6ff5ce 100644 --- a/engine/packages/guard/src/lib.rs +++ b/engine/packages/guard/src/lib.rs @@ -21,7 +21,7 @@ pub async fn start(config: rivet_config::Config, pools: rivet_pools::Pools) -> R Id::new_v1(config.dc_label()), )?; - // Initialize with a default CryptoProvider for rustls + // Initialize rustls with the default ring CryptoProvider. let provider = rustls::crypto::ring::default_provider(); if provider.install_default().is_err() { tracing::debug!("crypto provider already installed in this process"); diff --git a/engine/packages/pools/Cargo.toml b/engine/packages/pools/Cargo.toml index 93ca668011..3a03a06fdc 100644 --- a/engine/packages/pools/Cargo.toml +++ b/engine/packages/pools/Cargo.toml @@ -18,6 +18,7 @@ reqwest.workspace = true rivet-config.workspace = true rivet-metrics.workspace = true rivet-util.workspace = true +rustls.workspace = true serde.workspace = true tempfile.workspace = true thiserror.workspace = true diff --git a/engine/packages/pools/src/pools.rs b/engine/packages/pools/src/pools.rs index f677784143..3db9ccf0cb 100644 --- a/engine/packages/pools/src/pools.rs +++ b/engine/packages/pools/src/pools.rs @@ -26,6 +26,8 @@ impl Pools { let token = CancellationToken::new(); let node_id = NodeId::new(); + install_rustls_provider(); + let (ups, udb) = tokio::try_join!( crate::db::ups::setup(&config, client_name), crate::db::udb::setup(&config), @@ -55,6 +57,8 @@ impl Pools { let token = CancellationToken::new(); let node_id = NodeId::new(); + install_rustls_provider(); + let (ups, udb) = tokio::try_join!( crate::db::ups::setup(&config, client_name), crate::db::udb::setup(&config), @@ -97,3 +101,10 @@ impl Pools { self.0.udb.clone().ok_or(Error::MissingUdbPool.into()) } } + +fn install_rustls_provider() { + let provider = rustls::crypto::ring::default_provider(); + if provider.install_default().is_err() { + tracing::debug!("crypto provider already installed in this process"); + } +}