You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Critical fixes:
- server.rs: BUG-1 — client_count was never incremented, only decremented;
move count management into handle_client_handshake with fetch_add on connect
and fetch_sub on disconnect
- server.rs: BUG-6 — wrap every handshake with 10s tokio::time::timeout to
prevent stalled/malicious connections from leaking tasks indefinitely
- server.rs: BUG-8 — UDP broadcast task was not cancelled on server stop;
pass CancellationToken and use select! so the UdpSocket is released before
the next server start (fixes "address already in use" on UDP rebind)
- main.rs: BUG-14 — handle.shutdown() was called without .await; the future
was dropped immediately, leaving the TcpListener bound across restarts
- main.rs: BUG-2 — _status_rx was immediately dropped, silently discarding
all disconnect/error events from the client UDP task; spawn forwarding task
- session.rs: BUG-5 — replace rand::thread_rng() with OsRng for session code
generation; session codes are security credentials
High fixes:
- server.rs: BUG-7 — Mutex was held across all async UDP sends; clone client
data under lock then release before sending
- server.rs: BUG-16 — add MAX_CLIENTS=10 check before accepting new sessions
- client.rs: BUG-9 — TCP port was hardcoded to 24800 ignoring config; pass
control_port parameter through connect_to_server
- client.rs: BUG-10 — UDP port was hardcoded to CLIENT_UDP_PORT constant;
bind to OS-assigned port (0.0.0.0:0) and report actual port to server
- client.rs: BUG-12 — TLS fallback ServerName "InputSync" panicked for IP
addresses; detect IP with parse::<IpAddr>() and use ServerName::IpAddress
- client.rs: BUG-21 — unbounded std::mpsc::channel for simulator could grow
without bound; switch to sync_channel(512) with try_send
- capture.rs: BUG-11 — seq counter was incremented before checking whether
a packet would be emitted; move increment inside the Some(pkt) branch
Medium fixes:
- capture.rs: SMELL-3 — first_move not reset when forwarding re-enabled;
track was_forwarding and set first_move=true on forwarding transitions
- app.rs: BUG-15 — ctx.set_visuals() was called every frame; move once to
InputSyncApp::new via cc.egui_ctx
- logs_panel.rs: BUG-19 — remove non-functional Clear/Export buttons that
egui_logger 0.6 does not support
- settings_panel.rs: BUG-18 — dead zone w_frac/h_frac could exceed screen
bounds; clamp to (1.0 - x_frac) / (1.0 - y_frac) in the DragValue range
- main.rs: BUG-20 — server_addr in ClientState hardcoded port 24800 instead
of config.control_port
Note: BUG-13 (AltGr distinction) deferred — enigo 0.2 does not expose
Key::AltGr; requires dependency upgrade tracked for v1.2.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
0 commit comments