diff --git a/Cargo.lock b/Cargo.lock index 93374b8c77a7b..2c9ef61c0f4cf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2255,7 +2255,7 @@ dependencies = [ "bitflags 2.13.2", "cexpr", "clang-sys", - "itertools 0.10.5", + "itertools 0.13.0", "proc-macro2 1.0.107", "quote 1.0.47", "regex", @@ -9218,7 +9218,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" dependencies = [ "heck 0.5.0", - "itertools 0.10.5", + "itertools 0.14.0", "log", "multimap", "once_cell", @@ -9238,7 +9238,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" dependencies = [ "heck 0.5.0", - "itertools 0.10.5", + "itertools 0.14.0", "log", "multimap", "petgraph 0.8.3", @@ -9272,7 +9272,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools 0.14.0", "proc-macro2 1.0.107", "quote 1.0.47", "syn 2.0.119", @@ -9285,7 +9285,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools 0.14.0", "proc-macro2 1.0.107", "quote 1.0.47", "syn 2.0.119", @@ -10498,20 +10498,23 @@ dependencies = [ [[package]] name = "rumqttc" -version = "0.24.0" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1568e15fab2d546f940ed3a21f48bbbd1c494c90c99c4481339364a497f94a9" +checksum = "0feff8d882bff0b2fddaf99355a10336d43dd3ed44204f85ece28cf9626ab519" dependencies = [ "bytes", + "fixedbitset 0.5.7", "flume 0.11.0", "futures-util", "log", - "rustls-native-certs 0.7.0", + "rustls-native-certs 0.8.1", "rustls-pemfile 2.2.0", "rustls-webpki 0.102.8", - "thiserror 1.0.68", + "thiserror 2.0.18", "tokio", - "tokio-rustls 0.25.0", + "tokio-rustls 0.26.2", + "tokio-stream", + "tokio-util", ] [[package]] @@ -13582,6 +13585,7 @@ dependencies = [ "roaring", "rstest", "rumqttc", + "rustls 0.23.45", "seahash", "semver", "serde", diff --git a/Cargo.toml b/Cargo.toml index 2722310836f8e..118599c0718c6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -478,7 +478,9 @@ rdkafka = { workspace = true, features = ["curl-static", "tokio", "libz", "ssl", redis = { version = "0.32.4", default-features = false, features = ["connection-manager", "sentinel", "tokio-comp", "tokio-native-tls-comp"], optional = true } regex.workspace = true roaring = { version = "0.11.2", default-features = false, features = ["std"], optional = true } -rumqttc = { version = "0.24.0", default-features = false, features = ["use-rustls"], optional = true } +rumqttc = { version = "0.25.1", default-features = false, features = ["use-rustls-no-provider"], optional = true } +# Keep MQTT on Ring alongside Vector's other Rustls users, including in minimal builds. +rustls = { version = "0.23", default-features = false, features = ["logging", "ring", "std", "tls12"], optional = true } seahash = { version = "4.1.0", default-features = false } smallvec = { version = "1", default-features = false, features = ["union", "serde"] } snap = { version = "1.1.1", default-features = false } @@ -788,7 +790,7 @@ sources-kafka = ["dep:rdkafka"] sources-kubernetes_logs = ["vector-lib/file-source", "kubernetes", "transforms-reduce"] sources-logstash = ["sources-utils-net-tcp", "tokio-util/net"] sources-mongodb_metrics = ["dep:mongodb"] -sources-mqtt = ["dep:rumqttc"] +sources-mqtt = ["dep:rumqttc", "dep:rustls"] sources-nats = ["dep:async-nats", "dep:nkeys"] sources-nginx_metrics = ["dep:nom"] sources-okta = ["sources-utils-http-client"] @@ -996,7 +998,7 @@ sinks-kafka = ["dep:rdkafka"] sinks-keep = [] sinks-mezmo = [] sinks-loki = ["loki-logproto"] -sinks-mqtt = ["dep:rumqttc"] +sinks-mqtt = ["dep:rumqttc", "dep:rustls"] sinks-nats = ["dep:async-nats", "dep:nkeys"] sinks-new_relic_logs = ["sinks-http"] sinks-new_relic = [] diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 92a22a786b9ca..c249226c28622 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -293,6 +293,7 @@ fastrand,https://github.com/smol-rs/fastrand,Apache-2.0 OR MIT,Stjepan Glavina < ff,https://github.com/zkcrypto/ff,MIT OR Apache-2.0,"Sean Bowe , Jack Grigg " fiat-crypto,https://github.com/mit-plv/fiat-crypto,MIT OR Apache-2.0 OR BSD-1-Clause,Fiat Crypto library authors finl_unicode,https://github.com/dahosek/finl_unicode,MIT OR Apache-2.0,The finl_unicode Authors +fixedbitset,https://github.com/petgraph/fixedbitset,MIT OR Apache-2.0,bluss flatbuffers,https://github.com/google/flatbuffers,Apache-2.0,"Robert Winslow , FlatBuffers Maintainers" flate2,https://github.com/rust-lang/flate2-rs,MIT OR Apache-2.0,"Alex Crichton , Josh Triplett " float_eq,https://github.com/jtempest/float_eq-rs,MIT OR Apache-2.0,jtempest diff --git a/src/common/mqtt.rs b/src/common/mqtt.rs index 69d1472ae73ac..3dea8f0a0f8ff 100644 --- a/src/common/mqtt.rs +++ b/src/common/mqtt.rs @@ -125,3 +125,14 @@ impl MqttConnector { Ok(()) } } + +#[cfg(test)] +mod tests { + #[test] + fn tls_crypto_provider_is_unambiguous() { + // Rustls panics here if no provider, or both Ring and AWS-LC, are enabled. + let _config = rustls::ClientConfig::builder() + .with_root_certificates(rustls::RootCertStore::empty()) + .with_no_client_auth(); + } +}