This commit is contained in:
2026-02-25 22:00:35 +08:00
parent 97e79f924a
commit 13950a8d09
4 changed files with 8 additions and 14 deletions

View File

@@ -6,10 +6,8 @@ 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};
use tokio::net::UdpSocket;
use tracing::{error, info, warn};
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
@@ -90,10 +88,8 @@ async fn main() -> Result<()> {
}
async fn run_ping_responder(addr: SocketAddr) -> Result<()> {
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?,
};
let socket = UdpSocket::bind(format!("0.0.0.0:{}", addr.port() + 10000)).await
.or_else(|_| async { UdpSocket::bind("0.0.0.0:0").await })?;
info!("Ping responder listening on {}", socket.local_addr()?);
@@ -133,9 +129,7 @@ fn build_server_config() -> Result<ServerConfig> {
transport.max_idle_timeout(Some(Duration::from_secs(60).try_into()?));
transport.keep_alive_interval(Some(Duration::from_secs(10)));
let quic_crypto = QuicServerConfig::try_from(Arc::new(server_crypto))
.context("rustls 配置转为 QUIC 失败")?;
let mut server_config = ServerConfig::with_crypto(Arc::new(quic_crypto));
let mut server_config = ServerConfig::with_crypto(Arc::new(server_crypto));
server_config.transport_config(Arc::new(transport));
Ok(server_config)