Repository navigation
Conversation
Server.prototype.setTimeout mapped msecs onto the native idle timeout but never stored this.timeout, and there was no timeout accessor, so: - server.timeout read undefined (Node.js default: 0) - server.setTimeout(N) did not update server.timeout - server.timeout = N was a plain expando the server never consulted Add a timeout accessor on Server.prototype whose setter routes through setServerIdleTimeout when the native server is listening, and store the value so the getter matches Node.js. setTimeout now writes through the accessor (and, like Node.js, registers the callback with on() rather than once()). The deferred-timeouts array is no longer needed: the stored value is applied at listen time.
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 58 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (3)
Comment |
|
Updated 4:04 AM PT - Jul 8th, 2026
❌ @autofix-ci[bot], your commit 49fd885 has 4 failures in
🧪 To try this PR locally: bunx bun-pr 33733That installs a local version of the PR into your bun-33733 --bun |
|
Found 1 issue this PR may fix:
🤖 Generated with Claude Code |
|
This does not close #17287. Before this change What this PR changes is the |
|
This PR may be a duplicate of:
🤖 Generated with Claude Code |
|
On the duplicate-PR suggestions:
|
|
CI on build #70357 (final): the new Red is unrelated flake, each either reproduced on other open PRs today or outside
None of these touch |
|
This landed on main through #32488. Checked by running this PR's Nothing left for this PR to add, so closing it. |
What
http.Server.prototype.setTimeoutmappedmsecsonto the native idle timeout but never storedthis.timeout, and there was notimeoutaccessor at all, so the two documented spellings of the same knob diverged:server.timeoutalways readundefined(Node.js default:0)server.setTimeout(N)was enforced but did not updateserver.timeoutserver.timeout = Nwas a plain expando the server never consulted: the app reads backNand gets no timeoutRepro
And
server.timeout = 500afterlisten()leaves a stalled-body connection open indefinitely, where Node.js closes it after ~500 ms.Fix
Add a
timeoutaccessor onServer.prototype: the getter returns the stored msecs (initialized to0), the setter stores the value and, when the native server is listening, routes throughsetServerIdleTimeout.setTimeoutnow writes through the accessor and, like Node.js, registers its callback withon('timeout', ...)rather thanonce. The deferred-timeouts array is no longer needed: the stored value is applied at listen time.Verification
test/js/node/http/node-http-server-timeout.test.tscovers the property semantics (default0,setTimeoutwrites it, assignment reads back) and thatserver.timeout = Nafterlisten()actually closes a stalled connection. Both tests fail on the current release and pass with the fix. The existingtest-http-should-emit-timeout-event-when-using-server-setTimeoutstill passes.