Avoid enabling multiple rustls backends by accident
For this, we had to: - Make the choice(s) of backend explicit in tokio-xmpp features - Avoid picking a backend through transitive dependencies in xmpp (reqwest->hyper->rustls). In addition, we choose the default rustls backend by default and adapt the examples so that they can cope with either situation.
This commit is contained in:
parent
025e09aca6
commit
4e9e18444c
11 changed files with 134 additions and 15 deletions
|
|
@ -2,7 +2,12 @@ use futures::stream::StreamExt;
|
|||
use std::env::args;
|
||||
use std::process::exit;
|
||||
use std::str::FromStr;
|
||||
use tokio_xmpp::{rustls, Client, IqRequest, IqResponse};
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
any(feature = "tls-rust-aws_lc_rs", feature = "tls-rust-ring")
|
||||
))]
|
||||
use tokio_xmpp::rustls;
|
||||
use tokio_xmpp::{Client, IqRequest, IqResponse};
|
||||
use xmpp_parsers::{
|
||||
disco::{DiscoInfoQuery, DiscoInfoResult},
|
||||
jid::{BareJid, Jid},
|
||||
|
|
@ -14,11 +19,20 @@ use xmpp_parsers::{
|
|||
async fn main() {
|
||||
env_logger::init();
|
||||
|
||||
#[cfg(feature = "tls-rust")]
|
||||
#[cfg(all(feature = "tls-rust", feature = "tls-rust-aws_lc_rs"))]
|
||||
rustls::crypto::aws_lc_rs::default_provider()
|
||||
.install_default()
|
||||
.expect("failed to install rustls crypto provider");
|
||||
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
feature = "tls-rust-ring",
|
||||
not(feature = "tls-rust-aws_lc_rs")
|
||||
))]
|
||||
rustls::crypto::ring::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]);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,12 @@ use std::fs::{create_dir_all, File};
|
|||
use std::io::{self, Write};
|
||||
use std::process::exit;
|
||||
use std::str::FromStr;
|
||||
use tokio_xmpp::{rustls, Client, Stanza};
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
any(feature = "tls-rust-aws_lc_rs", feature = "tls-rust-ring")
|
||||
))]
|
||||
use tokio_xmpp::rustls;
|
||||
use tokio_xmpp::{Client, Stanza};
|
||||
use xmpp_parsers::{
|
||||
avatar::{Data as AvatarData, Metadata as AvatarMetadata},
|
||||
caps::{compute_disco, hash_caps, Caps},
|
||||
|
|
@ -26,11 +31,20 @@ use xmpp_parsers::{
|
|||
async fn main() {
|
||||
env_logger::init();
|
||||
|
||||
#[cfg(feature = "tls-rust")]
|
||||
#[cfg(all(feature = "tls-rust", feature = "tls-rust-aws_lc_rs"))]
|
||||
rustls::crypto::aws_lc_rs::default_provider()
|
||||
.install_default()
|
||||
.expect("failed to install rustls crypto provider");
|
||||
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
feature = "tls-rust-ring",
|
||||
not(feature = "tls-rust-aws_lc_rs")
|
||||
))]
|
||||
rustls::crypto::ring::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]);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,12 @@ use futures::stream::StreamExt;
|
|||
use std::env::args;
|
||||
use std::process::exit;
|
||||
use std::str::FromStr;
|
||||
use tokio_xmpp::{rustls, Client};
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
any(feature = "tls-rust-aws_lc_rs", feature = "tls-rust-ring")
|
||||
))]
|
||||
use tokio_xmpp::rustls;
|
||||
use tokio_xmpp::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,11 +16,20 @@ use xmpp_parsers::presence::{Presence, Show as PresenceShow, Type as PresenceTyp
|
|||
async fn main() {
|
||||
env_logger::init();
|
||||
|
||||
#[cfg(feature = "tls-rust")]
|
||||
#[cfg(all(feature = "tls-rust", feature = "tls-rust-aws_lc_rs"))]
|
||||
rustls::crypto::aws_lc_rs::default_provider()
|
||||
.install_default()
|
||||
.expect("failed to install rustls crypto provider");
|
||||
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
feature = "tls-rust-ring",
|
||||
not(feature = "tls-rust-aws_lc_rs")
|
||||
))]
|
||||
rustls::crypto::ring::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]);
|
||||
|
|
|
|||
|
|
@ -6,17 +6,31 @@ 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, rustls, Component};
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
any(feature = "tls-rust-aws_lc_rs", feature = "tls-rust-ring")
|
||||
))]
|
||||
use tokio_xmpp::rustls;
|
||||
use tokio_xmpp::{connect::DnsConfig, Component};
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
env_logger::init();
|
||||
|
||||
#[cfg(feature = "tls-rust")]
|
||||
#[cfg(all(feature = "tls-rust", feature = "tls-rust-aws_lc_rs"))]
|
||||
rustls::crypto::aws_lc_rs::default_provider()
|
||||
.install_default()
|
||||
.expect("failed to install rustls crypto provider");
|
||||
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
feature = "tls-rust-ring",
|
||||
not(feature = "tls-rust-aws_lc_rs")
|
||||
))]
|
||||
rustls::crypto::ring::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]);
|
||||
|
|
|
|||
|
|
@ -1,20 +1,33 @@
|
|||
use futures::{SinkExt, StreamExt};
|
||||
use tokio::{self, io, net::TcpSocket};
|
||||
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
any(feature = "tls-rust-aws_lc_rs", feature = "tls-rust-ring")
|
||||
))]
|
||||
use tokio_xmpp::rustls;
|
||||
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")]
|
||||
#[cfg(all(feature = "tls-rust", feature = "tls-rust-aws_lc_rs"))]
|
||||
rustls::crypto::aws_lc_rs::default_provider()
|
||||
.install_default()
|
||||
.expect("failed to install rustls crypto provider");
|
||||
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
feature = "tls-rust-ring",
|
||||
not(feature = "tls-rust-aws_lc_rs")
|
||||
))]
|
||||
rustls::crypto::ring::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()?;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,11 @@ use rand::{thread_rng, Rng};
|
|||
|
||||
use futures::StreamExt;
|
||||
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
any(feature = "tls-rust-aws_lc_rs", feature = "tls-rust-ring")
|
||||
))]
|
||||
use tokio_xmpp::rustls;
|
||||
use tokio_xmpp::{
|
||||
connect::{DnsConfig, StartTlsServerConnector},
|
||||
parsers::{
|
||||
|
|
@ -26,7 +31,6 @@ use tokio_xmpp::{
|
|||
jid::{BareJid, Jid},
|
||||
ping,
|
||||
},
|
||||
rustls,
|
||||
stanzastream::StanzaStream,
|
||||
xmlstream::Timeouts,
|
||||
};
|
||||
|
|
@ -35,11 +39,20 @@ use tokio_xmpp::{
|
|||
async fn main() {
|
||||
env_logger::init();
|
||||
|
||||
#[cfg(feature = "tls-rust")]
|
||||
#[cfg(all(feature = "tls-rust", feature = "tls-rust-aws_lc_rs"))]
|
||||
rustls::crypto::aws_lc_rs::default_provider()
|
||||
.install_default()
|
||||
.expect("failed to install rustls crypto provider");
|
||||
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
feature = "tls-rust-ring",
|
||||
not(feature = "tls-rust-aws_lc_rs")
|
||||
))]
|
||||
rustls::crypto::ring::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]);
|
||||
|
|
|
|||
Loading…
Reference in a new issue