fetch: let an explicit timeout extend the socket idle deadline - #33647
Merged
Claude / Claude Code Review
completed
Jul 7, 2026 in 10m 39s
Code review found 1 important issue
Found 1 candidates, confirmed 2. See review comments for details.
Details
| Severity | Count |
|---|---|
| 🔴 Important | 1 |
| 🟡 Nit | 1 |
| 🟣 Pre-existing | 0 |
| Severity | File:Line | Issue |
|---|---|---|
| 🔴 Important | src/http/h2_client/ClientSession.rs:520-534 |
h2 rearm_timeout: {timeout:false} stream can be killed by a sibling's short explicit timeout |
Annotations
Check failure on line 534 in src/http/h2_client/ClientSession.rs
claude / Claude Code Review
h2 rearm_timeout: {timeout:false} stream can be killed by a sibling's short explicit timeout
A `{timeout: false}` request coalesced onto an h2 session can now be killed by a sibling's short explicit `timeout`: `effective_idle_timeout_seconds()` returns 0 for `disable_timeout`, so it contributes nothing to the `max()` and a `{timeout: 5000}` sibling arms the shared socket at 5s — when it fires, `on_long_timeout` → `session.on_close` fails **every** stream with no per-stream `disable_timeout` re-check. Before this PR the same session armed the global 300s default, so the `{timeout: false}
Loading