Skip to content

Commit d4b9230

Browse files
sandtreaderclaude
andcommitted
net-rs: update risk register #9/#10 commit hashes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 142e209 commit d4b9230

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

net-rs/plans/chatgpt-risk-register.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,14 +251,14 @@ Inbound connection handling lacks early-stage defensive controls.
251251
- Vulnerability to simple DoS attacks
252252

253253
### Resolution
254-
Decoupled accept loop from handshake: TCP accept is now immediate, each handshake spawned as an independent tokio task. Concurrent handshakes bounded by `tokio::sync::Semaphore` (`max_handshaking`, default 64). Per-IP connection cap (`max_connections_per_ip`, default 3) enforced via shared `Arc<Mutex<HashMap<IpAddr, usize>>>` between accept loop and coordinator — count incremented before handshake spawn, decremented on handshake failure, coordinator rejection, or peer disconnect. Existing 10s handshake timeout still enforced per-connection. Rate limiting deferred as firewall territory. Commit: TBD
254+
Decoupled accept loop from handshake: TCP accept is now immediate, each handshake spawned as an independent tokio task. Concurrent handshakes bounded by `tokio::sync::Semaphore` (`max_handshaking`, default 64). Per-IP connection cap (`max_connections_per_ip`, default 3) enforced via shared `Arc<Mutex<HashMap<IpAddr, usize>>>` between accept loop and coordinator — count incremented before handshake spawn, decremented on handshake failure, coordinator rejection, or peer disconnect. Existing 10s handshake timeout still enforced per-connection. Rate limiting deferred as firewall territory. Commit: 3825f5284
255255

256256
---
257257

258258
## 10. Ambiguous “Not Found” Semantics in Leios Fetch
259259

260260
**Severity:** Medium
261-
**Status:** Open
261+
**Status:** Fixed
262262

263263
### Description
264264
Missing data is represented as empty payload instead of explicit absence.
@@ -276,6 +276,9 @@ Missing data is represented as empty payload instead of explicit absence.
276276
- Future incompatibility with spec
277277
- Harder debugging and validation
278278

279+
### Resolution
280+
CIP-0164 specifies: “A server should disconnect if the client requests an EB (or its transactions) the server does not have.” Replaced `unwrap_or_default()` in `serve_leios_fetch()` with explicit `Option` matching — store lookup `None` now breaks the server loop, triggering disconnect. The client side already handles disconnects via `PeerEvent::Failed`. Votes unchanged (batch `filter_map` with partial delivery is correct for multi-key lookups). Commit: ef81b3939
281+
279282
---
280283

281284
## 11. Incomplete Client-Side Protocol Coverage

0 commit comments

Comments
 (0)