Skip to content

fetch: let an explicit timeout extend the socket idle deadline - #33647

Merged
Jarred-Sumner merged 7 commits into
mainfrom
claude/fetch-timeout-honors-idle
Jul 8, 2026
Merged

fetch: let an explicit timeout extend the socket idle deadline#33647
Jarred-Sumner merged 7 commits into
mainfrom
claude/fetch-timeout-honors-idle

[autofix.ci] apply automated fixes

c871fdb
Select commit
Loading
Failed to load commit list.
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

See this annotation in the file changed.

@claude 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}