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:
+18
-1
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user