From 390b1091238addd50a545a19fe28c644e61f3a59 Mon Sep 17 00:00:00 2001 From: Rob Date: Fri, 18 Oct 2024 10:17:35 -0400 Subject: [PATCH 01/18] breaking CDN changes --- Cargo.lock | 28 +++++------ Cargo.toml | 8 ++-- crates/examples/combined/all.rs | 5 +- crates/examples/push-cdn/all.rs | 8 +++- crates/examples/push-cdn/broker.rs | 5 +- .../src/traits/networking/push_cdn_network.rs | 47 +++++++++++++------ 6 files changed, 66 insertions(+), 35 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bd0c7bb7b3..2062fa43d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1283,18 +1283,18 @@ dependencies = [ [[package]] name = "capnp" -version = "0.19.6" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de71387912cac7dd3cb7c219e09628411620a18061bba58c71453c26ae7bf66a" +checksum = "c9e0676a27d3cf41fc949b3061cca99c67791a8a3baf1544b30ef712936e7e3b" dependencies = [ "embedded-io", ] [[package]] name = "capnpc" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ba30e0f08582d53c2f3710cf4bb65ff562614b1ba86906d7391adffe189ec" +checksum = "8d13cb6e2643fd1f9fb804ba938323636ef52e07d6e495e372d933ad0cb98207" dependencies = [ "capnp", ] @@ -1320,7 +1320,7 @@ dependencies = [ [[package]] name = "cdn-broker" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.4.7#5406fde54e61058428a7b55e1a98b699f0f606f1" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.1#af42143a60f86a12ff759b6ad9bd1577c2887871" dependencies = [ "async-std", "cdn-proto", @@ -1344,7 +1344,7 @@ dependencies = [ [[package]] name = "cdn-client" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.4.7#5406fde54e61058428a7b55e1a98b699f0f606f1" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.1#af42143a60f86a12ff759b6ad9bd1577c2887871" dependencies = [ "async-std", "cdn-proto", @@ -1360,7 +1360,7 @@ dependencies = [ [[package]] name = "cdn-marshal" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.4.7#5406fde54e61058428a7b55e1a98b699f0f606f1" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.1#af42143a60f86a12ff759b6ad9bd1577c2887871" dependencies = [ "async-std", "cdn-proto", @@ -1374,7 +1374,7 @@ dependencies = [ [[package]] name = "cdn-proto" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.4.7#5406fde54e61058428a7b55e1a98b699f0f606f1" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.1#af42143a60f86a12ff759b6ad9bd1577c2887871" dependencies = [ "anyhow", "ark-serialize", @@ -6106,9 +6106,9 @@ dependencies = [ [[package]] name = "redis" -version = "0.26.1" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e902a69d09078829137b4a5d9d082e0490393537badd7c91a3d69d14639e115f" +checksum = "81cccf17a692ce51b86564334614d72dcae1def0fd5ecebc9f02956da74352b5" dependencies = [ "arc-swap", "async-trait", @@ -6122,7 +6122,7 @@ dependencies = [ "pin-project-lite 0.2.14", "ryu", "tokio", - "tokio-retry", + "tokio-retry2", "tokio-util", "url", ] @@ -7900,10 +7900,10 @@ dependencies = [ ] [[package]] -name = "tokio-retry" -version = "0.3.0" +name = "tokio-retry2" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +checksum = "903934dba1c4c2f2e9cb460ef10b5695e0b0ecad3bf9ee7c8675e540c5e8b2d1" dependencies = [ "pin-project", "rand 0.8.5", diff --git a/Cargo.toml b/Cargo.toml index 02a9c4207e..a22acd36a1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -117,10 +117,10 @@ anyhow = "1" # Push CDN imports -cdn-client = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.4.7" } -cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.4.7" } -cdn-marshal = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.4.7" } -cdn-proto = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.4.7" } +cdn-client = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.1" } +cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.1" } +cdn-marshal = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.1" } +cdn-proto = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.1" } ### Profiles ### diff --git a/crates/examples/combined/all.rs b/crates/examples/combined/all.rs index d6edbf3253..aff1a116f6 100644 --- a/crates/examples/combined/all.rs +++ b/crates/examples/combined/all.rs @@ -14,7 +14,7 @@ use async_compatibility_layer::{ art::async_spawn, logging::{setup_backtrace, setup_logging}, }; -use cdn_broker::Broker; +use cdn_broker::{reexports::def::hook::NoMessageHook, Broker}; use cdn_marshal::Marshal; use hotshot::{ traits::implementations::{KeyPair, TestingDef, WrappedSignatureKey}, @@ -85,6 +85,9 @@ async fn main() { private_key: broker_private_key.clone(), }, + user_message_hook: NoMessageHook, + broker_message_hook: NoMessageHook, + metrics_bind_endpoint: None, ca_cert_path: None, ca_key_path: None, diff --git a/crates/examples/push-cdn/all.rs b/crates/examples/push-cdn/all.rs index 3d3de5d42e..fe947089d7 100644 --- a/crates/examples/push-cdn/all.rs +++ b/crates/examples/push-cdn/all.rs @@ -11,7 +11,10 @@ pub mod types; use std::path::Path; use async_compatibility_layer::art::async_spawn; -use cdn_broker::{reexports::crypto::signature::KeyPair, Broker}; +use cdn_broker::{ + reexports::{crypto::signature::KeyPair, def::hook::NoMessageHook}, + Broker, +}; use cdn_marshal::Marshal; use hotshot::{ traits::implementations::{TestingDef, WrappedSignatureKey}, @@ -91,6 +94,9 @@ async fn main() { private_key: broker_private_key.clone(), }, + user_message_hook: NoMessageHook, + broker_message_hook: NoMessageHook, + metrics_bind_endpoint: None, ca_cert_path: None, ca_key_path: None, diff --git a/crates/examples/push-cdn/broker.rs b/crates/examples/push-cdn/broker.rs index 7eabbec50f..d266d25d1e 100644 --- a/crates/examples/push-cdn/broker.rs +++ b/crates/examples/push-cdn/broker.rs @@ -7,7 +7,7 @@ //! The following is the main `Broker` binary, which just instantiates and runs //! a `Broker` object. use anyhow::Result; -use cdn_broker::{Broker, Config}; +use cdn_broker::{reexports::def::hook::NoMessageHook, Broker, Config}; use clap::Parser; use hotshot::traits::implementations::{KeyPair, ProductionDef, WrappedSignatureKey}; use hotshot_example_types::node_types::TestTypes; @@ -103,6 +103,9 @@ async fn main() -> Result<()> { private_key, }, + user_message_hook: NoMessageHook, + broker_message_hook: NoMessageHook, + public_bind_endpoint: args.public_bind_endpoint, public_advertise_endpoint: args.public_advertise_endpoint, private_bind_endpoint: args.private_bind_endpoint, diff --git a/crates/hotshot/src/traits/networking/push_cdn_network.rs b/crates/hotshot/src/traits/networking/push_cdn_network.rs index dc38f979cf..e73652b031 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network.rs @@ -16,8 +16,8 @@ use async_compatibility_layer::{art::async_sleep, art::async_spawn}; use async_trait::async_trait; use bincode::config::Options; use cdn_broker::reexports::{ - connection::protocols::Tcp, - def::{ConnectionDef, RunDef, Topic as TopicTrait}, + connection::protocols::{Tcp, TcpTls}, + def::{hook::NoMessageHook, ConnectionDef, RunDef, Topic as TopicTrait}, discovery::{Embedded, Redis}, }; #[cfg(feature = "hotshot-testing")] @@ -25,7 +25,6 @@ use cdn_broker::{Broker, Config as BrokerConfig}; pub use cdn_client::reexports::crypto::signature::KeyPair; use cdn_client::{ reexports::{ - connection::protocols::Quic, crypto::signature::{Serializable, SignatureScheme}, message::{Broadcast, Direct, Message as PushCdnMessage}, }, @@ -92,22 +91,35 @@ impl SignatureScheme for WrappedSignatureKey { type PublicKey = Self; /// Sign a message of arbitrary data and return the serialized signature - fn sign(private_key: &Self::PrivateKey, message: &[u8]) -> anyhow::Result> { - let signature = T::sign(private_key, message)?; - // TODO: replace with rigorously defined serialization scheme... - // why did we not make `PureAssembledSignatureType` be `CanonicalSerialize + CanonicalDeserialize`? + fn sign( + private_key: &Self::PrivateKey, + namespace: &str, + message: &[u8], + ) -> anyhow::Result> { + // Combine the namespace and message into a single byte array + let message = [namespace.as_bytes(), message].concat(); + + let signature = T::sign(private_key, &message)?; Ok(bincode_opts().serialize(&signature)?) } /// Verify a message of arbitrary data and return the result - fn verify(public_key: &Self::PublicKey, message: &[u8], signature: &[u8]) -> bool { - // TODO: replace with rigorously defined signing scheme + fn verify( + public_key: &Self::PublicKey, + namespace: &str, + message: &[u8], + signature: &[u8], + ) -> bool { + // Deserialize the signature let signature: T::PureAssembledSignatureType = match bincode_opts().deserialize(signature) { Ok(key) => key, Err(_) => return false, }; - public_key.0.validate(&signature, message) + // Combine the namespace and message into a single byte array + let message = [namespace.as_bytes(), message].concat(); + + public_key.0.validate(&signature, &message) } } @@ -134,11 +146,12 @@ impl RunDef for ProductionDef { } /// The user definition for the Push CDN. -/// Uses the Quic protocol and untrusted middleware. +/// Uses the TCP+TLS protocol and untrusted middleware. pub struct UserDef(PhantomData); impl ConnectionDef for UserDef { type Scheme = WrappedSignatureKey; - type Protocol = Quic; + type Protocol = TcpTls; + type MessageHook = NoMessageHook; } /// The broker definition for the Push CDN. @@ -147,16 +160,18 @@ pub struct BrokerDef(PhantomData); impl ConnectionDef for BrokerDef { type Scheme = WrappedSignatureKey; type Protocol = Tcp; + type MessageHook = NoMessageHook; } -/// The client definition for the Push CDN. Uses the Quic +/// The client definition for the Push CDN. Uses the TCP+TLS /// protocol and no middleware. Differs from the user /// definition in that is on the client-side. #[derive(Clone)] pub struct ClientDef(PhantomData); impl ConnectionDef for ClientDef { type Scheme = WrappedSignatureKey; - type Protocol = Quic; + type Protocol = TcpTls; + type MessageHook = NoMessageHook; } /// The testing run definition for the Push CDN. @@ -332,6 +347,10 @@ impl TestableNetworkingImplementation private_key: broker_private_key.clone(), }, discovery_endpoint: discovery_endpoint.clone(), + + user_message_hook: NoMessageHook, + broker_message_hook: NoMessageHook, + ca_cert_path: None, ca_key_path: None, // 1GB From 002c71ec9f1244ed877a5d37a6022f3718f5c28f Mon Sep 17 00:00:00 2001 From: Rob Date: Fri, 18 Oct 2024 11:53:21 -0400 Subject: [PATCH 02/18] the builder was running on the same port as the marshal --- crates/examples/push-cdn/all.rs | 6 ++++-- crates/examples/push-cdn/broker.rs | 2 +- crates/orchestrator/run-config.toml | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/crates/examples/push-cdn/all.rs b/crates/examples/push-cdn/all.rs index fe947089d7..43f97415e5 100644 --- a/crates/examples/push-cdn/all.rs +++ b/crates/examples/push-cdn/all.rs @@ -116,10 +116,12 @@ async fn main() { } // Get the port to use for the marshal - let marshal_port = 9000; + let marshal_endpoint = config + .cdn_marshal_address + .clone() + .expect("CDN marshal address must be specified"); // Configure the marshal - let marshal_endpoint = format!("127.0.0.1:{marshal_port}"); let marshal_config = cdn_marshal::Config { bind_endpoint: marshal_endpoint.clone(), discovery_endpoint, diff --git a/crates/examples/push-cdn/broker.rs b/crates/examples/push-cdn/broker.rs index d266d25d1e..ca6c14a908 100644 --- a/crates/examples/push-cdn/broker.rs +++ b/crates/examples/push-cdn/broker.rs @@ -114,7 +114,7 @@ async fn main() -> Result<()> { }; // Create new `Broker` - // Uses TCP from broker connections and Quic for user connections. + // Uses TCP from broker connections and TCP+TLS for user connections. let broker = Broker::new(broker_config).await?; // Start the main loop, consuming it diff --git a/crates/orchestrator/run-config.toml b/crates/orchestrator/run-config.toml index 909a6043b0..8439ac9e28 100644 --- a/crates/orchestrator/run-config.toml +++ b/crates/orchestrator/run-config.toml @@ -5,7 +5,7 @@ transaction_size = 1000 node_index = 0 seed = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] start_delay_seconds = 0 -cdn_marshal_address = "127.0.0.1:9000" +cdn_marshal_address = "127.0.0.1:8999" public_keys = [ { stake_table_key = "BLS_VER_KEY~bQszS-QKYvUij2g20VqS8asttGSb95NrTu2PUj0uMh1CBUxNy1FqyPDjZqB29M7ZbjWqj79QkEOWkpga84AmDYUeTuWmy-0P1AdKHD3ehc-dKvei78BDj5USwXPJiDUlCxvYs_9rWYhagaq-5_LXENr78xel17spftNd5MA1Mw5U", state_ver_key = "SCHNORR_VER_KEY~lJqDaVZyM0hWP2Br52IX5FeE-dCAIC-dPX7bL5-qUx-vjbunwe-ENOeZxj6FuOyvDCFzoGeP7yZ0fM995qF-CRE", stake = 1, da = true }, From 8cecb2fec7629c8af78812ea7051b264398718b4 Mon Sep 17 00:00:00 2001 From: Rob Date: Fri, 18 Oct 2024 15:57:33 -0400 Subject: [PATCH 03/18] update lock --- Cargo.lock | 1142 ++++++++++++++++++++++------------------------------ 1 file changed, 492 insertions(+), 650 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2062fa43d5..837a282608 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aead" version = "0.3.2" @@ -126,9 +132,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -147,27 +153,27 @@ checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -175,9 +181,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" [[package]] name = "arbitrary" @@ -329,7 +335,7 @@ dependencies = [ "num-traits", "paste", "rayon", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "zeroize", ] @@ -470,40 +476,24 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "asn1-rs" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" -dependencies = [ - "asn1-rs-derive 0.4.0", - "asn1-rs-impl 0.1.0", - "displaydoc", - "nom", - "num-traits", - "rusticata-macros", - "thiserror", - "time 0.3.36", -] - -[[package]] -name = "asn1-rs" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ad1373757efa0f70ec53939aabc7152e1591cb485208052993070ac8d2429d" +checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" dependencies = [ - "asn1-rs-derive 0.5.0", - "asn1-rs-impl 0.2.0", + "asn1-rs-derive", + "asn1-rs-impl", "displaydoc", "nom", "num-traits", @@ -514,21 +504,9 @@ dependencies = [ [[package]] name = "asn1-rs-derive" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure 0.12.6", -] - -[[package]] -name = "asn1-rs-derive" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7378575ff571966e99a744addeff0bff98b8ada0dedf1956d59e634db95eaac1" +checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", @@ -536,17 +514,6 @@ dependencies = [ "synstructure 0.13.1", ] -[[package]] -name = "asn1-rs-impl" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "asn1-rs-impl" version = "0.2.0" @@ -641,13 +608,13 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.1.0", + "fastrand 2.1.1", "futures-lite 2.3.0", "slab", ] @@ -672,7 +639,7 @@ checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ "async-channel 2.3.1", "async-executor", - "async-io 2.3.3", + "async-io 2.3.4", "async-lock 3.4.0", "blocking", "futures-lite 2.3.0", @@ -719,9 +686,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.3" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ "async-lock 3.4.0", "cfg-if", @@ -729,11 +696,11 @@ dependencies = [ "futures-io", "futures-lite 2.3.0", "parking", - "polling 3.7.1", - "rustix 0.38.34", + "polling 3.7.3", + "rustix 0.38.37", "slab", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -792,26 +759,45 @@ dependencies = [ "cfg-if", "event-listener 3.1.0", "futures-lite 1.13.0", - "rustix 0.38.34", + "rustix 0.38.37", "windows-sys 0.48.0", ] +[[package]] +name = "async-process" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +dependencies = [ + "async-channel 2.3.1", + "async-io 2.3.4", + "async-lock 3.4.0", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener 5.3.1", + "futures-lite 2.3.0", + "rustix 0.38.37", + "tracing", +] + [[package]] name = "async-signal" -version = "0.2.7" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "329972aa325176e89114919f2a80fdae4f4c040f66a370b1a1159c6c0f94e7aa" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" dependencies = [ - "async-io 2.3.3", + "async-io 2.3.4", "async-lock 3.4.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.34", + "rustix 0.38.37", "signal-hook-registry", "slab", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -830,21 +816,21 @@ dependencies = [ [[package]] name = "async-std" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" dependencies = [ "async-attributes", "async-channel 1.9.0", "async-global-executor", - "async-io 1.13.0", - "async-lock 2.8.0", - "async-process", + "async-io 2.3.4", + "async-lock 3.4.0", + "async-process 2.3.0", "crossbeam-utils", "futures-channel", "futures-core", "futures-io", - "futures-lite 1.13.0", + "futures-lite 2.3.0", "gloo-timers", "kv-log-macro", "log", @@ -873,9 +859,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -884,9 +870,9 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", @@ -993,9 +979,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "automod" @@ -1021,7 +1007,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.31", "itoa", "matchit", "memchr", @@ -1063,7 +1049,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.7.4", "object", "rustc-demangle", ] @@ -1115,16 +1101,14 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.4" +version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cexpr", "clang-sys", - "itertools 0.12.1", - "lazy_static", - "lazycell", + "itertools 0.13.0", "log", "prettyplease", "proc-macro2", @@ -1133,7 +1117,6 @@ dependencies = [ "rustc-hash 1.1.0", "shlex", "syn 2.0.79", - "which", ] [[package]] @@ -1144,9 +1127,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" dependencies = [ "serde", ] @@ -1219,9 +1202,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62dc83a094a71d43eeadd254b1ec2d24cb6a0bb6cadce00df51f0db594711a32" +checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" dependencies = [ "cc", "glob", @@ -1274,9 +1257,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" dependencies = [ "serde", ] @@ -1301,18 +1284,18 @@ dependencies = [ [[package]] name = "cbor4ii" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b4c883b9cc4757b061600d39001d4d0232bece4a3174696cf8f58a14db107d" +checksum = "472931dd4dfcc785075b09be910147f9c6258883fc4591d0dac6116392b2daa6" dependencies = [ "serde", ] [[package]] name = "cc" -version = "1.1.13" +version = "1.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" +checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" dependencies = [ "shlex", ] @@ -1389,12 +1372,12 @@ dependencies = [ "num_enum", "pem", "prometheus", - "quinn 0.11.5", + "quinn", "rand 0.8.5", "rcgen 0.13.1", "redis", "rkyv", - "rustls 0.23.7", + "rustls 0.23.15", "rustls-pki-types", "sqlx", "thiserror", @@ -1481,7 +1464,7 @@ version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.79", @@ -1489,15 +1472,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "cmake" -version = "0.1.50" +version = "0.1.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a" dependencies = [ "cc", ] @@ -1531,9 +1514,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "combine" @@ -1705,9 +1688,9 @@ checksum = "373e9fafaa20882876db20562275ff58d50e0caa2590077fe7ce7bef90211d0d" [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "convert_case" @@ -1753,9 +1736,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core2" @@ -1768,9 +1751,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -1932,7 +1915,7 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "subtle", "zeroize", ] @@ -2065,27 +2048,13 @@ dependencies = [ "zeroize", ] -[[package]] -name = "der-parser" -version = "8.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" -dependencies = [ - "asn1-rs 0.5.2", - "displaydoc", - "nom", - "num-bigint", - "num-traits", - "rusticata-macros", -] - [[package]] name = "der-parser" version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" dependencies = [ - "asn1-rs 0.6.1", + "asn1-rs", "displaydoc", "nom", "num-bigint", @@ -2165,7 +2134,7 @@ dependencies = [ "convert_case 0.4.0", "proc-macro2", "quote", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "syn 2.0.79", ] @@ -2322,9 +2291,9 @@ dependencies = [ [[package]] name = "edit-distance" -version = "2.1.0" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbaaaf38131deb9ca518a274a45bfdb8771f139517b073b16c2d3d32ae5037b" +checksum = "e3f497e87b038c09a155dfd169faa5ec940d0644635555ef6bd464ac20e97397" [[package]] name = "either" @@ -2352,11 +2321,11 @@ dependencies = [ [[package]] name = "enum-as-inner" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "quote", "syn 2.0.79", @@ -2488,9 +2457,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fiat-crypto" @@ -2511,12 +2480,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -2664,7 +2633,7 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.1.0", + "fastrand 2.1.1", "futures-core", "futures-io", "parking", @@ -2684,12 +2653,13 @@ dependencies = [ [[package]] name = "futures-rustls" -version = "0.24.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd3cf68c183738046838e300353e4716c674dc5e56890de4826801a6622a28" +checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" dependencies = [ "futures-io", - "rustls 0.21.11", + "rustls 0.23.15", + "rustls-pki-types", ] [[package]] @@ -2798,9 +2768,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "gloo-timers" -version = "0.2.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" dependencies = [ "futures-channel", "futures-core", @@ -2820,7 +2790,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.2.6", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -2829,9 +2799,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -2839,7 +2809,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.2.6", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -2931,12 +2901,6 @@ dependencies = [ "http 0.2.12", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -2949,6 +2913,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" @@ -3506,9 +3476,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http 1.1.0", @@ -3516,14 +3486,14 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite 0.2.14", ] @@ -3563,9 +3533,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -3581,9 +3551,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.29" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -3605,16 +3575,16 @@ dependencies = [ [[package]] name = "hyper" -version = "1.3.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.5", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", "itoa", "pin-project-lite 0.2.14", @@ -3625,15 +3595,15 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.3.1", + "hyper 1.5.0", "hyper-util", - "rustls 0.23.7", + "rustls 0.23.15", "rustls-pki-types", "tokio", "tokio-rustls", @@ -3646,7 +3616,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.29", + "hyper 0.14.31", "pin-project-lite 0.2.14", "tokio", "tokio-io-timeout", @@ -3660,7 +3630,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.3.1", + "hyper 1.5.0", "hyper-util", "native-tls", "tokio", @@ -3670,36 +3640,35 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.0", - "hyper 1.3.1", + "http-body 1.0.1", + "hyper 1.5.0", "pin-project-lite 0.2.14", "socket2 0.5.7", "tokio", - "tower", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -3786,7 +3755,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6b0422c86d7ce0e97169cc42e04ae643caf278874a7a3c87b8150a220dc7e1e" dependencies = [ - "async-io 2.3.3", + "async-io 2.3.4", "core-foundation", "fnv", "futures", @@ -3811,7 +3780,7 @@ dependencies = [ "bytes", "futures", "http 0.2.12", - "hyper 0.14.29", + "hyper 0.14.31", "log", "rand 0.8.5", "tokio", @@ -3830,18 +3799,18 @@ dependencies = [ [[package]] name = "include_dir" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" dependencies = [ "include_dir_macros", ] [[package]] name = "include_dir_macros" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ "proc-macro2", "quote", @@ -3866,12 +3835,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.0", "serde", ] @@ -3905,7 +3874,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", "windows-sys 0.48.0", ] @@ -3924,15 +3893,15 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -4177,9 +4146,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -4232,23 +4201,17 @@ dependencies = [ "spin 0.9.8", ] -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libc" -version = "0.2.155" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", "windows-targets 0.52.6", @@ -4341,15 +4304,14 @@ dependencies = [ [[package]] name = "libp2p-core" -version = "0.41.2" +version = "0.41.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8130a8269e65a2554d55131c770bdf4bcd94d2b8d4efb24ca23699be65066c05" +checksum = "a5a8920cbd8540059a01950c1e5c96ea8d89eb50c51cd366fc18bdf540a6e48f" dependencies = [ "either", "fnv", "futures", "futures-timer", - "instant", "libp2p-identity", "multiaddr", "multihash", @@ -4366,6 +4328,7 @@ dependencies = [ "tracing", "unsigned-varint 0.8.0", "void", + "web-time", ] [[package]] @@ -4497,7 +4460,7 @@ version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49007d9a339b3e1d7eeebc4d67c05dbf23d300b7d091193ec2d3f26802d7faf2" dependencies = [ - "async-io 2.3.3", + "async-io 2.3.4", "async-std", "data-encoding", "futures", @@ -4569,9 +4532,9 @@ dependencies = [ [[package]] name = "libp2p-quic" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0375cdfee57b47b313ef1f0fdb625b78aed770d33a40cf1c294a371ff5e6666" +checksum = "c67296ad4e092e23f92aea3d2bdb6f24eab79c0929ed816dfb460ea2f4567d2b" dependencies = [ "async-std", "bytes", @@ -4582,10 +4545,10 @@ dependencies = [ "libp2p-identity", "libp2p-tls", "parking_lot", - "quinn 0.10.2", + "quinn", "rand 0.8.5", - "ring 0.16.20", - "rustls 0.21.11", + "ring 0.17.8", + "rustls 0.23.15", "socket2 0.5.7", "thiserror", "tokio", @@ -4645,7 +4608,7 @@ version = "0.34.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5daceb9dd908417b6dfcfe8e94098bc4aac54500c282e78120b885dadc09b999" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.79", @@ -4671,20 +4634,20 @@ dependencies = [ [[package]] name = "libp2p-tls" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ce7e3c2e7569d685d08ec795157981722ff96e9e9f9eae75df3c29d02b07a5" +checksum = "72b7b831e55ce2aa6c354e6861a85fdd4dd0a2b97d5e276fabac0e4810a71776" dependencies = [ "futures", "futures-rustls", "libp2p-core", "libp2p-identity", "rcgen 0.11.3", - "ring 0.16.20", - "rustls 0.21.11", + "ring 0.17.8", + "rustls 0.23.15", "rustls-webpki 0.101.7", "thiserror", - "x509-parser 0.15.1", + "x509-parser", "yasna", ] @@ -4710,7 +4673,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -4815,9 +4778,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" dependencies = [ "value-bag", ] @@ -4916,9 +4879,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memoize" @@ -4963,9 +4926,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", @@ -4979,20 +4942,29 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "mio" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", @@ -5006,9 +4978,9 @@ checksum = "f2b8f3a258db515d5e91a904ce4ae3f73e091149b90cadbdb93d210bee07f63b" [[package]] name = "multiaddr" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b852bc02a2da5feed68cd14fa50d0774b92790a5bdbfa932a813926c8472070" +checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" dependencies = [ "arrayref", "byteorder", @@ -5019,7 +4991,7 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint 0.7.2", + "unsigned-varint 0.8.0", "url", ] @@ -5277,7 +5249,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", ] @@ -5313,27 +5285,18 @@ dependencies = [ [[package]] name = "oid-registry" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" -dependencies = [ - "asn1-rs 0.5.2", -] - -[[package]] -name = "oid-registry" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c958dd45046245b9c3c2547369bb634eb461670b2e7e0de552905801a648d1d" +checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" dependencies = [ - "asn1-rs 0.6.1", + "asn1-rs", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -5343,11 +5306,11 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "foreign-types", "libc", @@ -5375,9 +5338,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -5415,9 +5378,9 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -5437,7 +5400,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.1", + "redox_syscall", "smallvec", "windows-targets 0.52.6", ] @@ -5450,9 +5413,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathdiff" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361" [[package]] name = "pem" @@ -5481,9 +5444,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.10" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", "thiserror", @@ -5492,9 +5455,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.10" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" +checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" dependencies = [ "pest", "pest_generator", @@ -5502,9 +5465,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.10" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" +checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" dependencies = [ "pest", "pest_meta", @@ -5515,9 +5478,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.7.10" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" +checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" dependencies = [ "once_cell", "pest", @@ -5570,12 +5533,12 @@ checksum = "d15b6607fa632996eb8a17c9041cb6071cb75ac057abd45dece578723ea8c7c0" [[package]] name = "piper" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.1.0", + "fastrand 2.1.1", "futures-io", ] @@ -5602,9 +5565,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "polling" @@ -5624,17 +5587,17 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.1" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6a007746f34ed64099e88783b0ae369eaa3da6392868ba262e2af9b8fbaea1" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi", + "hermit-abi 0.4.0", "pin-project-lite 0.2.14", - "rustix 0.38.34", + "rustix 0.38.37", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5665,15 +5628,18 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", "syn 2.0.79", @@ -5692,11 +5658,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.21.1", + "toml_edit", ] [[package]] @@ -5754,9 +5720,9 @@ dependencies = [ [[package]] name = "prometheus-client" -version = "0.22.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ca959da22a332509f2a73ae9e5f23f9dcfc31fd3a54d71f159495bd5909baa" +checksum = "504ee9ff529add891127c4827eb481bd69dc0ebc72e9a682e187db4caa60c3ca" dependencies = [ "dtoa", "itoa", @@ -5874,61 +5840,27 @@ dependencies = [ "unsigned-varint 0.8.0", ] -[[package]] -name = "quinn" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" -dependencies = [ - "async-io 1.13.0", - "async-std", - "bytes", - "futures-io", - "pin-project-lite 0.2.14", - "quinn-proto 0.10.6", - "quinn-udp 0.4.1", - "rustc-hash 1.1.0", - "rustls 0.21.11", - "thiserror", - "tokio", - "tracing", -] - [[package]] name = "quinn" version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" dependencies = [ + "async-io 2.3.4", + "async-std", "bytes", + "futures-io", "pin-project-lite 0.2.14", - "quinn-proto 0.11.8", - "quinn-udp 0.5.4", + "quinn-proto", + "quinn-udp", "rustc-hash 2.0.0", - "rustls 0.23.7", + "rustls 0.23.15", "socket2 0.5.7", "thiserror", "tokio", "tracing", ] -[[package]] -name = "quinn-proto" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" -dependencies = [ - "bytes", - "rand 0.8.5", - "ring 0.16.20", - "rustc-hash 1.1.0", - "rustls 0.21.11", - "slab", - "thiserror", - "tinyvec", - "tracing", -] - [[package]] name = "quinn-proto" version = "0.11.8" @@ -5939,7 +5871,7 @@ dependencies = [ "rand 0.8.5", "ring 0.17.8", "rustc-hash 2.0.0", - "rustls 0.23.7", + "rustls 0.23.15", "slab", "thiserror", "tinyvec", @@ -5948,28 +5880,15 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.4.1" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" -dependencies = [ - "bytes", - "libc", - "socket2 0.5.7", - "tracing", - "windows-sys 0.48.0", -] - -[[package]] -name = "quinn-udp" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" dependencies = [ "libc", "once_cell", "socket2 0.5.7", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6100,7 +6019,7 @@ dependencies = [ "ring 0.17.8", "rustls-pki-types", "time 0.3.36", - "x509-parser 0.16.0", + "x509-parser", "yasna", ] @@ -6129,27 +6048,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.1" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom 0.2.15", "libredox", @@ -6158,14 +6068,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -6179,13 +6089,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.3", + "regex-syntax 0.8.5", ] [[package]] @@ -6196,9 +6106,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rend" @@ -6220,11 +6130,11 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.4.5", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.3.1", + "hyper 1.5.0", "hyper-rustls", "hyper-tls", "hyper-util", @@ -6241,7 +6151,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper 1.0.1", - "system-configuration 0.6.0", + "system-configuration 0.6.1", "tokio", "tokio-native-tls", "tower-service", @@ -6294,9 +6204,9 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.44" +version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" dependencies = [ "bitvec", "bytecheck", @@ -6312,9 +6222,9 @@ dependencies = [ [[package]] name = "rkyv_derive" -version = "0.7.44" +version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" dependencies = [ "proc-macro2", "quote", @@ -6328,7 +6238,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64 0.21.7", - "bitflags 2.5.0", + "bitflags 2.6.0", "serde", "serde_derive", ] @@ -6430,9 +6340,9 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver 1.0.23", ] @@ -6462,11 +6372,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys 0.4.14", @@ -6482,65 +6392,39 @@ dependencies = [ "base64 0.13.1", "log", "ring 0.16.20", - "sct 0.6.1", + "sct", "webpki", ] [[package]] name = "rustls" -version = "0.21.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fecbfb7b1444f477b345853b1fce097a2c6fb637b2bfb87e6bc5db0f043fae4" -dependencies = [ - "log", - "ring 0.17.8", - "rustls-webpki 0.101.7", - "sct 0.7.1", -] - -[[package]] -name = "rustls" -version = "0.22.4" +version = "0.23.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" dependencies = [ "log", - "ring 0.17.8", - "rustls-pki-types", - "rustls-webpki 0.102.3", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls" -version = "0.23.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebbbdb961df0ad3f2652da8f3fdc4b36122f568f968f45ad3316f26c025c677b" -dependencies = [ "once_cell", "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.3", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.4.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" [[package]] name = "rustls-webpki" @@ -6554,9 +6438,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.3" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring 0.17.8", "rustls-pki-types", @@ -6565,9 +6449,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "rw-stream-sink" @@ -6588,11 +6472,11 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6617,16 +6501,6 @@ dependencies = [ "untrusted 0.7.1", ] -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", -] - [[package]] name = "seahash" version = "4.1.0" @@ -6635,11 +6509,11 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -6648,9 +6522,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -6728,9 +6602,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "610f75ff4a8e3cb29b85da56eabdd1bff5b06739059a4b8e2967fef32e5d9944" dependencies = [ "itoa", "memchr", @@ -6751,9 +6625,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -6772,15 +6646,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.8.1" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.6", + "indexmap 2.6.0", "serde", "serde_derive", "serde_json", @@ -6790,9 +6664,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.8.1" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" dependencies = [ "darling", "proc-macro2", @@ -6835,9 +6709,9 @@ dependencies = [ [[package]] name = "sha1_smol" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" [[package]] name = "sha2" @@ -6940,9 +6814,9 @@ dependencies = [ [[package]] name = "simdutf8" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "slab" @@ -6994,7 +6868,7 @@ dependencies = [ "async-io 1.13.0", "async-lock 2.8.0", "async-net", - "async-process", + "async-process 1.8.1", "blocking", "futures-lite 1.13.0", ] @@ -7014,7 +6888,7 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.79", @@ -7067,20 +6941,19 @@ dependencies = [ [[package]] name = "sqlformat" -version = "0.2.3" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" +checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790" dependencies = [ - "itertools 0.12.1", "nom", "unicode_categories", ] [[package]] name = "sqlx" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcfa89bea9500db4a0d038513d7a060566bfc51d46d1c014847049a45cce85e8" +checksum = "93334716a037193fac19df402f8571269c84a00852f6a7066b5d2616dcd64d3e" dependencies = [ "sqlx-core", "sqlx-macros", @@ -7091,9 +6964,9 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06e2f2bd861719b1f3f0c7dbe1d80c30bf59e76cf019f07d9014ed7eefb8e08" +checksum = "d4d8060b456358185f7d50c55d9b5066ad956956fddec42ee2e8567134a8936e" dependencies = [ "atoi", "byteorder", @@ -7110,7 +6983,7 @@ dependencies = [ "hashbrown 0.14.5", "hashlink", "hex", - "indexmap 2.2.6", + "indexmap 2.6.0", "log", "memchr", "once_cell", @@ -7131,9 +7004,9 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f998a9defdbd48ed005a89362bd40dd2117502f15294f61c8d47034107dbbdc" +checksum = "cac0692bcc9de3b073e8d747391827297e075c7710ff6276d9f7a1f3d58c6657" dependencies = [ "proc-macro2", "quote", @@ -7144,13 +7017,13 @@ dependencies = [ [[package]] name = "sqlx-macros-core" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d100558134176a2629d46cec0c8891ba0be8910f7896abfdb75ef4ab6f4e7ce" +checksum = "1804e8a7c7865599c9c79be146dc8a9fd8cc86935fa641d3ea58e5f0688abaa5" dependencies = [ "dotenvy", "either", - "heck 0.5.0", + "heck", "hex", "once_cell", "proc-macro2", @@ -7170,13 +7043,13 @@ dependencies = [ [[package]] name = "sqlx-mysql" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cac0ab331b14cb3921c62156d913e4c15b74fb6ec0f3146bd4ef6e4fb3c12" +checksum = "64bb4714269afa44aef2755150a0fc19d756fb580a67db8885608cf02f47d06a" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.5.0", + "bitflags 2.6.0", "byteorder", "bytes", "crc", @@ -7213,13 +7086,13 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9734dbce698c67ecf67c442f768a5e90a49b2a4d61a9f1d59f73874bd4cf0710" +checksum = "6fa91a732d854c5d7726349bb4bb879bb9478993ceb764247660aee25f67c2f8" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.5.0", + "bitflags 2.6.0", "byteorder", "crc", "dotenvy", @@ -7252,9 +7125,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75b419c3c1b1697833dd927bdc4c6545a620bc1bbafabd44e1efbe9afcd337e" +checksum = "d5b2cf34a45953bfd3daaf3db0f7a7878ab9b7a6b91b422d24a7a9e4c857b680" dependencies = [ "atoi", "flume", @@ -7357,9 +7230,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" [[package]] name = "strum_macros" @@ -7367,7 +7240,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", @@ -7376,9 +7249,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "surf-disco" @@ -7401,15 +7274,15 @@ dependencies = [ [[package]] name = "sval" -version = "2.13.0" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53eb957fbc79a55306d5d25d87daf3627bc3800681491cda0709eef36c748bfe" +checksum = "f6dc0f9830c49db20e73273ffae9b5240f63c42e515af1da1fceefb69fceafd8" [[package]] name = "sval_buffer" -version = "2.13.0" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96e860aef60e9cbf37888d4953a13445abf523c534640d1f6174d310917c410d" +checksum = "429922f7ad43c0ef8fd7309e14d750e38899e32eb7e8da656ea169dd28ee212f" dependencies = [ "sval", "sval_ref", @@ -7417,18 +7290,18 @@ dependencies = [ [[package]] name = "sval_dynamic" -version = "2.13.0" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea3f2b07929a1127d204ed7cb3905049381708245727680e9139dac317ed556f" +checksum = "68f16ff5d839396c11a30019b659b0976348f3803db0626f736764c473b50ff4" dependencies = [ "sval", ] [[package]] name = "sval_fmt" -version = "2.13.0" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e188677497de274a1367c4bda15bd2296de4070d91729aac8f0a09c1abf64d" +checksum = "c01c27a80b6151b0557f9ccbe89c11db571dc5f68113690c1e028d7e974bae94" dependencies = [ "itoa", "ryu", @@ -7437,9 +7310,9 @@ dependencies = [ [[package]] name = "sval_json" -version = "2.13.0" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f456c07dae652744781f2245d5e3b78e6a9ebad70790ac11eb15dbdbce5282" +checksum = "0deef63c70da622b2a8069d8600cf4b05396459e665862e7bdb290fd6cf3f155" dependencies = [ "itoa", "ryu", @@ -7448,9 +7321,9 @@ dependencies = [ [[package]] name = "sval_nested" -version = "2.13.0" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "886feb24709f0476baaebbf9ac10671a50163caa7e439d7a7beb7f6d81d0a6fb" +checksum = "a39ce5976ae1feb814c35d290cf7cf8cd4f045782fe1548d6bc32e21f6156e9f" dependencies = [ "sval", "sval_buffer", @@ -7459,18 +7332,18 @@ dependencies = [ [[package]] name = "sval_ref" -version = "2.13.0" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be2e7fc517d778f44f8cb64140afa36010999565528d48985f55e64d45f369ce" +checksum = "bb7c6ee3751795a728bc9316a092023529ffea1783499afbc5c66f5fabebb1fa" dependencies = [ "sval", ] [[package]] name = "sval_serde" -version = "2.13.0" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79bf66549a997ff35cd2114a27ac4b0c2843280f2cfa84b240d169ecaa0add46" +checksum = "2a5572d0321b68109a343634e3a5d576bf131b82180c6c442dee06349dfc652a" dependencies = [ "serde", "sval", @@ -7550,11 +7423,11 @@ dependencies = [ [[package]] name = "system-configuration" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bc6ee10a9b4fcf576e9b0819d95ec16f4d2c02d39fd83ac1c8789785c4a42" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "core-foundation", "system-configuration-sys 0.6.0", ] @@ -7613,14 +7486,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", - "fastrand 2.1.0", - "rustix 0.38.34", - "windows-sys 0.52.0", + "fastrand 2.1.1", + "once_cell", + "rustix 0.38.37", + "windows-sys 0.59.0", ] [[package]] @@ -7836,9 +7710,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -7916,7 +7790,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.7", + "rustls 0.23.15", "rustls-pki-types", "tokio", ] @@ -7934,9 +7808,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -7947,47 +7821,36 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.16", + "toml_edit", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.16" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.11", + "winnow", ] [[package]] @@ -8004,7 +7867,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.31", "hyper-timeout", "percent-encoding", "pin-project", @@ -8031,7 +7894,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.31", "hyper-timeout", "percent-encoding", "pin-project", @@ -8066,15 +7929,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -8221,9 +8084,9 @@ dependencies = [ [[package]] name = "typeid" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "059d83cc991e7a42fc37bd50941885db0888e34209f8cfd9aab07ddec03bc9cf" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" [[package]] name = "typenum" @@ -8233,9 +8096,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -8251,51 +8114,48 @@ dependencies = [ [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-properties" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unicode_categories" @@ -8343,19 +8203,18 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.9.6" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35" +checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "flate2", "log", "once_cell", - "rustls 0.22.4", + "rustls 0.23.15", "rustls-pki-types", - "rustls-webpki 0.102.3", "url", - "webpki-roots 0.26.2", + "webpki-roots 0.26.6", ] [[package]] @@ -8378,15 +8237,15 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" [[package]] name = "valuable" @@ -8460,9 +8319,9 @@ dependencies = [ [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "void" @@ -8496,7 +8355,7 @@ dependencies = [ "futures-util", "headers", "http 0.2.12", - "hyper 0.14.29", + "hyper 0.14.31", "log", "mime", "mime_guess", @@ -8532,11 +8391,12 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", + "once_cell", "serde", "serde_json", "wasm-bindgen-macro", @@ -8544,9 +8404,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", @@ -8559,9 +8419,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -8571,9 +8431,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8581,9 +8441,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", @@ -8594,15 +8454,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -8629,32 +8499,20 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.2" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c452ad30530b54a4d8e71952716a212b08efd0f3562baa66c29a618b07da7c3" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" dependencies = [ "rustls-pki-types", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.34", -] - [[package]] name = "whoami" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" dependencies = [ - "redox_syscall 0.4.1", + "redox_syscall", "wasite", ] @@ -8692,7 +8550,7 @@ version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" dependencies = [ - "windows-core", + "windows-core 0.51.1", "windows-targets 0.48.5", ] @@ -8705,6 +8563,15 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-registry" version = "0.2.0" @@ -8885,18 +8752,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.6.11" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c52728401e1dc672a56e81e593e912aa54c78f40246869f78359a2bf24d29d" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -8920,35 +8778,18 @@ dependencies = [ "tap", ] -[[package]] -name = "x509-parser" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7069fba5b66b9193bd2c5d3d4ff12b839118f6bcbef5328efafafb5395cf63da" -dependencies = [ - "asn1-rs 0.5.2", - "data-encoding", - "der-parser 8.2.0", - "lazy_static", - "nom", - "oid-registry 0.6.1", - "rusticata-macros", - "thiserror", - "time 0.3.36", -] - [[package]] name = "x509-parser" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" dependencies = [ - "asn1-rs 0.6.1", + "asn1-rs", "data-encoding", - "der-parser 9.0.0", + "der-parser", "lazy_static", "nom", - "oid-registry 0.7.0", + "oid-registry", "ring 0.17.8", "rusticata-macros", "thiserror", @@ -8957,9 +8798,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" +checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" [[package]] name = "xmltree" @@ -8990,18 +8831,19 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", From b1f1ba52e23a26f38ed5bf62c0f8ad89390ef3fd Mon Sep 17 00:00:00 2001 From: Rob Date: Fri, 18 Oct 2024 16:10:24 -0400 Subject: [PATCH 04/18] Revert "update lock" This reverts commit 8cecb2fec7629c8af78812ea7051b264398718b4. --- Cargo.lock | 1142 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 650 insertions(+), 492 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 837a282608..2062fa43d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,12 +17,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - [[package]] name = "aead" version = "0.3.2" @@ -132,9 +126,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", @@ -153,27 +147,27 @@ checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -181,9 +175,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.90" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "arbitrary" @@ -335,7 +329,7 @@ dependencies = [ "num-traits", "paste", "rayon", - "rustc_version 0.4.1", + "rustc_version 0.4.0", "zeroize", ] @@ -476,24 +470,40 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.9" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "asn1-rs" -version = "0.6.2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" +checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" dependencies = [ - "asn1-rs-derive", - "asn1-rs-impl", + "asn1-rs-derive 0.4.0", + "asn1-rs-impl 0.1.0", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time 0.3.36", +] + +[[package]] +name = "asn1-rs" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ad1373757efa0f70ec53939aabc7152e1591cb485208052993070ac8d2429d" +dependencies = [ + "asn1-rs-derive 0.5.0", + "asn1-rs-impl 0.2.0", "displaydoc", "nom", "num-traits", @@ -504,9 +514,21 @@ dependencies = [ [[package]] name = "asn1-rs-derive" -version = "0.5.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure 0.12.6", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7378575ff571966e99a744addeff0bff98b8ada0dedf1956d59e634db95eaac1" dependencies = [ "proc-macro2", "quote", @@ -514,6 +536,17 @@ dependencies = [ "synstructure 0.13.1", ] +[[package]] +name = "asn1-rs-impl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "asn1-rs-impl" version = "0.2.0" @@ -608,13 +641,13 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.1.1", + "fastrand 2.1.0", "futures-lite 2.3.0", "slab", ] @@ -639,7 +672,7 @@ checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ "async-channel 2.3.1", "async-executor", - "async-io 2.3.4", + "async-io 2.3.3", "async-lock 3.4.0", "blocking", "futures-lite 2.3.0", @@ -686,9 +719,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.4" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" dependencies = [ "async-lock 3.4.0", "cfg-if", @@ -696,11 +729,11 @@ dependencies = [ "futures-io", "futures-lite 2.3.0", "parking", - "polling 3.7.3", - "rustix 0.38.37", + "polling 3.7.1", + "rustix 0.38.34", "slab", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -759,45 +792,26 @@ dependencies = [ "cfg-if", "event-listener 3.1.0", "futures-lite 1.13.0", - "rustix 0.38.37", + "rustix 0.38.34", "windows-sys 0.48.0", ] -[[package]] -name = "async-process" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" -dependencies = [ - "async-channel 2.3.1", - "async-io 2.3.4", - "async-lock 3.4.0", - "async-signal", - "async-task", - "blocking", - "cfg-if", - "event-listener 5.3.1", - "futures-lite 2.3.0", - "rustix 0.38.37", - "tracing", -] - [[package]] name = "async-signal" -version = "0.2.10" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +checksum = "329972aa325176e89114919f2a80fdae4f4c040f66a370b1a1159c6c0f94e7aa" dependencies = [ - "async-io 2.3.4", + "async-io 2.3.3", "async-lock 3.4.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.37", + "rustix 0.38.34", "signal-hook-registry", "slab", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -816,21 +830,21 @@ dependencies = [ [[package]] name = "async-std" -version = "1.13.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" +checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" dependencies = [ "async-attributes", "async-channel 1.9.0", "async-global-executor", - "async-io 2.3.4", - "async-lock 3.4.0", - "async-process 2.3.0", + "async-io 1.13.0", + "async-lock 2.8.0", + "async-process", "crossbeam-utils", "futures-channel", "futures-core", "futures-io", - "futures-lite 2.3.0", + "futures-lite 1.13.0", "gloo-timers", "kv-log-macro", "log", @@ -859,9 +873,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", @@ -870,9 +884,9 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", @@ -979,9 +993,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.4.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "automod" @@ -1007,7 +1021,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.29", "itoa", "matchit", "memchr", @@ -1049,7 +1063,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide", "object", "rustc-demangle", ] @@ -1101,14 +1115,16 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.70.1" +version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", "cexpr", "clang-sys", - "itertools 0.13.0", + "itertools 0.12.1", + "lazy_static", + "lazycell", "log", "prettyplease", "proc-macro2", @@ -1117,6 +1133,7 @@ dependencies = [ "rustc-hash 1.1.0", "shlex", "syn 2.0.79", + "which", ] [[package]] @@ -1127,9 +1144,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" dependencies = [ "serde", ] @@ -1202,9 +1219,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.13" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +checksum = "62dc83a094a71d43eeadd254b1ec2d24cb6a0bb6cadce00df51f0db594711a32" dependencies = [ "cc", "glob", @@ -1257,9 +1274,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" dependencies = [ "serde", ] @@ -1284,18 +1301,18 @@ dependencies = [ [[package]] name = "cbor4ii" -version = "0.3.3" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "472931dd4dfcc785075b09be910147f9c6258883fc4591d0dac6116392b2daa6" +checksum = "59b4c883b9cc4757b061600d39001d4d0232bece4a3174696cf8f58a14db107d" dependencies = [ "serde", ] [[package]] name = "cc" -version = "1.1.30" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" +checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" dependencies = [ "shlex", ] @@ -1372,12 +1389,12 @@ dependencies = [ "num_enum", "pem", "prometheus", - "quinn", + "quinn 0.11.5", "rand 0.8.5", "rcgen 0.13.1", "redis", "rkyv", - "rustls 0.23.15", + "rustls 0.23.7", "rustls-pki-types", "sqlx", "thiserror", @@ -1464,7 +1481,7 @@ version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.79", @@ -1472,15 +1489,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "cmake" -version = "0.1.51" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" dependencies = [ "cc", ] @@ -1514,9 +1531,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "combine" @@ -1688,9 +1705,9 @@ checksum = "373e9fafaa20882876db20562275ff58d50e0caa2590077fe7ce7bef90211d0d" [[package]] name = "constant_time_eq" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "convert_case" @@ -1736,9 +1753,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.7" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core2" @@ -1751,9 +1768,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -1915,7 +1932,7 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "rustc_version 0.4.1", + "rustc_version 0.4.0", "subtle", "zeroize", ] @@ -2048,13 +2065,27 @@ dependencies = [ "zeroize", ] +[[package]] +name = "der-parser" +version = "8.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" +dependencies = [ + "asn1-rs 0.5.2", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + [[package]] name = "der-parser" version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" dependencies = [ - "asn1-rs", + "asn1-rs 0.6.1", "displaydoc", "nom", "num-bigint", @@ -2134,7 +2165,7 @@ dependencies = [ "convert_case 0.4.0", "proc-macro2", "quote", - "rustc_version 0.4.1", + "rustc_version 0.4.0", "syn 2.0.79", ] @@ -2291,9 +2322,9 @@ dependencies = [ [[package]] name = "edit-distance" -version = "2.1.3" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3f497e87b038c09a155dfd169faa5ec940d0644635555ef6bd464ac20e97397" +checksum = "bbbaaaf38131deb9ca518a274a45bfdb8771f139517b073b16c2d3d32ae5037b" [[package]] name = "either" @@ -2321,11 +2352,11 @@ dependencies = [ [[package]] name = "enum-as-inner" -version = "0.6.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "syn 2.0.79", @@ -2457,9 +2488,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fiat-crypto" @@ -2480,12 +2511,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -2633,7 +2664,7 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.1.1", + "fastrand 2.1.0", "futures-core", "futures-io", "parking", @@ -2653,13 +2684,12 @@ dependencies = [ [[package]] name = "futures-rustls" -version = "0.26.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" +checksum = "35bd3cf68c183738046838e300353e4716c674dc5e56890de4826801a6622a28" dependencies = [ "futures-io", - "rustls 0.23.15", - "rustls-pki-types", + "rustls 0.21.11", ] [[package]] @@ -2768,9 +2798,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "gloo-timers" -version = "0.3.0" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" dependencies = [ "futures-channel", "futures-core", @@ -2790,7 +2820,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.6.0", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -2799,9 +2829,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.6" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" dependencies = [ "atomic-waker", "bytes", @@ -2809,7 +2839,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.6.0", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -2901,6 +2931,12 @@ dependencies = [ "http 0.2.12", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" @@ -2913,12 +2949,6 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" -[[package]] -name = "hermit-abi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" - [[package]] name = "hex" version = "0.4.3" @@ -3476,9 +3506,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" dependencies = [ "bytes", "http 1.1.0", @@ -3486,14 +3516,14 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" dependencies = [ "bytes", - "futures-util", + "futures-core", "http 1.1.0", - "http-body 1.0.1", + "http-body 1.0.0", "pin-project-lite 0.2.14", ] @@ -3533,9 +3563,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.5" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" @@ -3551,9 +3581,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" dependencies = [ "bytes", "futures-channel", @@ -3575,16 +3605,16 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.6", + "h2 0.4.5", "http 1.1.0", - "http-body 1.0.1", + "http-body 1.0.0", "httparse", "itoa", "pin-project-lite 0.2.14", @@ -3595,15 +3625,15 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.5.0", + "hyper 1.3.1", "hyper-util", - "rustls 0.23.15", + "rustls 0.23.7", "rustls-pki-types", "tokio", "tokio-rustls", @@ -3616,7 +3646,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.31", + "hyper 0.14.29", "pin-project-lite 0.2.14", "tokio", "tokio-io-timeout", @@ -3630,7 +3660,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.0", + "hyper 1.3.1", "hyper-util", "native-tls", "tokio", @@ -3640,35 +3670,36 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.1", - "hyper 1.5.0", + "http-body 1.0.0", + "hyper 1.3.1", "pin-project-lite 0.2.14", "socket2 0.5.7", "tokio", + "tower", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core 0.52.0", + "windows-core", ] [[package]] @@ -3755,7 +3786,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6b0422c86d7ce0e97169cc42e04ae643caf278874a7a3c87b8150a220dc7e1e" dependencies = [ - "async-io 2.3.4", + "async-io 2.3.3", "core-foundation", "fnv", "futures", @@ -3780,7 +3811,7 @@ dependencies = [ "bytes", "futures", "http 0.2.12", - "hyper 0.14.31", + "hyper 0.14.29", "log", "rand 0.8.5", "tokio", @@ -3799,18 +3830,18 @@ dependencies = [ [[package]] name = "include_dir" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" dependencies = [ "include_dir_macros", ] [[package]] name = "include_dir_macros" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" dependencies = [ "proc-macro2", "quote", @@ -3835,12 +3866,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.14.5", "serde", ] @@ -3874,7 +3905,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", "windows-sys 0.48.0", ] @@ -3893,15 +3924,15 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" [[package]] name = "itertools" @@ -4146,9 +4177,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -4201,17 +4232,23 @@ dependencies = [ "spin 0.9.8", ] +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" -version = "0.2.161" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", "windows-targets 0.52.6", @@ -4304,14 +4341,15 @@ dependencies = [ [[package]] name = "libp2p-core" -version = "0.41.3" +version = "0.41.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5a8920cbd8540059a01950c1e5c96ea8d89eb50c51cd366fc18bdf540a6e48f" +checksum = "8130a8269e65a2554d55131c770bdf4bcd94d2b8d4efb24ca23699be65066c05" dependencies = [ "either", "fnv", "futures", "futures-timer", + "instant", "libp2p-identity", "multiaddr", "multihash", @@ -4328,7 +4366,6 @@ dependencies = [ "tracing", "unsigned-varint 0.8.0", "void", - "web-time", ] [[package]] @@ -4460,7 +4497,7 @@ version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49007d9a339b3e1d7eeebc4d67c05dbf23d300b7d091193ec2d3f26802d7faf2" dependencies = [ - "async-io 2.3.4", + "async-io 2.3.3", "async-std", "data-encoding", "futures", @@ -4532,9 +4569,9 @@ dependencies = [ [[package]] name = "libp2p-quic" -version = "0.10.3" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c67296ad4e092e23f92aea3d2bdb6f24eab79c0929ed816dfb460ea2f4567d2b" +checksum = "a0375cdfee57b47b313ef1f0fdb625b78aed770d33a40cf1c294a371ff5e6666" dependencies = [ "async-std", "bytes", @@ -4545,10 +4582,10 @@ dependencies = [ "libp2p-identity", "libp2p-tls", "parking_lot", - "quinn", + "quinn 0.10.2", "rand 0.8.5", - "ring 0.17.8", - "rustls 0.23.15", + "ring 0.16.20", + "rustls 0.21.11", "socket2 0.5.7", "thiserror", "tokio", @@ -4608,7 +4645,7 @@ version = "0.34.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5daceb9dd908417b6dfcfe8e94098bc4aac54500c282e78120b885dadc09b999" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.79", @@ -4634,20 +4671,20 @@ dependencies = [ [[package]] name = "libp2p-tls" -version = "0.4.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b7b831e55ce2aa6c354e6861a85fdd4dd0a2b97d5e276fabac0e4810a71776" +checksum = "93ce7e3c2e7569d685d08ec795157981722ff96e9e9f9eae75df3c29d02b07a5" dependencies = [ "futures", "futures-rustls", "libp2p-core", "libp2p-identity", "rcgen 0.11.3", - "ring 0.17.8", - "rustls 0.23.15", + "ring 0.16.20", + "rustls 0.21.11", "rustls-webpki 0.101.7", "thiserror", - "x509-parser", + "x509-parser 0.15.1", "yasna", ] @@ -4673,7 +4710,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", "libc", ] @@ -4778,9 +4815,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" dependencies = [ "value-bag", ] @@ -4879,9 +4916,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memoize" @@ -4926,9 +4963,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.5" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" dependencies = [ "mime", "unicase", @@ -4942,29 +4979,20 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" dependencies = [ "adler", ] -[[package]] -name = "miniz_oxide" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" -dependencies = [ - "adler2", -] - [[package]] name = "mio" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", @@ -4978,9 +5006,9 @@ checksum = "f2b8f3a258db515d5e91a904ce4ae3f73e091149b90cadbdb93d210bee07f63b" [[package]] name = "multiaddr" -version = "0.18.2" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" +checksum = "8b852bc02a2da5feed68cd14fa50d0774b92790a5bdbfa932a813926c8472070" dependencies = [ "arrayref", "byteorder", @@ -4991,7 +5019,7 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint 0.8.0", + "unsigned-varint 0.7.2", "url", ] @@ -5249,7 +5277,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", ] @@ -5285,18 +5313,27 @@ dependencies = [ [[package]] name = "oid-registry" -version = "0.7.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" +checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" dependencies = [ - "asn1-rs", + "asn1-rs 0.5.2", +] + +[[package]] +name = "oid-registry" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c958dd45046245b9c3c2547369bb634eb461670b2e7e0de552905801a648d1d" +dependencies = [ + "asn1-rs 0.6.1", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" @@ -5306,11 +5343,11 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", "cfg-if", "foreign-types", "libc", @@ -5338,9 +5375,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -5378,9 +5415,9 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" [[package]] name = "parking" -version = "2.2.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "parking_lot" @@ -5400,7 +5437,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.1", "smallvec", "windows-targets 0.52.6", ] @@ -5413,9 +5450,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathdiff" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" [[package]] name = "pem" @@ -5444,9 +5481,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.14" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" dependencies = [ "memchr", "thiserror", @@ -5455,9 +5492,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.14" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" +checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" dependencies = [ "pest", "pest_generator", @@ -5465,9 +5502,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.14" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" +checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" dependencies = [ "pest", "pest_meta", @@ -5478,9 +5515,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.7.14" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" +checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" dependencies = [ "once_cell", "pest", @@ -5533,12 +5570,12 @@ checksum = "d15b6607fa632996eb8a17c9041cb6071cb75ac057abd45dece578723ea8c7c0" [[package]] name = "piper" -version = "0.2.4" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" dependencies = [ "atomic-waker", - "fastrand 2.1.1", + "fastrand 2.1.0", "futures-io", ] @@ -5565,9 +5602,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "polling" @@ -5587,17 +5624,17 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.3" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +checksum = "5e6a007746f34ed64099e88783b0ae369eaa3da6392868ba262e2af9b8fbaea1" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.4.0", + "hermit-abi", "pin-project-lite 0.2.14", - "rustix 0.38.37", + "rustix 0.38.34", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -5628,18 +5665,15 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", "syn 2.0.79", @@ -5658,11 +5692,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "toml_edit", + "toml_edit 0.21.1", ] [[package]] @@ -5720,9 +5754,9 @@ dependencies = [ [[package]] name = "prometheus-client" -version = "0.22.3" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504ee9ff529add891127c4827eb481bd69dc0ebc72e9a682e187db4caa60c3ca" +checksum = "c1ca959da22a332509f2a73ae9e5f23f9dcfc31fd3a54d71f159495bd5909baa" dependencies = [ "dtoa", "itoa", @@ -5842,25 +5876,59 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.5" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" dependencies = [ - "async-io 2.3.4", + "async-io 1.13.0", "async-std", "bytes", "futures-io", "pin-project-lite 0.2.14", - "quinn-proto", - "quinn-udp", + "quinn-proto 0.10.6", + "quinn-udp 0.4.1", + "rustc-hash 1.1.0", + "rustls 0.21.11", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +dependencies = [ + "bytes", + "pin-project-lite 0.2.14", + "quinn-proto 0.11.8", + "quinn-udp 0.5.4", "rustc-hash 2.0.0", - "rustls 0.23.15", + "rustls 0.23.7", "socket2 0.5.7", "thiserror", "tokio", "tracing", ] +[[package]] +name = "quinn-proto" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring 0.16.20", + "rustc-hash 1.1.0", + "rustls 0.21.11", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + [[package]] name = "quinn-proto" version = "0.11.8" @@ -5871,7 +5939,7 @@ dependencies = [ "rand 0.8.5", "ring 0.17.8", "rustc-hash 2.0.0", - "rustls 0.23.15", + "rustls 0.23.7", "slab", "thiserror", "tinyvec", @@ -5880,15 +5948,28 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" +dependencies = [ + "bytes", + "libc", + "socket2 0.5.7", + "tracing", + "windows-sys 0.48.0", +] + +[[package]] +name = "quinn-udp" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" dependencies = [ "libc", "once_cell", "socket2 0.5.7", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -6019,7 +6100,7 @@ dependencies = [ "ring 0.17.8", "rustls-pki-types", "time 0.3.36", - "x509-parser", + "x509-parser 0.16.0", "yasna", ] @@ -6048,18 +6129,27 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", ] [[package]] name = "redox_users" -version = "0.4.6" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom 0.2.15", "libredox", @@ -6068,14 +6158,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", - "regex-syntax 0.8.5", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", ] [[package]] @@ -6089,13 +6179,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax 0.8.3", ] [[package]] @@ -6106,9 +6196,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "rend" @@ -6130,11 +6220,11 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.4.6", + "h2 0.4.5", "http 1.1.0", - "http-body 1.0.1", + "http-body 1.0.0", "http-body-util", - "hyper 1.5.0", + "hyper 1.3.1", "hyper-rustls", "hyper-tls", "hyper-util", @@ -6151,7 +6241,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper 1.0.1", - "system-configuration 0.6.1", + "system-configuration 0.6.0", "tokio", "tokio-native-tls", "tower-service", @@ -6204,9 +6294,9 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.45" +version = "0.7.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" dependencies = [ "bitvec", "bytecheck", @@ -6222,9 +6312,9 @@ dependencies = [ [[package]] name = "rkyv_derive" -version = "0.7.45" +version = "0.7.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" dependencies = [ "proc-macro2", "quote", @@ -6238,7 +6328,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64 0.21.7", - "bitflags 2.6.0", + "bitflags 2.5.0", "serde", "serde_derive", ] @@ -6340,9 +6430,9 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.4.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ "semver 1.0.23", ] @@ -6372,11 +6462,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys 0.4.14", @@ -6392,39 +6482,65 @@ dependencies = [ "base64 0.13.1", "log", "ring 0.16.20", - "sct", + "sct 0.6.1", "webpki", ] [[package]] name = "rustls" -version = "0.23.15" +version = "0.21.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fecbfb7b1444f477b345853b1fce097a2c6fb637b2bfb87e6bc5db0f043fae4" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-webpki 0.101.7", + "sct 0.7.1", +] + +[[package]] +name = "rustls" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" dependencies = [ "log", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki 0.102.3", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebbbdb961df0ad3f2652da8f3fdc4b36122f568f968f45ad3316f26c025c677b" +dependencies = [ "once_cell", "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.8", + "rustls-webpki 0.102.3", "subtle", "zeroize", ] [[package]] name = "rustls-pemfile" -version = "2.2.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ + "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" [[package]] name = "rustls-webpki" @@ -6438,9 +6554,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.102.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" dependencies = [ "ring 0.17.8", "rustls-pki-types", @@ -6449,9 +6565,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" [[package]] name = "rw-stream-sink" @@ -6472,11 +6588,11 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "schannel" -version = "0.1.26" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -6501,6 +6617,16 @@ dependencies = [ "untrusted 0.7.1", ] +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + [[package]] name = "seahash" version = "4.1.0" @@ -6509,11 +6635,11 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "security-framework" -version = "2.11.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", "core-foundation", "core-foundation-sys", "libc", @@ -6522,9 +6648,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", @@ -6602,9 +6728,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.130" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "610f75ff4a8e3cb29b85da56eabdd1bff5b06739059a4b8e2967fef32e5d9944" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", "memchr", @@ -6625,9 +6751,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ "serde", ] @@ -6646,15 +6772,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.6.0", + "indexmap 2.2.6", "serde", "serde_derive", "serde_json", @@ -6664,9 +6790,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.11.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" dependencies = [ "darling", "proc-macro2", @@ -6709,9 +6835,9 @@ dependencies = [ [[package]] name = "sha1_smol" -version = "1.0.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" [[package]] name = "sha2" @@ -6814,9 +6940,9 @@ dependencies = [ [[package]] name = "simdutf8" -version = "0.1.5" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "slab" @@ -6868,7 +6994,7 @@ dependencies = [ "async-io 1.13.0", "async-lock 2.8.0", "async-net", - "async-process 1.8.1", + "async-process", "blocking", "futures-lite 1.13.0", ] @@ -6888,7 +7014,7 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.79", @@ -6941,19 +7067,20 @@ dependencies = [ [[package]] name = "sqlformat" -version = "0.2.6" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790" +checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" dependencies = [ + "itertools 0.12.1", "nom", "unicode_categories", ] [[package]] name = "sqlx" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93334716a037193fac19df402f8571269c84a00852f6a7066b5d2616dcd64d3e" +checksum = "fcfa89bea9500db4a0d038513d7a060566bfc51d46d1c014847049a45cce85e8" dependencies = [ "sqlx-core", "sqlx-macros", @@ -6964,9 +7091,9 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d8060b456358185f7d50c55d9b5066ad956956fddec42ee2e8567134a8936e" +checksum = "d06e2f2bd861719b1f3f0c7dbe1d80c30bf59e76cf019f07d9014ed7eefb8e08" dependencies = [ "atoi", "byteorder", @@ -6983,7 +7110,7 @@ dependencies = [ "hashbrown 0.14.5", "hashlink", "hex", - "indexmap 2.6.0", + "indexmap 2.2.6", "log", "memchr", "once_cell", @@ -7004,9 +7131,9 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cac0692bcc9de3b073e8d747391827297e075c7710ff6276d9f7a1f3d58c6657" +checksum = "2f998a9defdbd48ed005a89362bd40dd2117502f15294f61c8d47034107dbbdc" dependencies = [ "proc-macro2", "quote", @@ -7017,13 +7144,13 @@ dependencies = [ [[package]] name = "sqlx-macros-core" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1804e8a7c7865599c9c79be146dc8a9fd8cc86935fa641d3ea58e5f0688abaa5" +checksum = "3d100558134176a2629d46cec0c8891ba0be8910f7896abfdb75ef4ab6f4e7ce" dependencies = [ "dotenvy", "either", - "heck", + "heck 0.5.0", "hex", "once_cell", "proc-macro2", @@ -7043,13 +7170,13 @@ dependencies = [ [[package]] name = "sqlx-mysql" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64bb4714269afa44aef2755150a0fc19d756fb580a67db8885608cf02f47d06a" +checksum = "936cac0ab331b14cb3921c62156d913e4c15b74fb6ec0f3146bd4ef6e4fb3c12" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.6.0", + "bitflags 2.5.0", "byteorder", "bytes", "crc", @@ -7086,13 +7213,13 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fa91a732d854c5d7726349bb4bb879bb9478993ceb764247660aee25f67c2f8" +checksum = "9734dbce698c67ecf67c442f768a5e90a49b2a4d61a9f1d59f73874bd4cf0710" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.6.0", + "bitflags 2.5.0", "byteorder", "crc", "dotenvy", @@ -7125,9 +7252,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5b2cf34a45953bfd3daaf3db0f7a7878ab9b7a6b91b422d24a7a9e4c857b680" +checksum = "a75b419c3c1b1697833dd927bdc4c6545a620bc1bbafabd44e1efbe9afcd337e" dependencies = [ "atoi", "flume", @@ -7230,9 +7357,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.26.3" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" [[package]] name = "strum_macros" @@ -7240,7 +7367,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", @@ -7249,9 +7376,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.6.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "surf-disco" @@ -7274,15 +7401,15 @@ dependencies = [ [[package]] name = "sval" -version = "2.13.2" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6dc0f9830c49db20e73273ffae9b5240f63c42e515af1da1fceefb69fceafd8" +checksum = "53eb957fbc79a55306d5d25d87daf3627bc3800681491cda0709eef36c748bfe" [[package]] name = "sval_buffer" -version = "2.13.2" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "429922f7ad43c0ef8fd7309e14d750e38899e32eb7e8da656ea169dd28ee212f" +checksum = "96e860aef60e9cbf37888d4953a13445abf523c534640d1f6174d310917c410d" dependencies = [ "sval", "sval_ref", @@ -7290,18 +7417,18 @@ dependencies = [ [[package]] name = "sval_dynamic" -version = "2.13.2" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f16ff5d839396c11a30019b659b0976348f3803db0626f736764c473b50ff4" +checksum = "ea3f2b07929a1127d204ed7cb3905049381708245727680e9139dac317ed556f" dependencies = [ "sval", ] [[package]] name = "sval_fmt" -version = "2.13.2" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c01c27a80b6151b0557f9ccbe89c11db571dc5f68113690c1e028d7e974bae94" +checksum = "c4e188677497de274a1367c4bda15bd2296de4070d91729aac8f0a09c1abf64d" dependencies = [ "itoa", "ryu", @@ -7310,9 +7437,9 @@ dependencies = [ [[package]] name = "sval_json" -version = "2.13.2" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0deef63c70da622b2a8069d8600cf4b05396459e665862e7bdb290fd6cf3f155" +checksum = "32f456c07dae652744781f2245d5e3b78e6a9ebad70790ac11eb15dbdbce5282" dependencies = [ "itoa", "ryu", @@ -7321,9 +7448,9 @@ dependencies = [ [[package]] name = "sval_nested" -version = "2.13.2" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a39ce5976ae1feb814c35d290cf7cf8cd4f045782fe1548d6bc32e21f6156e9f" +checksum = "886feb24709f0476baaebbf9ac10671a50163caa7e439d7a7beb7f6d81d0a6fb" dependencies = [ "sval", "sval_buffer", @@ -7332,18 +7459,18 @@ dependencies = [ [[package]] name = "sval_ref" -version = "2.13.2" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7c6ee3751795a728bc9316a092023529ffea1783499afbc5c66f5fabebb1fa" +checksum = "be2e7fc517d778f44f8cb64140afa36010999565528d48985f55e64d45f369ce" dependencies = [ "sval", ] [[package]] name = "sval_serde" -version = "2.13.2" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a5572d0321b68109a343634e3a5d576bf131b82180c6c442dee06349dfc652a" +checksum = "79bf66549a997ff35cd2114a27ac4b0c2843280f2cfa84b240d169ecaa0add46" dependencies = [ "serde", "sval", @@ -7423,11 +7550,11 @@ dependencies = [ [[package]] name = "system-configuration" -version = "0.6.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +checksum = "658bc6ee10a9b4fcf576e9b0819d95ec16f4d2c02d39fd83ac1c8789785c4a42" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", "core-foundation", "system-configuration-sys 0.6.0", ] @@ -7486,15 +7613,14 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.13.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", - "fastrand 2.1.1", - "once_cell", - "rustix 0.38.37", - "windows-sys 0.59.0", + "fastrand 2.1.0", + "rustix 0.38.34", + "windows-sys 0.52.0", ] [[package]] @@ -7710,9 +7836,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -7790,7 +7916,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.15", + "rustls 0.23.7", "rustls-pki-types", "tokio", ] @@ -7808,9 +7934,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", @@ -7821,36 +7947,47 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_edit 0.22.16", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.6.11", ] [[package]] @@ -7867,7 +8004,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.29", "hyper-timeout", "percent-encoding", "pin-project", @@ -7894,7 +8031,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.29", "hyper-timeout", "percent-encoding", "pin-project", @@ -7929,15 +8066,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.3" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" [[package]] name = "tower-service" -version = "0.3.3" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" @@ -8084,9 +8221,9 @@ dependencies = [ [[package]] name = "typeid" -version = "1.0.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" +checksum = "059d83cc991e7a42fc37bd50941885db0888e34209f8cfd9aab07ddec03bc9cf" [[package]] name = "typenum" @@ -8096,9 +8233,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.7" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "uint" @@ -8114,48 +8251,51 @@ dependencies = [ [[package]] name = "unicase" -version = "2.8.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] [[package]] name = "unicode-bidi" -version = "0.3.17" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.24" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] [[package]] name = "unicode-properties" -version = "0.1.3" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" +checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-xid" -version = "0.2.6" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "unicode_categories" @@ -8203,18 +8343,19 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.10.1" +version = "2.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" +checksum = "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35" dependencies = [ - "base64 0.22.1", + "base64 0.21.7", "flate2", "log", "once_cell", - "rustls 0.23.15", + "rustls 0.22.4", "rustls-pki-types", + "rustls-webpki 0.102.3", "url", - "webpki-roots 0.26.6", + "webpki-roots 0.26.2", ] [[package]] @@ -8237,15 +8378,15 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "utf8parse" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" -version = "1.11.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" [[package]] name = "valuable" @@ -8319,9 +8460,9 @@ dependencies = [ [[package]] name = "version_check" -version = "0.9.5" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "void" @@ -8355,7 +8496,7 @@ dependencies = [ "futures-util", "headers", "http 0.2.12", - "hyper 0.14.31", + "hyper 0.14.29", "log", "mime", "mime_guess", @@ -8391,12 +8532,11 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", - "once_cell", "serde", "serde_json", "wasm-bindgen-macro", @@ -8404,9 +8544,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -8419,9 +8559,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -8431,9 +8571,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8441,9 +8581,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -8454,25 +8594,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -8499,20 +8629,32 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "3c452ad30530b54a4d8e71952716a212b08efd0f3562baa66c29a618b07da7c3" dependencies = [ "rustls-pki-types", ] +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.34", +] + [[package]] name = "whoami" -version = "1.5.2" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" dependencies = [ - "redox_syscall", + "redox_syscall 0.4.1", "wasite", ] @@ -8550,7 +8692,7 @@ version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" dependencies = [ - "windows-core 0.51.1", + "windows-core", "windows-targets 0.48.5", ] @@ -8563,15 +8705,6 @@ dependencies = [ "windows-targets 0.48.5", ] -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-registry" version = "0.2.0" @@ -8752,9 +8885,18 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.20" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c52728401e1dc672a56e81e593e912aa54c78f40246869f78359a2bf24d29d" dependencies = [ "memchr", ] @@ -8778,18 +8920,35 @@ dependencies = [ "tap", ] +[[package]] +name = "x509-parser" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7069fba5b66b9193bd2c5d3d4ff12b839118f6bcbef5328efafafb5395cf63da" +dependencies = [ + "asn1-rs 0.5.2", + "data-encoding", + "der-parser 8.2.0", + "lazy_static", + "nom", + "oid-registry 0.6.1", + "rusticata-macros", + "thiserror", + "time 0.3.36", +] + [[package]] name = "x509-parser" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" dependencies = [ - "asn1-rs", + "asn1-rs 0.6.1", "data-encoding", - "der-parser", + "der-parser 9.0.0", "lazy_static", "nom", - "oid-registry", + "oid-registry 0.7.0", "ring 0.17.8", "rusticata-macros", "thiserror", @@ -8798,9 +8957,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.22" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" +checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" [[package]] name = "xmltree" @@ -8831,19 +8990,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", From c954c76cdb10014e16dbb07c5f59058039e46a8c Mon Sep 17 00:00:00 2001 From: Rob Date: Fri, 18 Oct 2024 16:16:21 -0400 Subject: [PATCH 05/18] refactor into separate files --- crates/hotshot/src/traits.rs | 5 +- .../definition/message_hook.rs | 1 + .../push_cdn_network/definition/mod.rs | 89 +++++++++ .../definition/signature_key.rs | 56 ++++++ .../networking/push_cdn_network/metrics.rs | 28 +++ .../mod.rs} | 176 +----------------- 6 files changed, 187 insertions(+), 168 deletions(-) create mode 100644 crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs create mode 100644 crates/hotshot/src/traits/networking/push_cdn_network/definition/mod.rs create mode 100644 crates/hotshot/src/traits/networking/push_cdn_network/definition/signature_key.rs create mode 100644 crates/hotshot/src/traits/networking/push_cdn_network/metrics.rs rename crates/hotshot/src/traits/networking/{push_cdn_network.rs => push_cdn_network/mod.rs} (73%) diff --git a/crates/hotshot/src/traits.rs b/crates/hotshot/src/traits.rs index 8667943189..5336ff5b3f 100644 --- a/crates/hotshot/src/traits.rs +++ b/crates/hotshot/src/traits.rs @@ -24,8 +24,9 @@ pub mod implementations { }, memory_network::{MasterMap, MemoryNetwork}, push_cdn_network::{ - CdnMetricsValue, KeyPair, ProductionDef, PushCdnNetwork, TestingDef, Topic as CdnTopic, - WrappedSignatureKey, + definition::signature_key::WrappedSignatureKey, definition::ProductionDef, + definition::TestingDef, definition::Topic as CdnTopic, metrics::CdnMetricsValue, + KeyPair, PushCdnNetwork, }, }; } diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs @@ -0,0 +1 @@ + diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/mod.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/mod.rs new file mode 100644 index 0000000000..036d409c76 --- /dev/null +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/mod.rs @@ -0,0 +1,89 @@ +use std::marker::PhantomData; + +use cdn_broker::reexports::{ + connection::protocols::{Tcp, TcpTls}, + def::{hook::NoMessageHook, ConnectionDef, RunDef, Topic as TopicTrait}, + discovery::{Embedded, Redis}, +}; +use hotshot_types::traits::{network::Topic as HotShotTopic, signature_key::SignatureKey}; +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use signature_key::WrappedSignatureKey; + +/// Allows hooking of incoming messages to the CDN +pub mod message_hook; + +/// The CDN's signature key implementation, which wraps the real signature key +pub mod signature_key; + +/// The enum for the topics we can subscribe to in the Push CDN +#[repr(u8)] +#[derive(IntoPrimitive, TryFromPrimitive, Clone, PartialEq, Eq)] +pub enum Topic { + /// The global topic + Global = 0, + /// The DA topic + Da = 1, +} + +/// Allows conversion from a `HotShotTopic` to a `Topic` +impl From for Topic { + fn from(topic: HotShotTopic) -> Self { + match topic { + HotShotTopic::Global => Topic::Global, + HotShotTopic::Da => Topic::Da, + } + } +} + +/// Implement the `TopicTrait` for our `Topic` enum. We need this to filter +/// topics that are not implemented at the application level. +impl TopicTrait for Topic {} + +/// The production run definition for the Push CDN. +/// Uses the real protocols and a Redis discovery client. +pub struct ProductionDef(PhantomData); +impl RunDef for ProductionDef { + type User = UserDef; + type Broker = BrokerDef; + type DiscoveryClientType = Redis; + type Topic = Topic; +} + +/// The user definition for the Push CDN. +/// Uses the TCP+TLS protocol and untrusted middleware. +pub struct UserDef(PhantomData); +impl ConnectionDef for UserDef { + type Scheme = WrappedSignatureKey; + type Protocol = TcpTls; + type MessageHook = NoMessageHook; +} + +/// The broker definition for the Push CDN. +/// Uses the TCP protocol and trusted middleware. +pub struct BrokerDef(PhantomData); +impl ConnectionDef for BrokerDef { + type Scheme = WrappedSignatureKey; + type Protocol = Tcp; + type MessageHook = NoMessageHook; +} + +/// The client definition for the Push CDN. Uses the TCP+TLS +/// protocol and no middleware. Differs from the user +/// definition in that is on the client-side. +#[derive(Clone)] +pub struct ClientDef(PhantomData); +impl ConnectionDef for ClientDef { + type Scheme = WrappedSignatureKey; + type Protocol = TcpTls; + type MessageHook = NoMessageHook; +} + +/// The testing run definition for the Push CDN. +/// Uses the real protocols, but with an embedded discovery client. +pub struct TestingDef(PhantomData); +impl RunDef for TestingDef { + type User = UserDef; + type Broker = BrokerDef; + type DiscoveryClientType = Embedded; + type Topic = Topic; +} diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/signature_key.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/signature_key.rs new file mode 100644 index 0000000000..838dfe873c --- /dev/null +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/signature_key.rs @@ -0,0 +1,56 @@ +use bincode::Options; +use cdn_broker::reexports::crypto::signature::{Serializable, SignatureScheme}; +use hotshot_types::{traits::signature_key::SignatureKey, utils::bincode_opts}; + +/// A wrapped `SignatureKey`. We need to implement the Push CDN's `SignatureScheme` +/// trait in order to sign and verify messages to/from the CDN. +#[derive(Clone, Eq, PartialEq)] +pub struct WrappedSignatureKey(pub T); +impl SignatureScheme for WrappedSignatureKey { + type PrivateKey = T::PrivateKey; + type PublicKey = Self; + + /// Sign a message of arbitrary data and return the serialized signature + fn sign( + private_key: &Self::PrivateKey, + namespace: &str, + message: &[u8], + ) -> anyhow::Result> { + // Combine the namespace and message into a single byte array + let message = [namespace.as_bytes(), message].concat(); + + let signature = T::sign(private_key, &message)?; + Ok(bincode_opts().serialize(&signature)?) + } + + /// Verify a message of arbitrary data and return the result + fn verify( + public_key: &Self::PublicKey, + namespace: &str, + message: &[u8], + signature: &[u8], + ) -> bool { + // Deserialize the signature + let signature: T::PureAssembledSignatureType = match bincode_opts().deserialize(signature) { + Ok(key) => key, + Err(_) => return false, + }; + + // Combine the namespace and message into a single byte array + let message = [namespace.as_bytes(), message].concat(); + + public_key.0.validate(&signature, &message) + } +} + +/// We need to implement the `Serializable` so the Push CDN can serialize the signatures +/// and public keys and send them over the wire. +impl Serializable for WrappedSignatureKey { + fn serialize(&self) -> anyhow::Result> { + Ok(self.0.to_bytes()) + } + + fn deserialize(serialized: &[u8]) -> anyhow::Result { + Ok(WrappedSignatureKey(T::from_bytes(serialized)?)) + } +} diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/metrics.rs b/crates/hotshot/src/traits/networking/push_cdn_network/metrics.rs new file mode 100644 index 0000000000..31322f57d0 --- /dev/null +++ b/crates/hotshot/src/traits/networking/push_cdn_network/metrics.rs @@ -0,0 +1,28 @@ +use hotshot_types::traits::metrics::{Counter, Metrics, NoMetrics}; + +/// CDN-specific metrics +#[derive(Clone)] +pub struct CdnMetricsValue { + /// The number of failed messages + pub num_failed_messages: Box, +} + +impl CdnMetricsValue { + /// Populate the metrics with the CDN-specific ones + pub fn new(metrics: &dyn Metrics) -> Self { + // Create a subgroup for the CDN + let subgroup = metrics.subgroup("cdn".into()); + + // Create the CDN-specific metrics + Self { + num_failed_messages: subgroup.create_counter("num_failed_messages".into(), None), + } + } +} + +impl Default for CdnMetricsValue { + // The default is empty metrics + fn default() -> Self { + Self::new(&*NoMetrics::boxed()) + } +} diff --git a/crates/hotshot/src/traits/networking/push_cdn_network.rs b/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs similarity index 73% rename from crates/hotshot/src/traits/networking/push_cdn_network.rs rename to crates/hotshot/src/traits/networking/push_cdn_network/mod.rs index e73652b031..d9b79062cf 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs @@ -1,3 +1,8 @@ +/// The run definition for the Push CDN +pub mod definition; +/// The metrics for the Push CDN +pub mod metrics; + // Copyright (c) 2021-2024 Espresso Systems (espressosys.com) // This file is part of the HotShot repository. @@ -6,7 +11,7 @@ #[cfg(feature = "hotshot-testing")] use std::sync::atomic::{AtomicBool, Ordering}; -use std::{marker::PhantomData, sync::Arc}; +use std::sync::Arc; #[cfg(feature = "hotshot-testing")] use std::{path::Path, time::Duration}; @@ -14,24 +19,17 @@ use async_compatibility_layer::channel::TrySendError; #[cfg(feature = "hotshot-testing")] use async_compatibility_layer::{art::async_sleep, art::async_spawn}; use async_trait::async_trait; -use bincode::config::Options; -use cdn_broker::reexports::{ - connection::protocols::{Tcp, TcpTls}, - def::{hook::NoMessageHook, ConnectionDef, RunDef, Topic as TopicTrait}, - discovery::{Embedded, Redis}, -}; +use cdn_broker::reexports::def::hook::NoMessageHook; #[cfg(feature = "hotshot-testing")] use cdn_broker::{Broker, Config as BrokerConfig}; pub use cdn_client::reexports::crypto::signature::KeyPair; use cdn_client::{ - reexports::{ - crypto::signature::{Serializable, SignatureScheme}, - message::{Broadcast, Direct, Message as PushCdnMessage}, - }, + reexports::message::{Broadcast, Direct, Message as PushCdnMessage}, Client, Config as ClientConfig, }; #[cfg(feature = "hotshot-testing")] use cdn_marshal::{Config as MarshalConfig, Marshal}; +use definition::{signature_key::WrappedSignatureKey, ClientDef, TestingDef, Topic}; #[cfg(feature = "hotshot-testing")] use hotshot_types::traits::network::{ AsyncGenerator, NetworkReliability, TestableNetworkingImplementation, @@ -40,150 +38,19 @@ use hotshot_types::{ boxed_sync, data::ViewNumber, traits::{ - metrics::{Counter, Metrics, NoMetrics}, network::{BroadcastDelay, ConnectedNetwork, Topic as HotShotTopic}, node_implementation::NodeType, signature_key::SignatureKey, }, - utils::bincode_opts, BoxSyncFuture, }; -use num_enum::{IntoPrimitive, TryFromPrimitive}; +use metrics::CdnMetricsValue; #[cfg(feature = "hotshot-testing")] use rand::{rngs::StdRng, RngCore, SeedableRng}; use tracing::error; use super::NetworkError; -/// CDN-specific metrics -#[derive(Clone)] -pub struct CdnMetricsValue { - /// The number of failed messages - pub num_failed_messages: Box, -} - -impl CdnMetricsValue { - /// Populate the metrics with the CDN-specific ones - pub fn new(metrics: &dyn Metrics) -> Self { - // Create a subgroup for the CDN - let subgroup = metrics.subgroup("cdn".into()); - - // Create the CDN-specific metrics - Self { - num_failed_messages: subgroup.create_counter("num_failed_messages".into(), None), - } - } -} - -impl Default for CdnMetricsValue { - // The default is empty metrics - fn default() -> Self { - Self::new(&*NoMetrics::boxed()) - } -} - -/// A wrapped `SignatureKey`. We need to implement the Push CDN's `SignatureScheme` -/// trait in order to sign and verify messages to/from the CDN. -#[derive(Clone, Eq, PartialEq)] -pub struct WrappedSignatureKey(pub T); -impl SignatureScheme for WrappedSignatureKey { - type PrivateKey = T::PrivateKey; - type PublicKey = Self; - - /// Sign a message of arbitrary data and return the serialized signature - fn sign( - private_key: &Self::PrivateKey, - namespace: &str, - message: &[u8], - ) -> anyhow::Result> { - // Combine the namespace and message into a single byte array - let message = [namespace.as_bytes(), message].concat(); - - let signature = T::sign(private_key, &message)?; - Ok(bincode_opts().serialize(&signature)?) - } - - /// Verify a message of arbitrary data and return the result - fn verify( - public_key: &Self::PublicKey, - namespace: &str, - message: &[u8], - signature: &[u8], - ) -> bool { - // Deserialize the signature - let signature: T::PureAssembledSignatureType = match bincode_opts().deserialize(signature) { - Ok(key) => key, - Err(_) => return false, - }; - - // Combine the namespace and message into a single byte array - let message = [namespace.as_bytes(), message].concat(); - - public_key.0.validate(&signature, &message) - } -} - -/// We need to implement the `Serializable` so the Push CDN can serialize the signatures -/// and public keys and send them over the wire. -impl Serializable for WrappedSignatureKey { - fn serialize(&self) -> anyhow::Result> { - Ok(self.0.to_bytes()) - } - - fn deserialize(serialized: &[u8]) -> anyhow::Result { - Ok(WrappedSignatureKey(T::from_bytes(serialized)?)) - } -} - -/// The production run definition for the Push CDN. -/// Uses the real protocols and a Redis discovery client. -pub struct ProductionDef(PhantomData); -impl RunDef for ProductionDef { - type User = UserDef; - type Broker = BrokerDef; - type DiscoveryClientType = Redis; - type Topic = Topic; -} - -/// The user definition for the Push CDN. -/// Uses the TCP+TLS protocol and untrusted middleware. -pub struct UserDef(PhantomData); -impl ConnectionDef for UserDef { - type Scheme = WrappedSignatureKey; - type Protocol = TcpTls; - type MessageHook = NoMessageHook; -} - -/// The broker definition for the Push CDN. -/// Uses the TCP protocol and trusted middleware. -pub struct BrokerDef(PhantomData); -impl ConnectionDef for BrokerDef { - type Scheme = WrappedSignatureKey; - type Protocol = Tcp; - type MessageHook = NoMessageHook; -} - -/// The client definition for the Push CDN. Uses the TCP+TLS -/// protocol and no middleware. Differs from the user -/// definition in that is on the client-side. -#[derive(Clone)] -pub struct ClientDef(PhantomData); -impl ConnectionDef for ClientDef { - type Scheme = WrappedSignatureKey; - type Protocol = TcpTls; - type MessageHook = NoMessageHook; -} - -/// The testing run definition for the Push CDN. -/// Uses the real protocols, but with an embedded discovery client. -pub struct TestingDef(PhantomData); -impl RunDef for TestingDef { - type User = UserDef; - type Broker = BrokerDef; - type DiscoveryClientType = Embedded; - type Topic = Topic; -} - /// A communication channel to the Push CDN, which is a collection of brokers and a marshal /// that helps organize them all. #[derive(Clone)] @@ -200,20 +67,6 @@ pub struct PushCdnNetwork { // request_receiver_channel: TakeReceiver, } -/// The enum for the topics we can subscribe to in the Push CDN -#[repr(u8)] -#[derive(IntoPrimitive, TryFromPrimitive, Clone, PartialEq, Eq)] -pub enum Topic { - /// The global topic - Global = 0, - /// The DA topic - Da = 1, -} - -/// Implement the `TopicTrait` for our `Topic` enum. We need this to filter -/// topics that are not implemented at the application level. -impl TopicTrait for Topic {} - impl PushCdnNetwork { /// Create a new `PushCdnNetwork` (really a client) from a marshal endpoint, a list of initial /// topics we are interested in, and our wrapped keypair that we use to authenticate with the @@ -590,12 +443,3 @@ impl ConnectedNetwork for PushCdnNetwork { Ok(()) } } - -impl From for Topic { - fn from(topic: HotShotTopic) -> Self { - match topic { - HotShotTopic::Global => Topic::Global, - HotShotTopic::Da => Topic::Da, - } - } -} From 1b610f9b19741d9888b793dbeb1b2b4c5acd0c96 Mon Sep 17 00:00:00 2001 From: Rob Date: Fri, 18 Oct 2024 16:41:30 -0400 Subject: [PATCH 06/18] message deduplication --- Cargo.lock | 11 + crates/examples/combined/all.rs | 4 +- crates/examples/push-cdn/all.rs | 4 +- crates/examples/push-cdn/broker.rs | 6 +- crates/hotshot/Cargo.toml | 1 + crates/hotshot/src/traits.rs | 1 + .../definition/message_hook.rs | 190 ++++++++++++++++++ .../push_cdn_network/definition/mod.rs | 3 +- .../traits/networking/push_cdn_network/mod.rs | 7 +- 9 files changed, 218 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2062fa43d5..0ab32027ea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3136,6 +3136,7 @@ dependencies = [ "tokio", "toml", "tracing", + "twox-hash", "url", "vbs", ] @@ -8219,6 +8220,16 @@ dependencies = [ "utf-8", ] +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "static_assertions", +] + [[package]] name = "typeid" version = "1.0.0" diff --git a/crates/examples/combined/all.rs b/crates/examples/combined/all.rs index aff1a116f6..567a5610cd 100644 --- a/crates/examples/combined/all.rs +++ b/crates/examples/combined/all.rs @@ -17,7 +17,7 @@ use async_compatibility_layer::{ use cdn_broker::{reexports::def::hook::NoMessageHook, Broker}; use cdn_marshal::Marshal; use hotshot::{ - traits::implementations::{KeyPair, TestingDef, WrappedSignatureKey}, + traits::implementations::{HotShotMessageHook, KeyPair, TestingDef, WrappedSignatureKey}, types::SignatureKey, }; use hotshot_example_types::{node_types::TestVersions, state_types::TestTypes}; @@ -85,7 +85,7 @@ async fn main() { private_key: broker_private_key.clone(), }, - user_message_hook: NoMessageHook, + user_message_hook: HotShotMessageHook::default(), broker_message_hook: NoMessageHook, metrics_bind_endpoint: None, diff --git a/crates/examples/push-cdn/all.rs b/crates/examples/push-cdn/all.rs index 43f97415e5..4312f32d12 100644 --- a/crates/examples/push-cdn/all.rs +++ b/crates/examples/push-cdn/all.rs @@ -17,7 +17,7 @@ use cdn_broker::{ }; use cdn_marshal::Marshal; use hotshot::{ - traits::implementations::{TestingDef, WrappedSignatureKey}, + traits::implementations::{HotShotMessageHook, TestingDef, WrappedSignatureKey}, types::SignatureKey, }; use hotshot_example_types::{node_types::TestVersions, state_types::TestTypes}; @@ -94,7 +94,7 @@ async fn main() { private_key: broker_private_key.clone(), }, - user_message_hook: NoMessageHook, + user_message_hook: HotShotMessageHook::default(), broker_message_hook: NoMessageHook, metrics_bind_endpoint: None, diff --git a/crates/examples/push-cdn/broker.rs b/crates/examples/push-cdn/broker.rs index ca6c14a908..6e58ae7ca8 100644 --- a/crates/examples/push-cdn/broker.rs +++ b/crates/examples/push-cdn/broker.rs @@ -9,7 +9,9 @@ use anyhow::Result; use cdn_broker::{reexports::def::hook::NoMessageHook, Broker, Config}; use clap::Parser; -use hotshot::traits::implementations::{KeyPair, ProductionDef, WrappedSignatureKey}; +use hotshot::traits::implementations::{ + HotShotMessageHook, KeyPair, ProductionDef, WrappedSignatureKey, +}; use hotshot_example_types::node_types::TestTypes; use hotshot_types::traits::{node_implementation::NodeType, signature_key::SignatureKey}; use sha2::Digest; @@ -103,7 +105,7 @@ async fn main() -> Result<()> { private_key, }, - user_message_hook: NoMessageHook, + user_message_hook: HotShotMessageHook::default(), broker_message_hook: NoMessageHook, public_bind_endpoint: args.public_bind_endpoint, diff --git a/crates/hotshot/Cargo.toml b/crates/hotshot/Cargo.toml index 874e94939d..8418f164d5 100644 --- a/crates/hotshot/Cargo.toml +++ b/crates/hotshot/Cargo.toml @@ -58,6 +58,7 @@ sha2 = { workspace = true } url = { workspace = true } num_enum = "0.7" parking_lot = "0.12" +twox-hash = { version = "1", default-features = false } [target.'cfg(all(async_executor_impl = "tokio"))'.dependencies] tokio = { workspace = true } diff --git a/crates/hotshot/src/traits.rs b/crates/hotshot/src/traits.rs index 5336ff5b3f..9ddeb0d3e7 100644 --- a/crates/hotshot/src/traits.rs +++ b/crates/hotshot/src/traits.rs @@ -24,6 +24,7 @@ pub mod implementations { }, memory_network::{MasterMap, MemoryNetwork}, push_cdn_network::{ + definition::message_hook::HotShotMessageHook, definition::signature_key::WrappedSignatureKey, definition::ProductionDef, definition::TestingDef, definition::Topic as CdnTopic, metrics::CdnMetricsValue, KeyPair, PushCdnNetwork, diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs index 8b13789179..cf81a142a4 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs @@ -1 +1,191 @@ +#![allow(clippy::unnecessary_wraps)] +use std::hash::Hasher; +use std::num::NonZeroUsize; + +use anyhow::{Context, Result}; +use cdn_broker::reexports::def::hook::{HookResult, MessageHookDef}; +use cdn_broker::reexports::message::{Broadcast, Direct, Message as PushCdnMessage}; +use lru::LruCache; +use twox_hash::xxh3::Hash64; + +#[derive(Clone)] +/// The message hook for `HotShot` messages. Each user has a unique message hook. +pub struct HotShotMessageHook { + /// The cache for message hashes. We use this to deduplicate a sliding window of + /// 100 messages. + message_hash_cache: LruCache, +} + +impl Default for HotShotMessageHook { + /// # Panics + /// If 100 < 0 + fn default() -> Self { + Self { + message_hash_cache: LruCache::new(NonZeroUsize::new(100).unwrap()), + } + } +} + +impl HotShotMessageHook { + /// Create a new `HotShotMessageHook` + /// + /// # Panics + /// If 100 < 0 + #[must_use] + pub fn new() -> Self { + Self { + message_hash_cache: LruCache::new(NonZeroUsize::new(100).unwrap()), + } + } + + /// Process against the local message cache. This is used to deduplicate messages. + /// Returns `true` if the message has been seen before, `false` otherwise. + /// + /// - `auxiliary_data` is used to take into account the message recipient or topics associated. + fn message_already_seen(&mut self, message: &[u8], auxiliary_data: &[u8]) -> bool { + // Calculate the hash of the message + let mut hasher = Hash64::default(); + hasher.write(message); + hasher.write(auxiliary_data); + + // Add it, returning if we've seen it before + self.message_hash_cache.put(hasher.finish(), ()).is_some() + } + + /// Process incoming broadcast messages from the user + fn process_broadcast_message(&mut self, broadcast: &mut Broadcast) -> Result { + // Skip the message if we've already seen it + if self.message_already_seen(&broadcast.message, &broadcast.topics) { + return Ok(HookResult::SkipMessage); + } + + Ok(HookResult::ProcessMessage) + } + + /// Process incoming direct messages from the user + fn process_direct_message(&mut self, direct: &mut Direct) -> Result { + // Skip the message if we've already seen it + if self.message_already_seen(&direct.message, &direct.recipient) { + return Ok(HookResult::SkipMessage); + } + + Ok(HookResult::ProcessMessage) + } +} + +impl MessageHookDef for HotShotMessageHook { + /// Implement the hook trait for `HotShotMessageHook` + fn on_message_received(&mut self, message: &mut PushCdnMessage) -> Result { + match message { + PushCdnMessage::Broadcast(broadcast) => self + .process_broadcast_message(broadcast) + .with_context(|| "failed to process broadcast message"), + + PushCdnMessage::Direct(direct) => self + .process_direct_message(direct) + .with_context(|| "failed to process direct message"), + + _ => Ok(HookResult::ProcessMessage), + } + } +} + +#[cfg(test)] +mod test { + use super::*; + + #[test] + pub fn deduplication_broadcast() { + // Create a new message hook + let mut hook = HotShotMessageHook::default(); + + // Create a message + let mut message = Vec::new(); + message.extend_from_slice(b"Hello, world!"); + + // Create a broadcast message + let mut broadcast = Broadcast { + message, + topics: vec![], + }; + + // Process the message, make sure it would've been sent + let result = hook.process_broadcast_message(&mut broadcast); + assert!( + result.is_ok() && result.unwrap() == HookResult::ProcessMessage, + "Message should have been processed but was not" + ); + + // Send it again, this time it should be skipped + let result = hook.process_broadcast_message(&mut broadcast); + assert!( + result.is_ok() && result.unwrap() == HookResult::SkipMessage, + "Message should have been skipped but was not" + ); + + // Alter the topics, it should be processed + broadcast.topics.push(1); + let result = hook.process_broadcast_message(&mut broadcast); + assert!( + result.is_ok() && result.unwrap() == HookResult::ProcessMessage, + "Same message with different topics should have been processed but was not" + ); + + // Alter the message, it should be processed + broadcast.message.extend_from_slice(b"!"); + broadcast.topics.clear(); + let result = hook.process_broadcast_message(&mut broadcast); + assert!( + result.is_ok() && result.unwrap() == HookResult::ProcessMessage, + "Different message with same topics should have been processed but was not" + ); + } + + #[test] + pub fn deduplication_direct() { + // Create a new message hook + let mut hook = HotShotMessageHook::default(); + + // Create a message + let mut message = Vec::new(); + message.extend_from_slice(b"Hello, world!"); + + // Create a broadcast message + let mut direct = Direct { + message, + recipient: vec![], + }; + + // Process the message, make sure it would've been sent + let result = hook.process_direct_message(&mut direct); + assert!( + result.is_ok() && result.unwrap() == HookResult::ProcessMessage, + "Message should have been processed but was not" + ); + + // Send it again, this time it should be skipped + let result = hook.process_direct_message(&mut direct); + assert!( + result.is_ok() && result.unwrap() == HookResult::SkipMessage, + "Message should have been skipped but was not" + ); + + // Alter the topics, it should be processed + direct.recipient.push(1); + let result = hook.process_direct_message(&mut direct); + assert!( + result.is_ok() && result.unwrap() == HookResult::ProcessMessage, + "Same message with different recipient should have been processed but was not" + ); + + // Alter the message, it should be processed + direct.message.extend_from_slice(b"!"); + direct.recipient.clear(); + let result = hook.process_direct_message(&mut direct); + assert!( + result.is_ok() && result.unwrap() == HookResult::ProcessMessage, + "Different message with same recipient should have been processed but was not" + ); + } +} diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/mod.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/mod.rs index 036d409c76..2b1408bd86 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/definition/mod.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/mod.rs @@ -6,6 +6,7 @@ use cdn_broker::reexports::{ discovery::{Embedded, Redis}, }; use hotshot_types::traits::{network::Topic as HotShotTopic, signature_key::SignatureKey}; +use message_hook::HotShotMessageHook; use num_enum::{IntoPrimitive, TryFromPrimitive}; use signature_key::WrappedSignatureKey; @@ -55,7 +56,7 @@ pub struct UserDef(PhantomData); impl ConnectionDef for UserDef { type Scheme = WrappedSignatureKey; type Protocol = TcpTls; - type MessageHook = NoMessageHook; + type MessageHook = HotShotMessageHook; } /// The broker definition for the Push CDN. diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs b/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs index d9b79062cf..769153bae5 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs @@ -29,7 +29,10 @@ use cdn_client::{ }; #[cfg(feature = "hotshot-testing")] use cdn_marshal::{Config as MarshalConfig, Marshal}; -use definition::{signature_key::WrappedSignatureKey, ClientDef, TestingDef, Topic}; +use definition::{ + message_hook::HotShotMessageHook, signature_key::WrappedSignatureKey, ClientDef, TestingDef, + Topic, +}; #[cfg(feature = "hotshot-testing")] use hotshot_types::traits::network::{ AsyncGenerator, NetworkReliability, TestableNetworkingImplementation, @@ -201,7 +204,7 @@ impl TestableNetworkingImplementation }, discovery_endpoint: discovery_endpoint.clone(), - user_message_hook: NoMessageHook, + user_message_hook: HotShotMessageHook::default(), broker_message_hook: NoMessageHook, ca_cert_path: None, From bb713a624bfb4c04d700f188d5427c66cd18a433 Mon Sep 17 00:00:00 2001 From: Rob Date: Wed, 30 Oct 2024 12:35:15 -0400 Subject: [PATCH 07/18] to 052 --- Cargo.lock | 8 ++++---- Cargo.toml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 44845cb429..b5c63e14e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1320,7 +1320,7 @@ dependencies = [ [[package]] name = "cdn-broker" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.1#af42143a60f86a12ff759b6ad9bd1577c2887871" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.2#363b6e3a160842de7bc57ded31f6370b409e922b" dependencies = [ "async-std", "cdn-proto", @@ -1344,7 +1344,7 @@ dependencies = [ [[package]] name = "cdn-client" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.1#af42143a60f86a12ff759b6ad9bd1577c2887871" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.2#363b6e3a160842de7bc57ded31f6370b409e922b" dependencies = [ "async-std", "cdn-proto", @@ -1360,7 +1360,7 @@ dependencies = [ [[package]] name = "cdn-marshal" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.1#af42143a60f86a12ff759b6ad9bd1577c2887871" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.2#363b6e3a160842de7bc57ded31f6370b409e922b" dependencies = [ "async-std", "cdn-proto", @@ -1374,7 +1374,7 @@ dependencies = [ [[package]] name = "cdn-proto" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.1#af42143a60f86a12ff759b6ad9bd1577c2887871" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.2#363b6e3a160842de7bc57ded31f6370b409e922b" dependencies = [ "anyhow", "ark-serialize", diff --git a/Cargo.toml b/Cargo.toml index 8b12038195..afeb41b09e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -118,10 +118,10 @@ anyhow = "1" # Push CDN imports -cdn-client = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.1" } -cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.1" } -cdn-marshal = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.1" } -cdn-proto = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.1" } +cdn-client = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.2" } +cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.2" } +cdn-marshal = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.2" } +cdn-proto = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.2" } ### Profiles ### From b932b3fc680c244dd02d24b93e98f227b5d4a8ab Mon Sep 17 00:00:00 2001 From: Rob Date: Wed, 30 Oct 2024 14:10:26 -0400 Subject: [PATCH 08/18] most of the changes --- Cargo.lock | 7 + Cargo.toml | 9 +- crates/hotshot/Cargo.toml | 1 + .../definition/message_hook.rs | 233 +++++++++++++++++- crates/testing/Cargo.toml | 7 + rust-toolchain.toml | 2 +- 6 files changed, 252 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b5c63e14e1..88530e41d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2740,6 +2740,12 @@ dependencies = [ "slab", ] +[[package]] +name = "gcr" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3041228a87cc284297d20a175eb6be77a8aca36aa49053985de84804b8a2bb" + [[package]] name = "generic-array" version = "0.14.7" @@ -3118,6 +3124,7 @@ dependencies = [ "either", "ethereum-types", "futures", + "gcr", "hotshot-task", "hotshot-task-impls", "hotshot-types", diff --git a/Cargo.toml b/Cargo.toml index afeb41b09e..b756fc55b2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ version = "0.5.78" # same as `hotshot`, but workspace subcrate can also release its own version authors = ["Espresso Systems "] edition = "2021" -rust-version = "1.76.0" +rust-version = "1.80.0" homepage = "https://github.com/EspressoSystems/HotShot" documentation = "https://hotshot.docs.espressosys.com" repository = "https://github.com/EspressoSystems/HotShot" @@ -57,7 +57,7 @@ espresso-systems-common = { git = "https://github.com/espressosystems/espresso-s ethereum-types = { version = "0.14", default-features = false, features = [ "serialize", ] } -derive_more = { version = "1.0", features = ["from"] } +derive_more = { version = "1.0", features = ["from", "deref"] } futures = { version = "0.3", default-features = false } jf-crhf = { version = "0.1.0", git = "https://github.com/EspressoSystems/jellyfish", tag = "0.4.5" } jf-vid = { version = "0.1.0", git = "https://github.com/EspressoSystems/jellyfish", tag = "0.4.5" } @@ -174,3 +174,8 @@ rust_2018_idioms = { level = "warn", priority = -1 } # TODO change to deny missing_docs = "warn" warnings = "warn" +unexpected_cfgs = { level = "warn", check-cfg = [ + 'cfg(async_executor_impl, values("async-std"))', + 'cfg(async_executor_impl, values("tokio"))', + 'cfg(hotshot_example)', +] } diff --git a/crates/hotshot/Cargo.toml b/crates/hotshot/Cargo.toml index d2647c9113..3573298cf9 100644 --- a/crates/hotshot/Cargo.toml +++ b/crates/hotshot/Cargo.toml @@ -60,6 +60,7 @@ num_enum = "0.7" parking_lot = "0.12" twox-hash = { version = "1", default-features = false } utils = { path = "../utils" } +gcr = "0.1" [target.'cfg(all(async_executor_impl = "tokio"))'.dependencies] tokio = { workspace = true } diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs index cf81a142a4..5d71f815eb 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs @@ -2,19 +2,151 @@ use std::hash::Hasher; use std::num::NonZeroUsize; +use std::sync::atomic::{AtomicU32, Ordering}; +use std::sync::Arc; +use std::time::{Duration, Instant}; +use std::u32; use anyhow::{Context, Result}; use cdn_broker::reexports::def::hook::{HookResult, MessageHookDef}; use cdn_broker::reexports::message::{Broadcast, Direct, Message as PushCdnMessage}; +use gcr::{Gcr, GcrRequestError}; use lru::LruCache; +use parking_lot::Mutex; +use tracing::warn; use twox_hash::xxh3::Hash64; +/// The type of message being processed. Is used downstream to determine +/// which sample and average to use when processing a message. +#[derive(Eq, PartialEq, Clone, Copy, Debug)] +enum MessageType { + /// A broadcast message + Broadcast, + /// A direct message + Direct, +} + +/// An average representing the number of bytes processed per second +struct Average { + /// The number of bytes processed + num_bytes: f64, + + /// The number of samples + num_samples: u64, +} + +impl Average { + /// Create a new `Average` instance + fn new() -> Self { + Self { + num_bytes: 0.0, + num_samples: 0, + } + } + + /// Add a sample to the average + fn add(&mut self, num: f64) { + // Add the bytes and increment the number of samples + self.num_bytes = self.num_bytes + num; + self.num_samples = self.num_samples.saturating_add(1); + } + + /// Finalize the average, resetting the internal state and returning the new average + fn commit(&mut self) -> f64 { + // Calculate the new average + let value = self.num_bytes / self.num_samples as f64; + + // Reset the internal state + self.num_bytes = 0.0; + self.num_samples = 0; + + // Return the new average + value + } +} + +/// A wrapper around an average that caches the last calculated value +#[derive(Clone)] +struct CachedAverage { + /// The inner average + average: Arc>, + + /// The last calculated value + last_calculated: Arc, +} + +impl CachedAverage { + /// Create a new `CachedAverage` instance + fn new() -> Self { + Self { + average: Arc::new(Mutex::new(Average::new())), + last_calculated: Arc::new(AtomicU32::new(0)), + } + } +} + +/// A sample representing the number of bytes processed per second +#[derive(Clone)] +pub struct Sample { + /// The number of bytes processed + num_bytes: f64, + + /// The time of the last commit + last_committed_time: Instant, +} + +impl Sample { + /// Create a new `Sample` instance + fn new() -> Self { + Self { + num_bytes: 0.0, + last_committed_time: Instant::now(), + } + } + + /// Add a number of bytes to the sample + fn add(&mut self, num: f64) { + self.num_bytes += num; + } + + /// Commit the sample, returning the number of bytes processed per second and + /// resetting the internal state + fn commit(&mut self) -> f64 { + let elapsed = self.last_committed_time.elapsed(); + self.last_committed_time = Instant::now(); + let value = self.num_bytes / elapsed.as_secs() as f64; + self.num_bytes = 0.0; + value + } +} + +/// The message hook for `HotShot` messages. Each user has a unique #[derive(Clone)] -/// The message hook for `HotShot` messages. Each user has a unique message hook. pub struct HotShotMessageHook { /// The cache for message hashes. We use this to deduplicate a sliding window of /// 100 messages. message_hash_cache: LruCache, + + /// The reference counter so we can keep track of the number of hooks there are + num_hooks: Arc<()>, + + /// The global average number of bytes per second for direct messages + global_average_direct_bps: CachedAverage, + + /// The global average number of bytes per second for broadcast messages + global_average_broadcast_bps: CachedAverage, + + /// The local GCR instance for direct messages + local_gcr_direct: Gcr, + + /// The local GCR instance for broadcast messages + local_gcr_broadcast: Gcr, + + /// The local, running number of consumed bytes for direct messages + local_sample_direct_bps: Sample, + + /// The local, running number of consumed bytes for broadcast messages + local_sample_broadcast_bps: Sample, } impl Default for HotShotMessageHook { @@ -23,6 +155,14 @@ impl Default for HotShotMessageHook { fn default() -> Self { Self { message_hash_cache: LruCache::new(NonZeroUsize::new(100).unwrap()), + num_hooks: Arc::new(()), + local_gcr_direct: Gcr::new(u32::MAX, Duration::from_secs(60), Some(u32::MAX)).unwrap(), + local_gcr_broadcast: Gcr::new(u32::MAX, Duration::from_secs(60), Some(u32::MAX)) + .unwrap(), + local_sample_direct_bps: Sample::new(), + local_sample_broadcast_bps: Sample::new(), + global_average_direct_bps: CachedAverage::new(), + global_average_broadcast_bps: CachedAverage::new(), } } } @@ -34,9 +174,77 @@ impl HotShotMessageHook { /// If 100 < 0 #[must_use] pub fn new() -> Self { - Self { - message_hash_cache: LruCache::new(NonZeroUsize::new(100).unwrap()), + Self::default() + } + + /// Process a message against the moving average + /// Returns whether or not the message should be skipped. + fn process_against_average( + &mut self, + message_len: usize, + message_type: MessageType, + ) -> HookResult { + // Get the correct sample, `GCR`, and global average based on the message type + let (local_sample, gcr, global_average) = match message_type { + MessageType::Broadcast => ( + &mut self.local_sample_broadcast_bps, + &mut self.local_gcr_broadcast, + &mut self.global_average_broadcast_bps, + ), + MessageType::Direct => ( + &mut self.local_sample_direct_bps, + &mut self.local_gcr_direct, + &mut self.global_average_direct_bps, + ), + }; + + // Check against the `GCR` instance, skipping if we're rate limited + // If we hit some other request error (like parameter error), we'll process + // the message anyway + if let Err(err) = gcr.request(message_len as u32) { + if let GcrRequestError::DeniedFor(_) = err { + return HookResult::SkipMessage; + } + + warn!("Failed to check GCR instance: {err}"); + } + + // Add the message to our local sample + local_sample.add(message_len as f64); + + // If it's been a minute, + if local_sample.last_committed_time.elapsed() > Duration::from_secs(60) { + // Commit the sample to the global average + let value = local_sample.commit(); + + // Store the new average + let mut global_average_guard = global_average.average.lock(); + global_average_guard.add(value); + + // If we've collected enough samples, commit the average + if global_average_guard.num_samples >= Arc::strong_count(&self.num_hooks) as u64 { + // Commit the average + let new_average = global_average_guard.commit(); + + // Update the last calculated value + global_average + .last_calculated + .store(new_average as u32, Ordering::Relaxed); + } + drop(global_average_guard); + + // Update the `Gcr` instance to be double the last calculated average + let new_global_average = global_average.last_calculated.load(Ordering::Relaxed); + if let Err(e) = gcr.adjust( + new_global_average.saturating_div(2), + Duration::from_secs(60), + Some(new_global_average.saturating_div(2)), + ) { + warn!("Failed to adjust GCR instance: {e}"); + } } + + HookResult::ProcessMessage } /// Process against the local message cache. This is used to deduplicate messages. @@ -60,6 +268,14 @@ impl HotShotMessageHook { return Ok(HookResult::SkipMessage); } + // Check against the average message rate + if self.process_against_average(broadcast.message.len(), MessageType::Broadcast) + != HookResult::ProcessMessage + { + warn!("Broadcast message not processed due to high message rate"); + return Ok(HookResult::SkipMessage); + }; + Ok(HookResult::ProcessMessage) } @@ -70,12 +286,21 @@ impl HotShotMessageHook { return Ok(HookResult::SkipMessage); } + // Check against the average message rate + if self.process_against_average(direct.message.len(), MessageType::Direct) + != HookResult::ProcessMessage + { + warn!("Direct message not processed due to high message rate"); + return Ok(HookResult::SkipMessage); + }; + Ok(HookResult::ProcessMessage) } } +/// Implement the hook trait for `HotShotMessageHook` impl MessageHookDef for HotShotMessageHook { - /// Implement the hook trait for `HotShotMessageHook` + /// Handle a received message fn on_message_received(&mut self, message: &mut PushCdnMessage) -> Result { match message { PushCdnMessage::Broadcast(broadcast) => self diff --git a/crates/testing/Cargo.toml b/crates/testing/Cargo.toml index 82473f3d34..bdb24efcdd 100644 --- a/crates/testing/Cargo.toml +++ b/crates/testing/Cargo.toml @@ -57,3 +57,10 @@ tokio = { workspace = true } [target.'cfg(all(async_executor_impl = "async-std"))'.dependencies] async-std = { workspace = true } + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = [ + 'cfg(async_executor_impl, values("async-std"))', + 'cfg(async_executor_impl, values("tokio"))', + 'cfg(hotshot_example)', +] } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 8ef5943242..4da9010b2a 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.78" +channel = "1.80" components = [ "cargo", "clippy", "rust-src", "rustc", "rustfmt", "llvm-tools-preview" ] From 9b809a16a4ee3873f75e6cba074153e488f85565 Mon Sep 17 00:00:00 2001 From: Rob Date: Thu, 31 Oct 2024 08:12:54 -0400 Subject: [PATCH 09/18] update max burst --- .../networking/push_cdn_network/definition/message_hook.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs index 5d71f815eb..a04511a06c 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs @@ -236,9 +236,9 @@ impl HotShotMessageHook { // Update the `Gcr` instance to be double the last calculated average let new_global_average = global_average.last_calculated.load(Ordering::Relaxed); if let Err(e) = gcr.adjust( - new_global_average.saturating_div(2), + new_global_average.saturating_mul(2), Duration::from_secs(60), - Some(new_global_average.saturating_div(2)), + Some(new_global_average.saturating_mul(4)), ) { warn!("Failed to adjust GCR instance: {e}"); } From 2770b99395ad79a26a7b3a5fb4713e0081a980f1 Mon Sep 17 00:00:00 2001 From: Rob Date: Thu, 31 Oct 2024 08:49:10 -0400 Subject: [PATCH 10/18] dropped GCR cache --- .../definition/message_hook.rs | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs index a04511a06c..aaaf4e7484 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs @@ -130,6 +130,14 @@ pub struct HotShotMessageHook { /// The reference counter so we can keep track of the number of hooks there are num_hooks: Arc<()>, + /// The unique identifier for the hook. This is used to uniquely identify the hook + /// by the consumer + identifier: u64, + + /// The cache of previously dropped GCRs by identifier. This is used to prevent a user + /// from reconnecting and using a brand new GCR instance (empty rate limit) + dropped_gcr_cache: Arc>>, + /// The global average number of bytes per second for direct messages global_average_direct_bps: CachedAverage, @@ -156,6 +164,10 @@ impl Default for HotShotMessageHook { Self { message_hash_cache: LruCache::new(NonZeroUsize::new(100).unwrap()), num_hooks: Arc::new(()), + identifier: rand::random(), + dropped_gcr_cache: Arc::new(Mutex::new(LruCache::new( + NonZeroUsize::new(1000).unwrap(), + ))), local_gcr_direct: Gcr::new(u32::MAX, Duration::from_secs(60), Some(u32::MAX)).unwrap(), local_gcr_broadcast: Gcr::new(u32::MAX, Duration::from_secs(60), Some(u32::MAX)) .unwrap(), @@ -314,6 +326,50 @@ impl MessageHookDef for HotShotMessageHook { _ => Ok(HookResult::ProcessMessage), } } + + /// Setting the identifier for the hook should update the GCR instances if we have + /// previously dropped ones for it + fn set_identifier(&mut self, identifier: u64) { + // Set the identifier + self.identifier = identifier; + + // If we have a GCR instance for it, use that instead of creating a new one + if let Some((direct, broadcast)) = self.dropped_gcr_cache.lock().get(&identifier) { + self.local_gcr_direct = direct.clone(); + self.local_gcr_broadcast = broadcast.clone(); + } + } +} + +impl Drop for HotShotMessageHook { + /// When the hook is dropped, we should cache the GCR instances in case the user reconnects + fn drop(&mut self) { + // If there is already a GCR instance for the identifier, use the one with the least capacity + let mut dropped_gcr_cache_guard = self.dropped_gcr_cache.lock(); + + if let Some((previous_direct, previous_broadcast)) = + dropped_gcr_cache_guard.pop(&self.identifier) + { + // Set the local GCR instances to the ones with the least capacity + if previous_direct.capacity() < self.local_gcr_direct.capacity() { + self.local_gcr_direct = previous_direct; + } + + // Do the same for the broadcast GCR instance + if previous_broadcast.capacity() < self.local_gcr_broadcast.capacity() { + self.local_gcr_broadcast = previous_broadcast; + } + } + + // Cache the GCR instances + dropped_gcr_cache_guard.put( + self.identifier, + ( + self.local_gcr_direct.clone(), + self.local_gcr_broadcast.clone(), + ), + ); + } } #[cfg(test)] From 3d3bbd06c1935c6d4227f4a54c274e0f2d16d579 Mon Sep 17 00:00:00 2001 From: Rob Date: Thu, 31 Oct 2024 12:10:41 -0400 Subject: [PATCH 11/18] parameterize commit interval --- .../push_cdn_network/definition/message_hook.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs index aaaf4e7484..dfdef2936f 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs @@ -134,6 +134,9 @@ pub struct HotShotMessageHook { /// by the consumer identifier: u64, + /// The commit interval for a local sample -> global average + commit_interval: Duration, + /// The cache of previously dropped GCRs by identifier. This is used to prevent a user /// from reconnecting and using a brand new GCR instance (empty rate limit) dropped_gcr_cache: Arc>>, @@ -168,6 +171,7 @@ impl Default for HotShotMessageHook { dropped_gcr_cache: Arc::new(Mutex::new(LruCache::new( NonZeroUsize::new(1000).unwrap(), ))), + commit_interval: Duration::from_secs(60), local_gcr_direct: Gcr::new(u32::MAX, Duration::from_secs(60), Some(u32::MAX)).unwrap(), local_gcr_broadcast: Gcr::new(u32::MAX, Duration::from_secs(60), Some(u32::MAX)) .unwrap(), @@ -185,8 +189,10 @@ impl HotShotMessageHook { /// # Panics /// If 100 < 0 #[must_use] - pub fn new() -> Self { - Self::default() + pub fn new(commit_interval: Duration) -> Self { + let mut default = Self::default(); + default.commit_interval = commit_interval; + default } /// Process a message against the moving average @@ -225,7 +231,7 @@ impl HotShotMessageHook { local_sample.add(message_len as f64); // If it's been a minute, - if local_sample.last_committed_time.elapsed() > Duration::from_secs(60) { + if local_sample.last_committed_time.elapsed() > self.commit_interval { // Commit the sample to the global average let value = local_sample.commit(); @@ -377,7 +383,7 @@ mod test { use super::*; #[test] - pub fn deduplication_broadcast() { + fn deduplication_broadcast() { // Create a new message hook let mut hook = HotShotMessageHook::default(); @@ -424,7 +430,7 @@ mod test { } #[test] - pub fn deduplication_direct() { + fn deduplication_direct() { // Create a new message hook let mut hook = HotShotMessageHook::default(); From 01323b075a250fb0b9e57bfd3e91faf1c06601c9 Mon Sep 17 00:00:00 2001 From: Rob Date: Fri, 1 Nov 2024 14:16:30 -0400 Subject: [PATCH 12/18] refactor --- Cargo.lock | 5 +- Cargo.toml | 7 + crates/hotshot/Cargo.toml | 1 + .../definition/message_hook.rs | 297 ++++++++++++------ 4 files changed, 205 insertions(+), 105 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 88530e41d6..891a841add 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1320,7 +1320,6 @@ dependencies = [ [[package]] name = "cdn-broker" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.2#363b6e3a160842de7bc57ded31f6370b409e922b" dependencies = [ "async-std", "cdn-proto", @@ -1344,7 +1343,6 @@ dependencies = [ [[package]] name = "cdn-client" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.2#363b6e3a160842de7bc57ded31f6370b409e922b" dependencies = [ "async-std", "cdn-proto", @@ -1360,7 +1358,6 @@ dependencies = [ [[package]] name = "cdn-marshal" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.2#363b6e3a160842de7bc57ded31f6370b409e922b" dependencies = [ "async-std", "cdn-proto", @@ -1374,7 +1371,6 @@ dependencies = [ [[package]] name = "cdn-proto" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.2#363b6e3a160842de7bc57ded31f6370b409e922b" dependencies = [ "anyhow", "ark-serialize", @@ -3144,6 +3140,7 @@ dependencies = [ "tokio", "toml", "tracing", + "tracing-subscriber 0.3.18", "twox-hash", "url", "utils", diff --git a/Cargo.toml b/Cargo.toml index b756fc55b2..f015052128 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -179,3 +179,10 @@ unexpected_cfgs = { level = "warn", check-cfg = [ 'cfg(async_executor_impl, values("tokio"))', 'cfg(hotshot_example)', ] } + + +[patch."https://github.com/EspressoSystems/Push-CDN"] +cdn-proto = { path = "../cdn/cdn-proto" } +cdn-marshal = { path = "../cdn/cdn-marshal" } +cdn-broker = { path = "../cdn/cdn-broker" } +cdn-client = { path = "../cdn/cdn-client" } diff --git a/crates/hotshot/Cargo.toml b/crates/hotshot/Cargo.toml index 3573298cf9..1603f3f180 100644 --- a/crates/hotshot/Cargo.toml +++ b/crates/hotshot/Cargo.toml @@ -61,6 +61,7 @@ parking_lot = "0.12" twox-hash = { version = "1", default-features = false } utils = { path = "../utils" } gcr = "0.1" +tracing-subscriber = "0.3" [target.'cfg(all(async_executor_impl = "tokio"))'.dependencies] tokio = { workspace = true } diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs index dfdef2936f..7215c7dc5a 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs @@ -5,7 +5,7 @@ use std::num::NonZeroUsize; use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::Arc; use std::time::{Duration, Instant}; -use std::u32; +use std::{cmp, u32}; use anyhow::{Context, Result}; use cdn_broker::reexports::def::hook::{HookResult, MessageHookDef}; @@ -26,66 +26,70 @@ enum MessageType { Direct, } -/// An average representing the number of bytes processed per second +/// An average representing the number of bytes processed per period struct Average { /// The number of bytes processed - num_bytes: f64, + num_bytes: Mutex, /// The number of samples - num_samples: u64, + num_samples: Mutex, + + /// The last committed value + last_committed_average: AtomicU32, } impl Average { /// Create a new `Average` instance fn new() -> Self { Self { - num_bytes: 0.0, - num_samples: 0, + num_bytes: Mutex::new(0.0), + num_samples: Mutex::new(0), + last_committed_average: AtomicU32::new(0), } } /// Add a sample to the average - fn add(&mut self, num: f64) { - // Add the bytes and increment the number of samples - self.num_bytes = self.num_bytes + num; - self.num_samples = self.num_samples.saturating_add(1); + fn add(&self, num: f64) { + let mut num_bytes = self.num_bytes.lock(); + *num_bytes += num; + + let mut num_samples = self.num_samples.lock(); + *num_samples += 1; } - /// Finalize the average, resetting the internal state and returning the new average - fn commit(&mut self) -> f64 { - // Calculate the new average - let value = self.num_bytes / self.num_samples as f64; + /// Get the last committed average + fn get_last_committed_average(&self) -> u32 { + self.last_committed_average.load(Ordering::Relaxed) + } - // Reset the internal state - self.num_bytes = 0.0; - self.num_samples = 0; + /// Finalize the average, resetting the internal state and caching the new average. + /// Returns `true` if we committed a new average, `false` otherwise. + fn commit_if_necessary(&self, num_required_samples: usize) -> bool { + let mut num_samples = self.num_samples.lock(); - // Return the new average - value - } -} + // Return early if we don't have enough samples + if *num_samples < num_required_samples as u64 { + return false; + } -/// A wrapper around an average that caches the last calculated value -#[derive(Clone)] -struct CachedAverage { - /// The inner average - average: Arc>, + // Calculate the new average + let mut num_bytes = self.num_bytes.lock(); + let new_average = (*num_bytes / *num_samples as f64) as u32; - /// The last calculated value - last_calculated: Arc, -} + // Reset the internal state + *num_bytes = 0.0; + *num_samples = 0; -impl CachedAverage { - /// Create a new `CachedAverage` instance - fn new() -> Self { - Self { - average: Arc::new(Mutex::new(Average::new())), - last_calculated: Arc::new(AtomicU32::new(0)), - } + // Cache the new average + self.last_committed_average + .store(new_average as u32, Ordering::Relaxed); + + // Return the new average + true } } -/// A sample representing the number of bytes processed per second +/// A sample representing the number of bytes processed per period #[derive(Clone)] pub struct Sample { /// The number of bytes processed @@ -109,14 +113,26 @@ impl Sample { self.num_bytes += num; } - /// Commit the sample, returning the number of bytes processed per second and - /// resetting the internal state - fn commit(&mut self) -> f64 { + /// Commit the sample if necessary, returning the number of bytes processed per commit interval + /// and resetting the internal state if we did. + fn commit_if_necessary(&mut self, commit_interval: Duration) -> Option { + // Get the elapsed time let elapsed = self.last_committed_time.elapsed(); + + // Return early if we aren't past the commit interval + if elapsed < commit_interval { + return None; + } + + // Calculate the new average + let value = self.num_bytes / elapsed.div_duration_f64(commit_interval); + + // Reset the internal state self.last_committed_time = Instant::now(); - let value = self.num_bytes / elapsed.as_secs() as f64; self.num_bytes = 0.0; - value + + // Return the new average + Some(value) } } @@ -141,11 +157,11 @@ pub struct HotShotMessageHook { /// from reconnecting and using a brand new GCR instance (empty rate limit) dropped_gcr_cache: Arc>>, - /// The global average number of bytes per second for direct messages - global_average_direct_bps: CachedAverage, + /// The global average number of bytes per period for direct messages + global_average_direct_bps: Arc, - /// The global average number of bytes per second for broadcast messages - global_average_broadcast_bps: CachedAverage, + /// The global average number of bytes per period for broadcast messages + global_average_broadcast_bps: Arc, /// The local GCR instance for direct messages local_gcr_direct: Gcr, @@ -164,6 +180,17 @@ impl Default for HotShotMessageHook { /// # Panics /// If 100 < 0 fn default() -> Self { + Self::new(Duration::from_secs(60), u32::MAX) + } +} + +impl HotShotMessageHook { + /// Create a new `HotShotMessageHook` + /// + /// # Panics + /// If 100 < 0 + #[must_use] + pub fn new(period: Duration, starting_rate: u32) -> Self { Self { message_hash_cache: LruCache::new(NonZeroUsize::new(100).unwrap()), num_hooks: Arc::new(()), @@ -171,29 +198,15 @@ impl Default for HotShotMessageHook { dropped_gcr_cache: Arc::new(Mutex::new(LruCache::new( NonZeroUsize::new(1000).unwrap(), ))), - commit_interval: Duration::from_secs(60), - local_gcr_direct: Gcr::new(u32::MAX, Duration::from_secs(60), Some(u32::MAX)).unwrap(), - local_gcr_broadcast: Gcr::new(u32::MAX, Duration::from_secs(60), Some(u32::MAX)) - .unwrap(), + commit_interval: period, + local_gcr_direct: Gcr::new(starting_rate, period, Some(u32::MAX)).unwrap(), + local_gcr_broadcast: Gcr::new(starting_rate, period, Some(u32::MAX)).unwrap(), local_sample_direct_bps: Sample::new(), local_sample_broadcast_bps: Sample::new(), - global_average_direct_bps: CachedAverage::new(), - global_average_broadcast_bps: CachedAverage::new(), + global_average_direct_bps: Arc::new(Average::new()), + global_average_broadcast_bps: Arc::new(Average::new()), } } -} - -impl HotShotMessageHook { - /// Create a new `HotShotMessageHook` - /// - /// # Panics - /// If 100 < 0 - #[must_use] - pub fn new(commit_interval: Duration) -> Self { - let mut default = Self::default(); - default.commit_interval = commit_interval; - default - } /// Process a message against the moving average /// Returns whether or not the message should be skipped. @@ -207,20 +220,19 @@ impl HotShotMessageHook { MessageType::Broadcast => ( &mut self.local_sample_broadcast_bps, &mut self.local_gcr_broadcast, - &mut self.global_average_broadcast_bps, + &self.global_average_broadcast_bps, ), MessageType::Direct => ( &mut self.local_sample_direct_bps, &mut self.local_gcr_direct, - &mut self.global_average_direct_bps, + &self.global_average_direct_bps, ), }; // Check against the `GCR` instance, skipping if we're rate limited - // If we hit some other request error (like parameter error), we'll process - // the message anyway + // If we hit a parameter error, we'll process the message anyway if let Err(err) = gcr.request(message_len as u32) { - if let GcrRequestError::DeniedFor(_) = err { + if !matches!(err, GcrRequestError::ParametersOutOfRange(_)) { return HookResult::SkipMessage; } @@ -230,35 +242,30 @@ impl HotShotMessageHook { // Add the message to our local sample local_sample.add(message_len as f64); - // If it's been a minute, - if local_sample.last_committed_time.elapsed() > self.commit_interval { - // Commit the sample to the global average - let value = local_sample.commit(); - - // Store the new average - let mut global_average_guard = global_average.average.lock(); - global_average_guard.add(value); - - // If we've collected enough samples, commit the average - if global_average_guard.num_samples >= Arc::strong_count(&self.num_hooks) as u64 { - // Commit the average - let new_average = global_average_guard.commit(); - - // Update the last calculated value - global_average - .last_calculated - .store(new_average as u32, Ordering::Relaxed); - } - drop(global_average_guard); - - // Update the `Gcr` instance to be double the last calculated average - let new_global_average = global_average.last_calculated.load(Ordering::Relaxed); - if let Err(e) = gcr.adjust( - new_global_average.saturating_mul(2), - Duration::from_secs(60), - Some(new_global_average.saturating_mul(4)), - ) { - warn!("Failed to adjust GCR instance: {e}"); + // Commit the local sample if necessary. If we did, update the global average + // and adjust our GCR instance + if let Some(local_average) = local_sample.commit_if_necessary(self.commit_interval) { + // Add the local average to the global average + global_average.add(local_average); + + // Commit the global average if we have enough samples + global_average.commit_if_necessary(Arc::strong_count(&self.num_hooks) - 1); + + // Get the global average + let last_committed_global_average = global_average.get_last_committed_average(); + + // If the global average is greater than 0, update our GCR instance + if last_committed_global_average > 0 { + // Update our GCR instance such that: + // - `rate` is 2 * the global average + // - `max_burst` is 4 * the global average + if let Err(e) = gcr.adjust( + cmp::max(last_committed_global_average.saturating_mul(2), 1000), + self.commit_interval, + Some(u32::MAX), + ) { + warn!("Failed to adjust GCR instance: {e}"); + } } } @@ -380,10 +387,98 @@ impl Drop for HotShotMessageHook { #[cfg(test)] mod test { + use std::thread::sleep; + use super::*; #[test] - fn deduplication_broadcast() { + fn test_hook_drop() { + // Create a base hook + let base_hook = HotShotMessageHook::new(Duration::from_millis(100), 100); + + // Clone the user hook + let mut user_hook = base_hook.clone(); + user_hook.set_identifier(1); + + // Consume u32::MAX units of bandwidth + user_hook.process_against_average(u32::MAX as usize, MessageType::Broadcast); + + // Drop the user hook + drop(user_hook); + + // Create a new hook with the same identifier + let mut new_hook = base_hook.clone(); + new_hook.set_identifier(1); + + // Make sure we can't process any messages + assert_eq!( + new_hook.process_against_average(100, MessageType::Broadcast), + HookResult::SkipMessage + ); + } + + #[test] + fn test_sample() { + // Create a new sample + let mut sample = Sample::new(); + + // Add 100 bytes + sample.add(100.0); + + // Make sure we do not commit if we haven't waited long enough + assert_eq!(sample.commit_if_necessary(Duration::from_millis(100)), None); + + // Wait 100ms + sleep(Duration::from_millis(100)); + + // Make sure we do commit + let commit = sample + .commit_if_necessary(Duration::from_millis(100)) + .expect("Failed to commit sample"); + + // Make sure the bytes per period is approximately correct + assert!((commit - 100.0).abs() < 5.0); + + // Make sure the state is reset + assert_eq!(sample.num_bytes, 0.0); + assert!(sample.last_committed_time.elapsed() < Duration::from_millis(10)); + } + + #[test] + fn test_average() { + // Create a new average + let average = Average::new(); + + // Test that we don't commit with too few samples + assert_eq!(average.commit_if_necessary(1), false); + + // Add 200 bytes/period to the average + average.add(50.0); + average.add(150.0); + + // Make sure we do commit + assert!(average.commit_if_necessary(1)); + + // Make sure the bytes per period is approximately correct + assert_eq!(average.get_last_committed_average(), 100); + + // Make sure the internal state is reset + assert_eq!(*average.num_bytes.lock(), 0.0); + assert_eq!(*average.num_samples.lock(), 0); + + // Do some more adding + average.add(0.0); + average.add(10.0); + + // Make sure we do commit again + assert!(average.commit_if_necessary(2)); + + // Make sure the bytes per period is approximately correct + assert_eq!(average.get_last_committed_average(), 5); + } + + #[test] + fn test_deduplication_broadcast() { // Create a new message hook let mut hook = HotShotMessageHook::default(); @@ -430,7 +525,7 @@ mod test { } #[test] - fn deduplication_direct() { + fn test_deduplication_direct() { // Create a new message hook let mut hook = HotShotMessageHook::default(); From fc3c9f568b479509f5b27292cbd24501e940503d Mon Sep 17 00:00:00 2001 From: Rob Date: Fri, 1 Nov 2024 14:46:22 -0400 Subject: [PATCH 13/18] `fmt` --- Cargo.lock | 4 ++++ Cargo.toml | 17 +++++------------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 49bb9bf1fe..0c69b1f5c4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1320,6 +1320,7 @@ dependencies = [ [[package]] name = "cdn-broker" version = "0.4.0" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.3#f4c54c9055b9f958eacf7c5b1759a559910893cc" dependencies = [ "async-std", "cdn-proto", @@ -1343,6 +1344,7 @@ dependencies = [ [[package]] name = "cdn-client" version = "0.4.0" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.3#f4c54c9055b9f958eacf7c5b1759a559910893cc" dependencies = [ "async-std", "cdn-proto", @@ -1358,6 +1360,7 @@ dependencies = [ [[package]] name = "cdn-marshal" version = "0.4.0" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.3#f4c54c9055b9f958eacf7c5b1759a559910893cc" dependencies = [ "async-std", "cdn-proto", @@ -1371,6 +1374,7 @@ dependencies = [ [[package]] name = "cdn-proto" version = "0.4.0" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.3#f4c54c9055b9f958eacf7c5b1759a559910893cc" dependencies = [ "anyhow", "ark-serialize", diff --git a/Cargo.toml b/Cargo.toml index 3feb7e4325..ce276fd907 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -118,10 +118,10 @@ anyhow = "1" # Push CDN imports -cdn-client = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.2" } -cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.2" } -cdn-marshal = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.2" } -cdn-proto = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.2" } +cdn-client = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.3" } +cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.3" } +cdn-marshal = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.3" } +cdn-proto = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.3" } ### Profiles ### @@ -178,11 +178,4 @@ unexpected_cfgs = { level = "warn", check-cfg = [ 'cfg(async_executor_impl, values("async-std"))', 'cfg(async_executor_impl, values("tokio"))', 'cfg(hotshot_example)', -] } - - -[patch."https://github.com/EspressoSystems/Push-CDN"] -cdn-proto = { path = "../cdn/cdn-proto" } -cdn-marshal = { path = "../cdn/cdn-marshal" } -cdn-broker = { path = "../cdn/cdn-broker" } -cdn-client = { path = "../cdn/cdn-client" } +] } \ No newline at end of file From abfb9da128e2b9691acfcb33572e0a397eee57ad Mon Sep 17 00:00:00 2001 From: Rob Date: Fri, 1 Nov 2024 16:00:31 -0400 Subject: [PATCH 14/18] lints --- crates/example-types/Cargo.toml | 7 +++++++ crates/hotshot/src/lib.rs | 4 ++-- .../push_cdn_network/definition/message_hook.rs | 14 +++++++++----- crates/hotshot/src/types/handle.rs | 2 +- crates/task-impls/src/harness.rs | 4 ++-- crates/task-impls/src/helpers.rs | 6 +++--- crates/testing/Cargo.toml | 1 + crates/types/src/data.rs | 4 ++-- crates/types/src/traits/states.rs | 4 ++-- crates/types/src/vid.rs | 4 ++-- 10 files changed, 31 insertions(+), 19 deletions(-) diff --git a/crates/example-types/Cargo.toml b/crates/example-types/Cargo.toml index 65dd60d288..e55d756685 100644 --- a/crates/example-types/Cargo.toml +++ b/crates/example-types/Cargo.toml @@ -42,3 +42,10 @@ reqwest = { workspace = true } tokio = { workspace = true } [target.'cfg(all(async_executor_impl = "async-std"))'.dependencies] async-std = { workspace = true } + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = [ + 'cfg(async_executor_impl, values("async-std"))', + 'cfg(async_executor_impl, values("tokio"))', + 'cfg(hotshot_example)', +] } diff --git a/crates/hotshot/src/lib.rs b/crates/hotshot/src/lib.rs index 08b1ef1548..af7e210da2 100644 --- a/crates/hotshot/src/lib.rs +++ b/crates/hotshot/src/lib.rs @@ -1024,9 +1024,9 @@ impl HotShotInitializer { /// /// # Arguments /// * `start_view` - The minimum view number that we are confident won't lead to a double vote - /// after restart. + /// after restart. /// * `validated_state` - Optional validated state that if given, will be used to construct the - /// `SystemContext`. + /// `SystemContext`. #[allow(clippy::too_many_arguments)] pub fn from_reload( anchor_leaf: Leaf, diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs index 7215c7dc5a..ce01f48e33 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs @@ -1,11 +1,14 @@ #![allow(clippy::unnecessary_wraps)] +#![allow(clippy::cast_possible_truncation)] +#![allow(clippy::cast_sign_loss)] +#![allow(clippy::cast_precision_loss)] +use std::cmp; use std::hash::Hasher; use std::num::NonZeroUsize; use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::Arc; use std::time::{Duration, Instant}; -use std::{cmp, u32}; use anyhow::{Context, Result}; use cdn_broker::reexports::def::hook::{HookResult, MessageHookDef}; @@ -35,6 +38,7 @@ struct Average { num_samples: Mutex, /// The last committed value + #[allow(clippy::struct_field_names)] last_committed_average: AtomicU32, } @@ -82,7 +86,7 @@ impl Average { // Cache the new average self.last_committed_average - .store(new_average as u32, Ordering::Relaxed); + .store(new_average, Ordering::Relaxed); // Return the new average true @@ -440,7 +444,7 @@ mod test { assert!((commit - 100.0).abs() < 5.0); // Make sure the state is reset - assert_eq!(sample.num_bytes, 0.0); + assert!(sample.num_bytes == 0.0); assert!(sample.last_committed_time.elapsed() < Duration::from_millis(10)); } @@ -450,7 +454,7 @@ mod test { let average = Average::new(); // Test that we don't commit with too few samples - assert_eq!(average.commit_if_necessary(1), false); + assert!(!average.commit_if_necessary(1)); // Add 200 bytes/period to the average average.add(50.0); @@ -463,7 +467,7 @@ mod test { assert_eq!(average.get_last_committed_average(), 100); // Make sure the internal state is reset - assert_eq!(*average.num_bytes.lock(), 0.0); + assert!(*average.num_bytes.lock() == 0.0); assert_eq!(*average.num_samples.lock(), 0); // Do some more adding diff --git a/crates/hotshot/src/types/handle.rs b/crates/hotshot/src/types/handle.rs index 735c219420..04c851c2c4 100644 --- a/crates/hotshot/src/types/handle.rs +++ b/crates/hotshot/src/types/handle.rs @@ -222,7 +222,7 @@ impl + 'static, V: Versions> /// there are two cleaner solutions: /// - make the stream generic and in nodetypes or nodeimpelmentation /// - type wrapper - /// NOTE: this is only used for sanity checks in our tests + /// NOTE: this is only used for sanity checks in our tests #[must_use] pub fn internal_event_stream_receiver_known_impl(&self) -> Receiver>> { self.internal_event_stream.1.activate_cloned() diff --git a/crates/task-impls/src/harness.rs b/crates/task-impls/src/harness.rs index 16e8a273b8..b013b6dc5d 100644 --- a/crates/task-impls/src/harness.rs +++ b/crates/task-impls/src/harness.rs @@ -27,7 +27,7 @@ pub struct TestHarnessState { /// # Arguments /// * `event_stream` - if given, will be used to register the task builder. /// * `allow_extra_output` - whether to allow an extra output after we've seen all expected -/// outputs. Should be `false` in most cases. +/// outputs. Should be `false` in most cases. /// /// # Panics /// Panics if any state the test expects is not set. Panicking causes a test failure @@ -82,7 +82,7 @@ pub async fn run_harness> + Send /// /// # Arguments /// * `allow_extra_output` - whether to allow an extra output after we've seen all expected -/// outputs. Should be `false` in most cases. +/// outputs. Should be `false` in most cases. /// /// # Panics /// Will panic to fail the test when it receives and unexpected event diff --git a/crates/task-impls/src/helpers.rs b/crates/task-impls/src/helpers.rs index 28d59b2038..5da3d831e7 100644 --- a/crates/task-impls/src/helpers.rs +++ b/crates/task-impls/src/helpers.rs @@ -218,9 +218,9 @@ impl Default for LeafChainTraversalOutcome { /// [HotStuff](https://arxiv.org/pdf/1803.05069) section 5: /// /// > When a node b* carries a QC that refers to a direct parent, i.e., b*.justify.node = b*.parent, -/// we say that it forms a One-Chain. Denote by b'' = b*.justify.node. Node b* forms a Two-Chain, -/// if in addition to forming a One-Chain, b''.justify.node = b''.parent. -/// It forms a Three-Chain, if b'' forms a Two-Chain. +/// > we say that it forms a One-Chain. Denote by b'' = b*.justify.node. Node b* forms a Two-Chain, +/// > if in addition to forming a One-Chain, b''.justify.node = b''.parent. +/// > It forms a Three-Chain, if b'' forms a Two-Chain. /// /// We follow this exact logic to determine if we are able to reach a commit and a decide. A commit /// is reached when we have a two chain, and a decide is reached when we have a three chain. diff --git a/crates/testing/Cargo.toml b/crates/testing/Cargo.toml index bdb24efcdd..50b0231afe 100644 --- a/crates/testing/Cargo.toml +++ b/crates/testing/Cargo.toml @@ -12,6 +12,7 @@ slow-tests = [] gpu-vid = ["hotshot-types/gpu-vid"] rewind = ["hotshot/rewind"] test-srs = ["jf-vid/test-srs"] +broken_3_chain_fixed = [] [dependencies] automod = "1.0.14" diff --git a/crates/types/src/data.rs b/crates/types/src/data.rs index 71b682aa19..38092e0969 100644 --- a/crates/types/src/data.rs +++ b/crates/types/src/data.rs @@ -373,7 +373,7 @@ pub struct QuorumProposal { /// Possible timeout or view sync certificate. /// - A timeout certificate is only present if the justify_qc is not for the preceding view /// - A view sync certificate is only present if the justify_qc and timeout_cert are not - /// present. + /// present. pub proposal_certificate: Option>, } @@ -817,7 +817,7 @@ pub mod null_block { #[memoize(SharedCache, Capacity: 10)] #[must_use] pub fn commitment(num_storage_nodes: usize) -> Option { - let vid_result = vid_scheme(num_storage_nodes).commit_only(&Vec::new()); + let vid_result = vid_scheme(num_storage_nodes).commit_only(Vec::new()); match vid_result { Ok(r) => Some(r), diff --git a/crates/types/src/traits/states.rs b/crates/types/src/traits/states.rs index ce93502361..f152ef99cb 100644 --- a/crates/types/src/traits/states.rs +++ b/crates/types/src/traits/states.rs @@ -41,8 +41,8 @@ pub trait StateDelta: /// * The type of block that modifies this type of state ([`BlockPayload`](`ValidatedStates:: /// BlockPayload`)) /// * The ability to validate that a block header is actually a valid extension of this state and -/// produce a new state, with the modifications from the block applied -/// ([`validate_and_apply_header`](`ValidatedState::validate_and_apply_header)) +/// produce a new state, with the modifications from the block applied +/// ([`validate_and_apply_header`](`ValidatedState::validate_and_apply_header`)) pub trait ValidatedState: Serialize + DeserializeOwned + Debug + Default + PartialEq + Eq + Send + Sync + Clone { diff --git a/crates/types/src/vid.rs b/crates/types/src/vid.rs index 7d3bfb21a7..1bc5dd45b7 100644 --- a/crates/types/src/vid.rs +++ b/crates/types/src/vid.rs @@ -321,8 +321,8 @@ impl Precomputable for VidSchemeType { /// /// Foreign type rules prevent us from doing: /// - `impl From> for VidDisperse` -/// - `impl VidDisperse {...}` -/// and similarly for `Statement`. +/// - `impl VidDisperse {...}` and similarly for `Statement`. +/// /// Thus, we accomplish type conversion via functions. fn vid_disperse_conversion(vid_disperse: VidDisperse) -> VidDisperse { VidDisperse { From b1080d55172efc760db672db780be575c2b4100a Mon Sep 17 00:00:00 2001 From: Rob Date: Thu, 14 Nov 2024 16:07:07 -0500 Subject: [PATCH 15/18] update `Cargo.toml` --- Cargo.lock | 8 -------- Cargo.toml | 11 +---------- crates/example-types/Cargo.toml | 8 -------- 3 files changed, 1 insertion(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 93e96618e7..d0f9a2a547 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2974,17 +2974,10 @@ name = "hotshot-example-types" version = "0.5.79" dependencies = [ "anyhow", - "async-broadcast", "async-lock 3.4.0", "async-trait", - "bitvec", "committable", - "either", - "ethereum-types", - "futures", "hotshot", - "hotshot-builder-api", - "hotshot-task", "hotshot-task-impls", "hotshot-types", "jf-vid", @@ -2996,7 +2989,6 @@ dependencies = [ "thiserror 2.0.3", "time 0.3.36", "tokio", - "tracing", "url", "vbs", ] diff --git a/Cargo.toml b/Cargo.toml index f500c61cba..1a04e367cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -119,11 +119,7 @@ cdn-client = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.3 cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.3" } cdn-marshal = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.3" } cdn-proto = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.3" } - -### Profiles -### -### Note: these only apply to example executables or tests built from within this crate. They have -### no effect on crates that depend on this crate. +### Profiles###### Note: these only apply to example executables or tests built from within this crate. They have### no effect on crates that depend on this crate. ## Apply some optimizations to test dependencies in debug/test builds @@ -171,8 +167,3 @@ rust_2018_idioms = { level = "warn", priority = -1 } # TODO change to deny missing_docs = "warn" warnings = "warn" -unexpected_cfgs = { level = "warn", check-cfg = [ - 'cfg(async_executor_impl, values("async-std"))', - 'cfg(async_executor_impl, values("tokio"))', - 'cfg(hotshot_example)', -] } diff --git a/crates/example-types/Cargo.toml b/crates/example-types/Cargo.toml index c9fcc541f5..d0791ea285 100644 --- a/crates/example-types/Cargo.toml +++ b/crates/example-types/Cargo.toml @@ -13,17 +13,10 @@ gpu-vid = ["hotshot-task-impls/gpu-vid"] [dependencies] anyhow = { workspace = true } -async-broadcast = { workspace = true } async-lock = { workspace = true } async-trait = { workspace = true } -bitvec = { workspace = true } committable = { workspace = true } -either = { workspace = true } -ethereum-types = { workspace = true } -futures = { workspace = true } hotshot = { path = "../hotshot" } -hotshot-builder-api = { path = "../builder-api" } -hotshot-task = { path = "../task" } hotshot-task-impls = { path = "../task-impls", version = "0.5.36", default-features = false } hotshot-types = { path = "../types" } jf-vid = { workspace = true } @@ -35,6 +28,5 @@ sha3 = "^0.10" thiserror = { workspace = true } time = { workspace = true } tokio = { workspace = true } -tracing = { workspace = true } url = { workspace = true } vbs = { workspace = true } From 5254455498779709b9f6d797490e655861f9edc4 Mon Sep 17 00:00:00 2001 From: Rob Date: Fri, 15 Nov 2024 14:19:07 -0500 Subject: [PATCH 16/18] fix connection closing --- Cargo.lock | 66 ++++--------------- Cargo.toml | 14 ++-- crates/hotshot/Cargo.toml | 1 - .../definition/message_hook.rs | 48 ++++++-------- .../traits/networking/push_cdn_network/mod.rs | 8 ++- 5 files changed, 48 insertions(+), 89 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d0f9a2a547..cf029e0041 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1200,9 +1200,9 @@ dependencies = [ [[package]] name = "capnpc" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d13cb6e2643fd1f9fb804ba938323636ef52e07d6e495e372d933ad0cb98207" +checksum = "1aa3d5f01e69ed11656d2c7c47bf34327ea9bfb5c85c7de787fcd7b6c5e45b61" dependencies = [ "capnp", ] @@ -1228,14 +1228,14 @@ dependencies = [ [[package]] name = "cdn-broker" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.3#f4c54c9055b9f958eacf7c5b1759a559910893cc" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.5#0c095fffe58d9d5b0d4d7efb9d0a5ef39bef2dff" dependencies = [ "cdn-proto", "clap", "console-subscriber", "dashmap", "derivative", - "jf-signature 0.1.0", + "jf-signature", "lazy_static", "local-ip-address", "parking_lot", @@ -1251,11 +1251,12 @@ dependencies = [ [[package]] name = "cdn-client" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.3#f4c54c9055b9f958eacf7c5b1759a559910893cc" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.5#0c095fffe58d9d5b0d4d7efb9d0a5ef39bef2dff" dependencies = [ "cdn-proto", "clap", - "jf-signature 0.1.0", + "derive_more 1.0.0", + "jf-signature", "parking_lot", "rand 0.8.5", "tokio", @@ -1266,11 +1267,11 @@ dependencies = [ [[package]] name = "cdn-marshal" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.3#f4c54c9055b9f958eacf7c5b1759a559910893cc" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.5#0c095fffe58d9d5b0d4d7efb9d0a5ef39bef2dff" dependencies = [ "cdn-proto", "clap", - "jf-signature 0.1.0", + "jf-signature", "tokio", "tracing", "tracing-subscriber 0.3.18", @@ -1279,7 +1280,7 @@ dependencies = [ [[package]] name = "cdn-proto" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.3#f4c54c9055b9f958eacf7c5b1759a559910893cc" +source = "git+https://github.com/EspressoSystems/Push-CDN?tag=0.5.5#0c095fffe58d9d5b0d4d7efb9d0a5ef39bef2dff" dependencies = [ "anyhow", "ark-serialize", @@ -1287,7 +1288,8 @@ dependencies = [ "capnp", "capnpc", "derivative", - "jf-signature 0.1.0", + "derive_more 1.0.0", + "jf-signature", "kanal", "lazy_static", "mnemonic", @@ -2945,7 +2947,6 @@ dependencies = [ "tokio", "tracing", "tracing-subscriber 0.3.18", - "twox-hash", "url", "utils", "vbs", @@ -3087,7 +3088,7 @@ dependencies = [ "hotshot-types", "jf-crhf", "jf-rescue", - "jf-signature 0.2.0", + "jf-signature", "jf-utils", "rand_chacha 0.3.1", "serde", @@ -3208,7 +3209,7 @@ dependencies = [ "ethereum-types", "futures", "jf-pcs", - "jf-signature 0.2.0", + "jf-signature", "jf-utils", "jf-vid", "lazy_static", @@ -3985,35 +3986,6 @@ dependencies = [ "jf-utils", ] -[[package]] -name = "jf-signature" -version = "0.1.0" -source = "git+https://github.com/EspressoSystems/jellyfish?tag=0.4.5#7d71dbeff14f1a501b0b0dc391f1dffa1b8374fb" -dependencies = [ - "ark-bls12-381", - "ark-bn254", - "ark-ec", - "ark-ff", - "ark-serialize", - "ark-std", - "blst", - "derivative", - "digest 0.10.7", - "displaydoc", - "hashbrown 0.14.5", - "itertools 0.12.1", - "jf-crhf", - "jf-relation", - "jf-rescue", - "jf-utils", - "num-bigint", - "num-traits", - "serde", - "sha3", - "tagged-base64", - "zeroize", -] - [[package]] name = "jf-signature" version = "0.2.0" @@ -7968,16 +7940,6 @@ dependencies = [ "utf-8", ] -[[package]] -name = "twox-hash" -version = "1.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" -dependencies = [ - "cfg-if", - "static_assertions", -] - [[package]] name = "typeid" version = "1.0.2" diff --git a/Cargo.toml b/Cargo.toml index 1a04e367cb..e22dd4105f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -115,11 +115,15 @@ tokio = { version = "1", default-features = false, features = [ anyhow = "1" # Push CDN imports -cdn-client = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.3" } -cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.3" } -cdn-marshal = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.3" } -cdn-proto = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.3" } -### Profiles###### Note: these only apply to example executables or tests built from within this crate. They have### no effect on crates that depend on this crate. +cdn-client = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.5" } +cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.5" } +cdn-marshal = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.5" } +cdn-proto = { git = "https://github.com/EspressoSystems/Push-CDN", tag = "0.5.5" } + +### Profiles +### +### Note: these only apply to example executables or tests built from within this crate. They have +### no effect on crates that depend on this crate. ## Apply some optimizations to test dependencies in debug/test builds diff --git a/crates/hotshot/Cargo.toml b/crates/hotshot/Cargo.toml index 0372d45a5b..d1368af58a 100644 --- a/crates/hotshot/Cargo.toml +++ b/crates/hotshot/Cargo.toml @@ -49,7 +49,6 @@ blake3.workspace = true url = { workspace = true } num_enum = "0.7" parking_lot = "0.12" -twox-hash = { version = "1", default-features = false } utils = { path = "../utils" } gcr = "0.1" diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs index ce01f48e33..bed76552ef 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs @@ -4,7 +4,6 @@ #![allow(clippy::cast_precision_loss)] use std::cmp; -use std::hash::Hasher; use std::num::NonZeroUsize; use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::Arc; @@ -17,7 +16,6 @@ use gcr::{Gcr, GcrRequestError}; use lru::LruCache; use parking_lot::Mutex; use tracing::warn; -use twox_hash::xxh3::Hash64; /// The type of message being processed. Is used downstream to determine /// which sample and average to use when processing a message. @@ -143,9 +141,10 @@ impl Sample { /// The message hook for `HotShot` messages. Each user has a unique #[derive(Clone)] pub struct HotShotMessageHook { + // TODO: Potentially make use of this later /// The cache for message hashes. We use this to deduplicate a sliding window of /// 100 messages. - message_hash_cache: LruCache, + // message_hash_cache: LruCache, /// The reference counter so we can keep track of the number of hooks there are num_hooks: Arc<()>, @@ -196,7 +195,7 @@ impl HotShotMessageHook { #[must_use] pub fn new(period: Duration, starting_rate: u32) -> Self { Self { - message_hash_cache: LruCache::new(NonZeroUsize::new(100).unwrap()), + // message_hash_cache: LruCache::new(NonZeroUsize::new(100).unwrap()), num_hooks: Arc::new(()), identifier: rand::random(), dropped_gcr_cache: Arc::new(Mutex::new(LruCache::new( @@ -262,8 +261,10 @@ impl HotShotMessageHook { if last_committed_global_average > 0 { // Update our GCR instance such that: // - `rate` is 2 * the global average - // - `max_burst` is 4 * the global average + // - `max_burst` stays the same (the max u32) if let Err(e) = gcr.adjust( + // At the very least we want to allow 1000 bytes/period. This is fine because the max + // burst is quite high. cmp::max(last_committed_global_average.saturating_mul(2), 1000), self.commit_interval, Some(u32::MAX), @@ -276,27 +277,23 @@ impl HotShotMessageHook { HookResult::ProcessMessage } - /// Process against the local message cache. This is used to deduplicate messages. - /// Returns `true` if the message has been seen before, `false` otherwise. - /// - /// - `auxiliary_data` is used to take into account the message recipient or topics associated. - fn message_already_seen(&mut self, message: &[u8], auxiliary_data: &[u8]) -> bool { - // Calculate the hash of the message - let mut hasher = Hash64::default(); - hasher.write(message); - hasher.write(auxiliary_data); - - // Add it, returning if we've seen it before - self.message_hash_cache.put(hasher.finish(), ()).is_some() - } + // TODO: Potentially make use of this later + // /// Process against the local message cache. This is used to deduplicate messages. + // /// Returns `true` if the message has been seen before, `false` otherwise. + // /// + // /// - `auxiliary_data` is used to take into account the message recipient or topics associated. + // fn message_already_seen(&mut self, message: &[u8], auxiliary_data: &[u8]) -> bool { + // // Calculate the hash of the message + // let mut hasher = Hash64::default(); + // hasher.write(message); + // hasher.write(auxiliary_data); + + // // Add it, returning if we've seen it before + // self.message_hash_cache.put(hasher.finish(), ()).is_some() + // } /// Process incoming broadcast messages from the user fn process_broadcast_message(&mut self, broadcast: &mut Broadcast) -> Result { - // Skip the message if we've already seen it - if self.message_already_seen(&broadcast.message, &broadcast.topics) { - return Ok(HookResult::SkipMessage); - } - // Check against the average message rate if self.process_against_average(broadcast.message.len(), MessageType::Broadcast) != HookResult::ProcessMessage @@ -310,11 +307,6 @@ impl HotShotMessageHook { /// Process incoming direct messages from the user fn process_direct_message(&mut self, direct: &mut Direct) -> Result { - // Skip the message if we've already seen it - if self.message_already_seen(&direct.message, &direct.recipient) { - return Ok(HookResult::SkipMessage); - } - // Check against the average message rate if self.process_against_average(direct.message.len(), MessageType::Direct) != HookResult::ProcessMessage diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs b/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs index f9984db276..151437bcc4 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs @@ -48,7 +48,7 @@ use metrics::CdnMetricsValue; #[cfg(feature = "hotshot-testing")] use rand::{rngs::StdRng, RngCore, SeedableRng}; use tokio::{spawn, sync::mpsc::error::TrySendError, time::sleep}; -use tracing::error; +use tracing::{error, warn}; use super::NetworkError; @@ -320,7 +320,9 @@ impl ConnectedNetwork for PushCdnNetwork { /// Wait for the client to initialize the connection async fn wait_for_ready(&self) { - self.client.ensure_initialized().await; + if self.client.ensure_initialized().await.is_err() { + warn!("Failed to wait for CDN connection to initialize: connection has been manually closed"); + }; } /// TODO: shut down the networks. Unneeded for testing. @@ -329,7 +331,7 @@ impl ConnectedNetwork for PushCdnNetwork { 'a: 'b, Self: 'b, { - boxed_sync(async move {}) + boxed_sync(async move { self.client.close().await }) } /// Broadcast a message to all members of the quorum. From 115867c20a6086bda3d3568733e8fee13053a54f Mon Sep 17 00:00:00 2001 From: Rob Date: Fri, 15 Nov 2024 14:31:56 -0500 Subject: [PATCH 17/18] ignore deduplication test --- .../networking/push_cdn_network/definition/message_hook.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs index bed76552ef..0c1b173cd3 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/definition/message_hook.rs @@ -474,6 +474,7 @@ mod test { } #[test] + #[ignore] fn test_deduplication_broadcast() { // Create a new message hook let mut hook = HotShotMessageHook::default(); @@ -521,6 +522,7 @@ mod test { } #[test] + #[ignore] fn test_deduplication_direct() { // Create a new message hook let mut hook = HotShotMessageHook::default(); From e5e3315d1f221df68afa2c52bfaff8252d43e18a Mon Sep 17 00:00:00 2001 From: Rob Date: Wed, 8 Jan 2025 15:14:36 -0500 Subject: [PATCH 18/18] merge branch --- crates/hotshot/src/traits/networking/push_cdn_network/mod.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs b/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs index 0d604a07d2..d9896f5ee4 100644 --- a/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs +++ b/crates/hotshot/src/traits/networking/push_cdn_network/mod.rs @@ -11,7 +11,7 @@ pub mod metrics; #[cfg(feature = "hotshot-testing")] use std::sync::atomic::{AtomicBool, Ordering}; -use std::{collections::VecDeque, marker::PhantomData, sync::Arc}; +use std::{collections::VecDeque, sync::Arc}; #[cfg(feature = "hotshot-testing")] use std::{path::Path, time::Duration}; @@ -45,7 +45,6 @@ use hotshot_types::{ BoxSyncFuture, }; use metrics::CdnMetricsValue; -use num_enum::{IntoPrimitive, TryFromPrimitive}; use parking_lot::Mutex; #[cfg(feature = "hotshot-testing")] use rand::{rngs::StdRng, RngCore, SeedableRng};