The gateway bridge loop uses a biased select so shutdown and relay lifecycle
control events win over frame work. After those control paths, the loop used to
poll physical LAN capture before relay datagrams.
On a busy LAN, a perpetually readable AF_PACKET socket can delay ready remote
client frames waiting to be injected onto the LAN. Service relay datagrams
before LAN capture so remote-to-LAN traffic can cross the gateway promptly,
while still preserving lifecycle-before-frame ordering.
Test Plan:
- cargo fmt --check
- cargo test -p lanparty-gateway
- cargo test --workspace
- cargo clippy --workspace --all-targets -- -D warnings
- git diff --check
- git diff --cached --check
Refs: MVP gateway bridge scheduling