diff --git a/relay-server/src/main.rs b/relay-server/src/main.rs index e8c3029..d6c201a 100644 --- a/relay-server/src/main.rs +++ b/relay-server/src/main.rs @@ -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 { 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) diff --git a/server/src/api/download.rs b/server/src/api/download.rs index d09f693..937d1f8 100644 --- a/server/src/api/download.rs +++ b/server/src/api/download.rs @@ -2,7 +2,7 @@ use axum::{ body::Body, extract::{Path, State}, http::{header, StatusCode}, - response::{Html, IntoResponse, Response}, + response::{Html, Response}, Json, }; use serde::Serialize; @@ -70,7 +70,7 @@ pub async fn download_page(State(state): State>) -> Html { "http://localhost:3000".to_string() }; - let html = format!(r#" + let html = format!(r##" @@ -187,7 +187,7 @@ pub async fn download_page(State(state): State>) -> Html { -"#, +"##, server_name = config.server_name, server_url = server_url, version = config.client_version, diff --git a/server/src/api/friends.rs b/server/src/api/friends.rs index 80341ba..fb8ac7c 100644 --- a/server/src/api/friends.rs +++ b/server/src/api/friends.rs @@ -43,7 +43,7 @@ pub async fn list_friends( match rows { Ok(friends) => { let dtos: Vec<_> = friends.into_iter().map(|(id, username, avatar_seed, status)| { - let is_online = state.presence.is_online(id); + let is_online = state.presence.is_online(&id); FriendDto { id, username, avatar_seed, is_online, status } }).collect(); (StatusCode::OK, Json(serde_json::json!(dtos))).into_response() diff --git a/server/src/api/users.rs b/server/src/api/users.rs index 7148f69..1ed51f8 100644 --- a/server/src/api/users.rs +++ b/server/src/api/users.rs @@ -38,7 +38,7 @@ pub async fn search_users( "id": id, "username": username, "avatar_seed": avatar_seed, - "is_online": state.presence.is_online(id), + "is_online": state.presence.is_online(&id), })).collect(); (StatusCode::OK, Json(serde_json::json!(dtos))).into_response() }