feat(ctrl): send graceful disconnects
The relay already accepts post-handshake Disconnect control messages, but the client and gateway shutdown paths only sent a QUIC application close. That made normal shutdown indistinguishable from transport closure until the relay inferred a generic Normal leave. Client and gateway shutdown now send a best-effort Disconnect message with the human-readable shutdown reason before closing QUIC. The client-core drain uses Quinn's runtime timer instead of taking a Tokio runtime dependency. The gateway uses its existing Tokio runtime and applies the same short drain window on both explicit shutdown and Ctrl-C in the Linux bridge loop. The endpoint integration tests now assert that the server receives Disconnect after the stats stream, which also protects against closing too quickly and aborting the control stream. Test Plan: - cargo fmt --check - cargo test -p lanparty-client-core \ connects_to_relay_control_stream_as_client -- --nocapture - cargo test -p lanparty-gateway \ connects_to_relay_control_stream_as_gateway -- --nocapture - cargo test -p lanparty-client-core - cargo test -p lanparty-gateway - cargo clippy -p lanparty-client-core --all-targets -- -D warnings - cargo clippy -p lanparty-gateway --all-targets -- -D warnings - cargo test --workspace - cargo clippy --workspace --all-targets -- -D warnings - git diff --check Refs: PLAN.md
This commit is contained in:
@@ -53,6 +53,7 @@ Platform-neutral remote client relay session:
|
||||
- Ethernet frame send/receive helpers over QUIC DATAGRAM
|
||||
- client tunnel statistics for frame/datagram rx/tx and drops
|
||||
- reliable client stats snapshot sends for relay diagnostics
|
||||
- best-effort graceful disconnect messages before QUIC close
|
||||
|
||||
### `lanparty-client-route`
|
||||
|
||||
@@ -140,7 +141,8 @@ frame logs include direction, peer id when present, MACs, ethertype/length,
|
||||
frame length, action, and drop reason. The gateway also tracks frame/datagram
|
||||
counters and periodically sends stats snapshots to the relay. Relay lifecycle
|
||||
events seed and retire remote-client MACs for CAM refresh even before that
|
||||
client sends traffic.
|
||||
client sends traffic. On shutdown, the gateway sends a best-effort disconnect
|
||||
control message before closing QUIC so the relay can report the intended reason.
|
||||
|
||||
## Windows Client
|
||||
|
||||
|
||||
Reference in New Issue
Block a user