From f5052e719f4122cdc428ac4a307b28a92a2c4097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 3 Mar 2025 17:22:38 +0200 Subject: [PATCH] quinn: Update to web-transport-quinn 0.5 and disable aws-lc-rs This reverts commit e056d9244dae0122e5c4fa437b361cca1bbb348f. Part-of: --- Cargo.lock | 9 ++++++--- net/quinn/Cargo.toml | 6 +++--- net/quinn/src/quinnwtclientsrc/imp.rs | 18 ++++++++---------- net/quinn/src/quinnwtserversink/imp.rs | 15 +++------------ net/quinn/src/utils.rs | 10 ++++++++++ 5 files changed, 30 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 03682be08..ebbcb2bdd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8576,9 +8576,9 @@ dependencies = [ [[package]] name = "web-transport-quinn" -version = "0.3.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3020b51cda10472a365e42d9a701916d4f04d74cc743de08246ef6a421c2d137" +checksum = "5edbbbd8de66e931f5c8a5c9b6e660db7623f1e9042f5f03964ffa1f03c0b9b1" dependencies = [ "bytes", "futures", @@ -8586,7 +8586,10 @@ dependencies = [ "log", "quinn", "quinn-proto", - "thiserror 1.0.69", + "ring", + "rustls 0.23.26", + "rustls-native-certs 0.8.1", + "thiserror 2.0.12", "tokio", "url", "web-transport-proto", diff --git a/net/quinn/Cargo.toml b/net/quinn/Cargo.toml index cb7c76cb8..d91828f0f 100644 --- a/net/quinn/Cargo.toml +++ b/net/quinn/Cargo.toml @@ -16,8 +16,8 @@ gst.workspace = true gst-base = { workspace = true, features = ["v1_22"] } tokio = { version = "1.36.0", default-features = false, features = ["time", "rt-multi-thread", "macros"] } futures = "0.3.30" -quinn = { version = "0.11.5", default-features = false, features = ["ring", "rustls", "runtime-tokio", "log"] } -quinn-proto ={ version = "0.11.8", default-features = false, features = ["rustls", "log"] } +quinn = { version = "0.11.6", default-features = false, features = ["rustls-ring", "runtime-tokio", "log"] } +quinn-proto = { version = "0.11.9", default-features = false, features = ["rustls-ring", "log"] } rustls = { version = "0.23", default-features = false, features = ["std"] } rustls-pemfile = "2" rustls-pki-types = "1" @@ -27,7 +27,7 @@ thiserror = "2" async-channel = "2.3" itertools = "0.14" env_logger = "0.11" -web-transport-quinn = "0.3.3" +web-transport-quinn = { version = "0.5.1", default-features = false, features = ["ring"] } url = "2.5.2" once_cell = "1.20.2" diff --git a/net/quinn/src/quinnwtclientsrc/imp.rs b/net/quinn/src/quinnwtclientsrc/imp.rs index 2c05b8049..5f372648b 100644 --- a/net/quinn/src/quinnwtclientsrc/imp.rs +++ b/net/quinn/src/quinnwtclientsrc/imp.rs @@ -13,7 +13,7 @@ use crate::quinnquicmeta::QuinnQuicMeta; use crate::quinnquicquery::*; use crate::utils::{ - client_endpoint, get_stats, make_socket_addr, server_endpoint, wait, Canceller, + client, client_endpoint, get_stats, make_socket_addr, server_endpoint, wait, Canceller, QuinnQuicEndpointConfig, WaitError, CONNECTION_CLOSE_CODE, CONNECTION_CLOSE_MSG, RUNTIME, }; use crate::{common::*, utils}; @@ -535,21 +535,19 @@ impl QuinnWebTransportClientSrc { ))), }?; - let client = client_endpoint(&endpoint_config).map_err(|err| { + let client = client(&endpoint_config).map_err(|err| { WaitError::FutureError(gst::error_msg!( gst::ResourceError::Failed, ["Failed to configure endpoint: {}", err] )) })?; - let session = web_transport_quinn::connect(&client, &url) - .await - .map_err(|err| { - WaitError::FutureError(gst::error_msg!( - gst::ResourceError::Failed, - ["Failed to connect to server: {}", err] - )) - })?; + let session = client.connect(&url).await.map_err(|err| { + WaitError::FutureError(gst::error_msg!( + gst::ResourceError::Failed, + ["Failed to connect to server: {}", err] + )) + })?; gst::info!( CAT, diff --git a/net/quinn/src/quinnwtserversink/imp.rs b/net/quinn/src/quinnwtserversink/imp.rs index 0c36ea986..22dfb2318 100644 --- a/net/quinn/src/quinnwtserversink/imp.rs +++ b/net/quinn/src/quinnwtserversink/imp.rs @@ -623,24 +623,15 @@ impl QuinnWebTransportServerSink { )) })?; - let incoming_conn = endpoint.accept().await.unwrap(); + let mut incoming_conn = web_transport_quinn::Server::new(endpoint); - let connection = incoming_conn.await.map_err(|err| { + let request = incoming_conn.accept().await.ok_or_else(|| { WaitError::FutureError(gst::error_msg!( gst::ResourceError::Failed, - ["Connection error: {}", err] + ["Connection error"] )) })?; - let request = web_transport_quinn::accept(connection) - .await - .map_err(|err| { - WaitError::FutureError(gst::error_msg!( - gst::ResourceError::Failed, - ["Connection error: {}", err] - )) - })?; - gst::info!( CAT, imp = self, diff --git a/net/quinn/src/utils.rs b/net/quinn/src/utils.rs index 8e7ef2885..b5820b198 100644 --- a/net/quinn/src/utils.rs +++ b/net/quinn/src/utils.rs @@ -28,6 +28,7 @@ use std::sync::{Arc, Mutex}; use std::time::Duration; use thiserror::Error; use tokio::runtime; +use web_transport_quinn::Client; pub const CONNECTION_CLOSE_CODE: u32 = 0; pub const CONNECTION_CLOSE_MSG: &str = "Stopped"; @@ -433,6 +434,15 @@ pub fn client_endpoint(ep_config: &QuinnQuicEndpointConfig) -> Result Result> { + let client_cfg = configure_client(ep_config)?; + let mut endpoint = Endpoint::client(ep_config.client_addr.expect("client_addr not set"))?; + + endpoint.set_default_client_config(client_cfg.clone()); + + Ok(web_transport_quinn::Client::new(endpoint, client_cfg)) +} + pub fn get_stats(stats: Option) -> gst::Structure { match stats { Some(stats) => {