Manually setup rustls protocol

For some reason the default was broken and I don't know why. Also for
some reason the rustls default feature to set a default provider doesnt
work so I had to manually set that up too
This commit is contained in:
2026-06-01 15:56:37 -07:00
parent bcd9f1992d
commit 2dd4f21534
3 changed files with 102 additions and 2 deletions
+18 -1
View File
@@ -15,9 +15,11 @@ use std::time::Duration;
use std::sync::Arc;
use quinn::Endpoint;
use quinn::TransportConfig;
use quinn::crypto::rustls::QuicClientConfig;
use rmp_serde::encode::Serializer;
use serde::Serialize;
use tracing::{instrument,debug,Level};
use rustls_platform_verifier::{BuilderVerifierExt};
const CLIENT_ADDR: SocketAddr = SocketAddr::new(IpAddr::V6(std::net::Ipv6Addr::UNSPECIFIED), 0);
const PORT: u16 = 53512;
@@ -76,11 +78,26 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let response = resolver.lookup_ip(&target_server).await.unwrap().iter()
.next().expect("DNS lookup of server failed");
debug!("Found address {response}");
// create connection
let mut transport_config: TransportConfig = TransportConfig::default();
transport_config.keep_alive_interval(Some(Duration::from_secs(1)));
let mut client_config = quinn::ClientConfig::try_with_platform_verifier().unwrap();
let provider = rustls::crypto::aws_lc_rs::default_provider();
let mut client_crypto = rustls::ClientConfig::builder_with_provider(Arc::new(provider))
.with_protocol_versions(&[&rustls::version::TLS13])?
.with_platform_verifier()?
.with_no_client_auth();
client_crypto.enable_early_data = true;
client_crypto.alpn_protocols = vec![b"fedichatv0".to_vec()];
let mut client_config = quinn::ClientConfig::new(Arc::new(QuicClientConfig::try_from(client_crypto)?));
client_config.transport_config(Arc::new(transport_config));
let endpoint = Endpoint::client(CLIENT_ADDR)?;
let connection = endpoint.connect_with(
client_config,