tokio-xmpp: explicitly set default CryptoProvider in all examples

Jonas SchΓ€fer created

This way, we don't end up with breakage if rustls is built with more
than one provider enabled. This can (and does) happen if a transitive
dependency (such as reqwest *hinthint*) depends on a specific,
non-default rustls backend.

Change summary

tokio-xmpp/examples/contact_addr.rs     | 7 ++++++-
tokio-xmpp/examples/download_avatars.rs | 7 ++++++-
tokio-xmpp/examples/echo_bot.rs         | 7 ++++++-
tokio-xmpp/examples/echo_component.rs   | 7 ++++++-
tokio-xmpp/examples/echo_server.rs      | 6 ++++++
tokio-xmpp/examples/keep_connection.rs  | 6 ++++++
6 files changed, 36 insertions(+), 4 deletions(-)

Detailed changes

tokio-xmpp/examples/contact_addr.rs πŸ”—

@@ -2,7 +2,7 @@ use futures::stream::StreamExt;
 use std::env::args;
 use std::process::exit;
 use std::str::FromStr;
-use tokio_xmpp::{Client, IqRequest, IqResponse};
+use tokio_xmpp::{rustls, Client, IqRequest, IqResponse};
 use xmpp_parsers::{
     disco::{DiscoInfoQuery, DiscoInfoResult},
     jid::{BareJid, Jid},
@@ -14,6 +14,11 @@ use xmpp_parsers::{
 async fn main() {
     env_logger::init();
 
+    #[cfg(feature = "tls-rust")]
+    rustls::crypto::aws_lc_rs::default_provider()
+        .install_default()
+        .expect("failed to install rustls crypto provider");
+
     let args: Vec<String> = args().collect();
     if args.len() != 4 {
         println!("Usage: {} <jid> <password> <target>", args[0]);

tokio-xmpp/examples/download_avatars.rs πŸ”—

@@ -4,7 +4,7 @@ use std::fs::{create_dir_all, File};
 use std::io::{self, Write};
 use std::process::exit;
 use std::str::FromStr;
-use tokio_xmpp::{Client, Stanza};
+use tokio_xmpp::{rustls, Client, Stanza};
 use xmpp_parsers::{
     avatar::{Data as AvatarData, Metadata as AvatarMetadata},
     caps::{compute_disco, hash_caps, Caps},
@@ -26,6 +26,11 @@ use xmpp_parsers::{
 async fn main() {
     env_logger::init();
 
+    #[cfg(feature = "tls-rust")]
+    rustls::crypto::aws_lc_rs::default_provider()
+        .install_default()
+        .expect("failed to install rustls crypto provider");
+
     let args: Vec<String> = args().collect();
     if args.len() != 3 {
         println!("Usage: {} <jid> <password>", args[0]);

tokio-xmpp/examples/echo_bot.rs πŸ”—

@@ -2,7 +2,7 @@ use futures::stream::StreamExt;
 use std::env::args;
 use std::process::exit;
 use std::str::FromStr;
-use tokio_xmpp::Client;
+use tokio_xmpp::{rustls, Client};
 use xmpp_parsers::jid::{BareJid, Jid};
 use xmpp_parsers::message::{Lang, Message, MessageType};
 use xmpp_parsers::presence::{Presence, Show as PresenceShow, Type as PresenceType};
@@ -11,6 +11,11 @@ use xmpp_parsers::presence::{Presence, Show as PresenceShow, Type as PresenceTyp
 async fn main() {
     env_logger::init();
 
+    #[cfg(feature = "tls-rust")]
+    rustls::crypto::aws_lc_rs::default_provider()
+        .install_default()
+        .expect("failed to install rustls crypto provider");
+
     let args: Vec<String> = args().collect();
     if args.len() != 3 {
         println!("Usage: {} <jid> <password>", args[0]);

tokio-xmpp/examples/echo_component.rs πŸ”—

@@ -6,12 +6,17 @@ use xmpp_parsers::jid::Jid;
 use xmpp_parsers::message::{Lang, Message, MessageType};
 use xmpp_parsers::presence::{Presence, Show as PresenceShow, Type as PresenceType};
 
-use tokio_xmpp::{connect::DnsConfig, Component};
+use tokio_xmpp::{connect::DnsConfig, rustls, Component};
 
 #[tokio::main]
 async fn main() {
     env_logger::init();
 
+    #[cfg(feature = "tls-rust")]
+    rustls::crypto::aws_lc_rs::default_provider()
+        .install_default()
+        .expect("failed to install rustls crypto provider");
+
     let args: Vec<String> = args().collect();
     if args.len() < 3 || args.len() > 4 {
         println!("Usage: {} <jid> <password> [server:port]", args[0]);

tokio-xmpp/examples/echo_server.rs πŸ”—

@@ -4,11 +4,17 @@ use tokio::{self, io, net::TcpSocket};
 use tokio_xmpp::{
     minidom::Element,
     parsers::stream_features::StreamFeatures,
+    rustls,
     xmlstream::{accept_stream, StreamHeader, Timeouts},
 };
 
 #[tokio::main]
 async fn main() -> Result<(), io::Error> {
+    #[cfg(feature = "tls-rust")]
+    rustls::crypto::aws_lc_rs::default_provider()
+        .install_default()
+        .expect("failed to install rustls crypto provider");
+
     // TCP socket
     let address = "127.0.0.1:5222".parse().unwrap();
     let socket = TcpSocket::new_v4()?;

tokio-xmpp/examples/keep_connection.rs πŸ”—

@@ -26,6 +26,7 @@ use tokio_xmpp::{
         jid::{BareJid, Jid},
         ping,
     },
+    rustls,
     stanzastream::StanzaStream,
     xmlstream::Timeouts,
 };
@@ -34,6 +35,11 @@ use tokio_xmpp::{
 async fn main() {
     env_logger::init();
 
+    #[cfg(feature = "tls-rust")]
+    rustls::crypto::aws_lc_rs::default_provider()
+        .install_default()
+        .expect("failed to install rustls crypto provider");
+
     let args: Vec<String> = args().collect();
     if args.len() != 3 {
         println!("Usage: {} <jid> <password>", args[0]);