Clean up tls-related feature flags
This provides a clear and consistent interface for selecting TLS-related
features on both (xmpp and tokio-xmpp) crates. All feature checks have
been revamped. All working combinations have been tested (including a
connectivity test + --all-features docs build) using:
```
set -xeuo pipefail
features=(aws_lc_rs ring ktls,aws_lc_rs ktls,ring aws_lc_rs,ring aws_lc_rs,ring,ktls native-tls rustls-any-backend)
export RUSTFLAGS=" -D warnings"
cargo test --no-default-features
cargo test
for feature in ${features[@]}; do
echo ">>> BUILDING with $feature" 2>&1
# Running code or building examples cannot succeed with rustls-any-backend.
features="starttls,$feature"
if [ "$feature" != 'rustls-any-backend' ]; then
if ! cargo test --no-default-features --features="$features"; then
echo ">>> BUILD FAILED for tls feature set: $features" >&2
exit 1
fi
set +e
timeout -sINT -p -k 2 3 cargo run --no-default-features --features="$features" --example keep_connection -- test@hub.sotecware.net "$(pass xmpp/test@hub.sotecware.net)"
status="$?"
set -e
if [ $status -ne 0 ]; then
echo ">>> keep_connection did not shut down cleanly! (status: $status)" >&2
exit 1
fi
else
if ! cargo build --no-default-features --features="$feature"; then
echo ">>> BUILD FAILED for tls feature set: $features" >&2
exit 1
fi
fi
done
RUSTDOCFLAGS="--cfg docsrs" RUSTFLAGS="--cfg xmpprs_doc_build" cargo +nightly doc -Zrustdoc-map --all-features
```
This commit is contained in:
parent
35a30b0486
commit
fc8b581593
15 changed files with 273 additions and 135 deletions
|
|
@ -2,10 +2,7 @@ use futures::stream::StreamExt;
|
|||
use std::env::args;
|
||||
use std::process::exit;
|
||||
use std::str::FromStr;
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
any(feature = "tls-rust-aws_lc_rs", feature = "tls-rust-ring")
|
||||
))]
|
||||
#[cfg(feature = "rustls-any-backend")]
|
||||
use tokio_xmpp::rustls;
|
||||
use tokio_xmpp::{Client, IqRequest, IqResponse};
|
||||
use xmpp_parsers::{
|
||||
|
|
@ -15,20 +12,22 @@ use xmpp_parsers::{
|
|||
server_info::ServerInfo,
|
||||
};
|
||||
|
||||
#[cfg(all(
|
||||
feature = "rustls-any-backend",
|
||||
not(any(feature = "aws_lc_rs", feature = "ring"))
|
||||
))]
|
||||
compile_error!("using rustls (e.g. via the ktls feature) needs an enabled rustls backend feature (either aws_lc_rs or ring).");
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
env_logger::init();
|
||||
|
||||
#[cfg(all(feature = "tls-rust", feature = "tls-rust-aws_lc_rs"))]
|
||||
#[cfg(all(feature = "aws_lc_rs", not(feature = "ring")))]
|
||||
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")
|
||||
))]
|
||||
#[cfg(all(feature = "ring"))]
|
||||
rustls::crypto::ring::default_provider()
|
||||
.install_default()
|
||||
.expect("failed to install rustls crypto provider");
|
||||
|
|
|
|||
|
|
@ -4,10 +4,7 @@ use std::fs::{create_dir_all, File};
|
|||
use std::io::{self, Write};
|
||||
use std::process::exit;
|
||||
use std::str::FromStr;
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
any(feature = "tls-rust-aws_lc_rs", feature = "tls-rust-ring")
|
||||
))]
|
||||
#[cfg(feature = "rustls-any-backend")]
|
||||
use tokio_xmpp::rustls;
|
||||
use tokio_xmpp::{Client, Stanza};
|
||||
use xmpp_parsers::{
|
||||
|
|
@ -27,20 +24,22 @@ use xmpp_parsers::{
|
|||
stanza_error::{DefinedCondition, ErrorType, StanzaError},
|
||||
};
|
||||
|
||||
#[cfg(all(
|
||||
feature = "rustls-any-backend",
|
||||
not(any(feature = "aws_lc_rs", feature = "ring"))
|
||||
))]
|
||||
compile_error!("using rustls (e.g. via the ktls feature) needs an enabled rustls backend feature (either aws_lc_rs or ring).");
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
env_logger::init();
|
||||
|
||||
#[cfg(all(feature = "tls-rust", feature = "tls-rust-aws_lc_rs"))]
|
||||
#[cfg(all(feature = "aws_lc_rs", not(feature = "ring")))]
|
||||
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")
|
||||
))]
|
||||
#[cfg(all(feature = "ring"))]
|
||||
rustls::crypto::ring::default_provider()
|
||||
.install_default()
|
||||
.expect("failed to install rustls crypto provider");
|
||||
|
|
|
|||
|
|
@ -2,30 +2,29 @@ use futures::stream::StreamExt;
|
|||
use std::env::args;
|
||||
use std::process::exit;
|
||||
use std::str::FromStr;
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
any(feature = "tls-rust-aws_lc_rs", feature = "tls-rust-ring")
|
||||
))]
|
||||
#[cfg(feature = "rustls-any-backend")]
|
||||
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};
|
||||
|
||||
#[cfg(all(
|
||||
feature = "rustls-any-backend",
|
||||
not(any(feature = "aws_lc_rs", feature = "ring"))
|
||||
))]
|
||||
compile_error!("using rustls (e.g. via the ktls feature) needs an enabled rustls backend feature (either aws_lc_rs or ring).");
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
env_logger::init();
|
||||
|
||||
#[cfg(all(feature = "tls-rust", feature = "tls-rust-aws_lc_rs"))]
|
||||
#[cfg(all(feature = "aws_lc_rs", not(feature = "ring")))]
|
||||
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")
|
||||
))]
|
||||
#[cfg(all(feature = "ring"))]
|
||||
rustls::crypto::ring::default_provider()
|
||||
.install_default()
|
||||
.expect("failed to install rustls crypto provider");
|
||||
|
|
|
|||
|
|
@ -6,27 +6,26 @@ use xmpp_parsers::jid::Jid;
|
|||
use xmpp_parsers::message::{Lang, Message, MessageType};
|
||||
use xmpp_parsers::presence::{Presence, Show as PresenceShow, Type as PresenceType};
|
||||
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
any(feature = "tls-rust-aws_lc_rs", feature = "tls-rust-ring")
|
||||
))]
|
||||
#[cfg(feature = "rustls-any-backend")]
|
||||
use tokio_xmpp::rustls;
|
||||
use tokio_xmpp::{connect::DnsConfig, Component};
|
||||
|
||||
#[cfg(all(
|
||||
feature = "rustls-any-backend",
|
||||
not(any(feature = "aws_lc_rs", feature = "ring"))
|
||||
))]
|
||||
compile_error!("using rustls (e.g. via the ktls feature) needs an enabled rustls backend feature (either aws_lc_rs or ring).");
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
env_logger::init();
|
||||
|
||||
#[cfg(all(feature = "tls-rust", feature = "tls-rust-aws_lc_rs"))]
|
||||
#[cfg(all(feature = "aws_lc_rs", not(feature = "ring")))]
|
||||
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")
|
||||
))]
|
||||
#[cfg(all(feature = "ring"))]
|
||||
rustls::crypto::ring::default_provider()
|
||||
.install_default()
|
||||
.expect("failed to install rustls crypto provider");
|
||||
|
|
|
|||
|
|
@ -1,10 +1,7 @@
|
|||
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")
|
||||
))]
|
||||
#[cfg(feature = "rustls-any-backend")]
|
||||
use tokio_xmpp::rustls;
|
||||
use tokio_xmpp::{
|
||||
minidom::Element,
|
||||
|
|
@ -12,18 +9,20 @@ use tokio_xmpp::{
|
|||
xmlstream::{accept_stream, StreamHeader, Timeouts},
|
||||
};
|
||||
|
||||
#[cfg(all(
|
||||
feature = "rustls-any-backend",
|
||||
not(any(feature = "aws_lc_rs", feature = "ring"))
|
||||
))]
|
||||
compile_error!("using rustls (e.g. via the ktls feature) needs an enabled rustls backend feature (either aws_lc_rs or ring).");
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), io::Error> {
|
||||
#[cfg(all(feature = "tls-rust", feature = "tls-rust-aws_lc_rs"))]
|
||||
#[cfg(all(feature = "aws_lc_rs", not(feature = "ring")))]
|
||||
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")
|
||||
))]
|
||||
#[cfg(all(feature = "ring"))]
|
||||
rustls::crypto::ring::default_provider()
|
||||
.install_default()
|
||||
.expect("failed to install rustls crypto provider");
|
||||
|
|
|
|||
|
|
@ -19,10 +19,7 @@ use rand::{thread_rng, Rng};
|
|||
|
||||
use futures::StreamExt;
|
||||
|
||||
#[cfg(all(
|
||||
feature = "tls-rust",
|
||||
any(feature = "tls-rust-aws_lc_rs", feature = "tls-rust-ring")
|
||||
))]
|
||||
#[cfg(feature = "rustls-any-backend")]
|
||||
use tokio_xmpp::rustls;
|
||||
use tokio_xmpp::{
|
||||
connect::{DnsConfig, StartTlsServerConnector},
|
||||
|
|
@ -35,20 +32,22 @@ use tokio_xmpp::{
|
|||
xmlstream::Timeouts,
|
||||
};
|
||||
|
||||
#[cfg(all(
|
||||
feature = "rustls-any-backend",
|
||||
not(any(feature = "aws_lc_rs", feature = "ring"))
|
||||
))]
|
||||
compile_error!("using rustls (e.g. via the ktls feature) needs an enabled rustls backend feature (either aws_lc_rs or ring).");
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
env_logger::init();
|
||||
|
||||
#[cfg(all(feature = "tls-rust", feature = "tls-rust-aws_lc_rs"))]
|
||||
#[cfg(all(feature = "aws_lc_rs", not(feature = "ring")))]
|
||||
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")
|
||||
))]
|
||||
#[cfg(all(feature = "ring"))]
|
||||
rustls::crypto::ring::default_provider()
|
||||
.install_default()
|
||||
.expect("failed to install rustls crypto provider");
|
||||
|
|
@ -93,8 +92,13 @@ async fn main() {
|
|||
iq.to = Some(domain.clone());
|
||||
stream.send(Box::new(iq.into())).await;
|
||||
}
|
||||
ev = stream.next() => {
|
||||
log::info!("{:?}", ev);
|
||||
ev = stream.next() => match ev {
|
||||
Some(ev) => {
|
||||
log::info!("{:?}", ev);
|
||||
}
|
||||
None => {
|
||||
panic!("stream terminated unexpectedly!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue