refactor: extract shared engine helpers, federation clone-before-send, constants
Engine deduplication (PRD-engine-dedup.md): - build_call_config(): shared CallConfig construction (was 23 lines × 2) - codec_to_profile(): shared CodecId → QualityProfile mapping (was 19 lines × 2) - run_signal_task(): shared signal handler (was 48 lines × 2) - Net -39 lines from engine.rs, 6 duplicated blocks → single-line calls Quick wins from REFACTOR-codebase-audit.md: - 6 magic number constants extracted (CAPTURE_POLL_MS, RECV_TIMEOUT_MS, etc.) - DRED_POLL_INTERVAL moved from 2 local defs to 1 module-level const - federation.rs: forward_to_peers, broadcast_signal, send_signal_to_peer now clone peer list and release lock before sending (was holding Mutex across async I/O — last lock-during-send pattern eliminated) - main.rs: close_transport() helper replaces 12 silent .ok() calls with debug-level logging 314 tests passing, 0 regressions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -23,6 +23,13 @@ use wzp_relay::presence::PresenceRegistry;
|
||||
use wzp_relay::room::{self, RoomManager};
|
||||
use wzp_relay::session_mgr::SessionManager;
|
||||
|
||||
/// Close a transport gracefully, logging any error at debug level.
|
||||
async fn close_transport(t: &dyn wzp_proto::MediaTransport, context: &str) {
|
||||
if let Err(e) = t.close().await {
|
||||
tracing::debug!(context, error = %e, "transport close (non-fatal)");
|
||||
}
|
||||
}
|
||||
|
||||
/// Parsed CLI result — config + identity path.
|
||||
struct CliResult {
|
||||
config: RelayConfig,
|
||||
@@ -908,7 +915,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
}
|
||||
}
|
||||
}
|
||||
transport.close().await.ok();
|
||||
close_transport(&*transport, "cleanup").await;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1475,7 +1482,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
reg.unregister_local(&client_fp);
|
||||
}
|
||||
|
||||
transport.close().await.ok();
|
||||
close_transport(&*transport, "cleanup").await;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1499,14 +1506,14 @@ async fn main() -> anyhow::Result<()> {
|
||||
Err(e) => {
|
||||
metrics.auth_attempts.with_label_values(&["fail"]).inc();
|
||||
error!(%addr, "auth failed: {e}");
|
||||
transport.close().await.ok();
|
||||
close_transport(&*transport, "cleanup").await;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(Some(_)) => {
|
||||
error!(%addr, "expected AuthToken as first signal, got something else");
|
||||
transport.close().await.ok();
|
||||
close_transport(&*transport, "cleanup").await;
|
||||
return;
|
||||
}
|
||||
Ok(None) => {
|
||||
@@ -1515,7 +1522,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
}
|
||||
Err(e) => {
|
||||
error!(%addr, "signal recv error during auth: {e}");
|
||||
transport.close().await.ok();
|
||||
close_transport(&*transport, "cleanup").await;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1537,7 +1544,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
}
|
||||
Err(e) => {
|
||||
error!(%addr, "handshake failed: {e}");
|
||||
transport.close().await.ok();
|
||||
close_transport(&*transport, "cleanup").await;
|
||||
return;
|
||||
}
|
||||
};
|
||||
@@ -1561,7 +1568,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
};
|
||||
if !authorized {
|
||||
warn!(%addr, room = %room_name, fp = %participant_fp, "rejected: not authorized for this call room");
|
||||
transport.close().await.ok();
|
||||
close_transport(&*transport, "cleanup").await;
|
||||
return;
|
||||
}
|
||||
info!(%addr, room = %room_name, fp = %participant_fp, "authorized for call room");
|
||||
@@ -1602,7 +1609,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
|
||||
tokio::select! { _ = up => {} _ = dn => {} }
|
||||
stats_handle.abort();
|
||||
transport.close().await.ok();
|
||||
close_transport(&*transport, "cleanup").await;
|
||||
} else {
|
||||
// Room mode — enforce max sessions, then join room
|
||||
let session_id = {
|
||||
@@ -1611,7 +1618,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
Ok(id) => id,
|
||||
Err(e) => {
|
||||
error!(%addr, room = %room_name, "session rejected: {e}");
|
||||
transport.close().await.ok();
|
||||
close_transport(&*transport, "cleanup").await;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1626,7 +1633,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
metrics.active_sessions.dec();
|
||||
let mut smgr = session_mgr.lock().await;
|
||||
smgr.remove_session(session_id);
|
||||
transport.close().await.ok();
|
||||
close_transport(&*transport, "cleanup").await;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1676,7 +1683,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
metrics.active_sessions.dec();
|
||||
let mut smgr = session_mgr.lock().await;
|
||||
smgr.remove_session(session_id);
|
||||
transport.close().await.ok();
|
||||
close_transport(&*transport, "cleanup").await;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1731,7 +1738,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
smgr.remove_session(session_id);
|
||||
}
|
||||
|
||||
transport.close().await.ok();
|
||||
close_transport(&*transport, "cleanup").await;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user