Merge branch 'main' of https://gt.funmc.cn/xiaobai/FunConnect
This commit is contained in:
@@ -6,6 +6,7 @@ use std::sync::atomic::{AtomicU64, Ordering};
|
|||||||
use anyhow::{Context, Result};
|
use anyhow::{Context, Result};
|
||||||
use dashmap::DashMap;
|
use dashmap::DashMap;
|
||||||
use quinn::{Endpoint, ServerConfig, TransportConfig};
|
use quinn::{Endpoint, ServerConfig, TransportConfig};
|
||||||
|
use quinn::crypto::rustls::QuicServerConfig;
|
||||||
use rcgen::{CertifiedKey, generate_simple_self_signed};
|
use rcgen::{CertifiedKey, generate_simple_self_signed};
|
||||||
use rustls::pki_types::{CertificateDer, PrivateKeyDer, PrivatePkcs8KeyDer};
|
use rustls::pki_types::{CertificateDer, PrivateKeyDer, PrivatePkcs8KeyDer};
|
||||||
use tokio::net::UdpSocket;
|
use tokio::net::UdpSocket;
|
||||||
@@ -88,8 +89,10 @@ async fn main() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn run_ping_responder(addr: SocketAddr) -> Result<()> {
|
async fn run_ping_responder(addr: SocketAddr) -> Result<()> {
|
||||||
let socket = UdpSocket::bind(format!("0.0.0.0:{}", addr.port() + 10000)).await
|
let socket = match UdpSocket::bind(format!("0.0.0.0:{}", addr.port() + 10000)).await {
|
||||||
.or_else(|_| async { UdpSocket::bind("0.0.0.0:0").await })?;
|
Ok(s) => s,
|
||||||
|
Err(_) => UdpSocket::bind("0.0.0.0:0").await?,
|
||||||
|
};
|
||||||
|
|
||||||
info!("Ping responder listening on {}", socket.local_addr()?);
|
info!("Ping responder listening on {}", socket.local_addr()?);
|
||||||
|
|
||||||
@@ -129,7 +132,9 @@ fn build_server_config() -> Result<ServerConfig> {
|
|||||||
transport.max_idle_timeout(Some(Duration::from_secs(60).try_into()?));
|
transport.max_idle_timeout(Some(Duration::from_secs(60).try_into()?));
|
||||||
transport.keep_alive_interval(Some(Duration::from_secs(10)));
|
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));
|
server_config.transport_config(Arc::new(transport));
|
||||||
|
|
||||||
Ok(server_config)
|
Ok(server_config)
|
||||||
|
|||||||
Reference in New Issue
Block a user