From 97e79f924abbf4198a2ad868f4ee3180b18b2175 Mon Sep 17 00:00:00 2001 From: xiaobai Date: Wed, 25 Feb 2026 21:42:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- relay-server/src/main.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/relay-server/src/main.rs b/relay-server/src/main.rs index d7128ff..e8c3029 100644 --- a/relay-server/src/main.rs +++ b/relay-server/src/main.rs @@ -6,6 +6,7 @@ use std::sync::atomic::{AtomicU64, Ordering}; use anyhow::{Context, Result}; use dashmap::DashMap; use quinn::{Endpoint, ServerConfig, TransportConfig}; +use quinn::crypto::rustls::QuicServerConfig; use rcgen::{CertifiedKey, generate_simple_self_signed}; use rustls::pki_types::{CertificateDer, PrivateKeyDer, PrivatePkcs8KeyDer}; use tokio::io::{AsyncReadExt, AsyncWriteExt}; @@ -89,8 +90,10 @@ async fn main() -> Result<()> { } async fn run_ping_responder(addr: SocketAddr) -> Result<()> { - let socket = UdpSocket::bind(format!("0.0.0.0:{}", addr.port() + 10000)).await - .or_else(|_| async { UdpSocket::bind("0.0.0.0:0").await })?; + let socket = match UdpSocket::bind(format!("0.0.0.0:{}", addr.port() + 10000)).await { + Ok(s) => s, + Err(_) => UdpSocket::bind("0.0.0.0:0").await?, + }; info!("Ping responder listening on {}", socket.local_addr()?); @@ -130,7 +133,9 @@ fn build_server_config() -> Result { transport.max_idle_timeout(Some(Duration::from_secs(60).try_into()?)); transport.keep_alive_interval(Some(Duration::from_secs(10))); - let mut server_config = ServerConfig::with_crypto(Arc::new(server_crypto)); + let quic_crypto = QuicServerConfig::try_from(Arc::new(server_crypto)) + .context("rustls 配置转为 QUIC 失败")?; + let mut server_config = ServerConfig::with_crypto(Arc::new(quic_crypto)); server_config.transport_config(Arc::new(transport)); Ok(server_config)