Repository navigation
Conversation
Bound unfinished upload admission and body deadlines across both relay protocols. Cancel unread input after downstream writable completion while keeping completed uploads and long-lived responses independent. Preserve early replies under backpressure and add focused lifecycle tests.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (7)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughThe picker relay now tracks unfinished uploads separately from upstream requests, limits upload concurrency, and cancels uploads after idle or absolute deadlines. It releases upload capacity on completion and cleanup. Integration tests cover HTTP/1 and HTTP/2 behavior, and English and Korean guides document the limits. ChangesPicker upload limits and lifecycle
Priority: ⬇️ Low Estimated code review effort: 4 (Complex) | ~45 minutes Change: Bug fix Sequence Diagram(s)sequenceDiagram
participant Client
participant PickerListener
participant Upstream
Client->>PickerListener: Send request with unfinished body
PickerListener->>Upstream: Forward request
Client-->>PickerListener: Send nonempty body data
PickerListener->>PickerListener: Refresh idle deadline
alt Body completes
PickerListener->>PickerListener: Release upload slot and stop deadlines
Upstream-->>PickerListener: Return response
PickerListener-->>Client: Forward response
else Deadline expires
PickerListener->>Upstream: Destroy upstream request
PickerListener-->>Client: Close unfinished input
end
Suggested reviewers: Merge Risk: ⚪ Minimal · up to No actionable upload-lifecycle or documentation defect remains established; the change is mergeable after normal checks. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 2 files. (5 skipped: 5 unsupported.)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
✅ Deterministic PR hygiene checks passed. |
|
@coderabbitai review Please perform one review of published head Author follow-up on 2026-10-06: the head-associated Cross-platform CI run 37418909942 and React Doctor 37418909953 both completed successfully. The existing Verification section distinguishes hosted Bun execution from the local Node negative controls and records native/stress coverage gaps. No new test execution is claimed by this comment. Please assess the unfinished-upload accounting, refusal cleanup, early-response/backpressure handling and timer ownership. This is a bounded source review request, not merge authorization or a substitute for required independent security review. The PR remains Draft during this review; no settings, trust stores or installed runtime were changed. |
✅ Action performedReview finished.
|
|
Held for now: the new upload cap and deadlines can reject legitimate slow uploads. The refusal-cleanup part is low impact on its own; it can land separately without the new limits. |
…ct (carry #6659) (#6725) Carry #6659 without its new upload cap or idle/absolute deadlines. Close refused and early-replied unfinished uploads after the reply finishes: HTTP/1.1 discards remaining input and ends the socket gracefully (immediate destroy truncated large early replies), HTTP/2 sends RST_STREAM NO_ERROR after a complete response and CANCEL otherwise. Completed uploads and bodyless requests keep existing behavior, including keep-alive on generated 502s. Compact the claude-picker layout registrations to stay under the layout ratchet. Co-authored-by: Epinephrine <luvs01@hanmail.net>
|
Thank you, @luvs01. The cleanup from this PR landed on What was carried: closing refused uploads after their empty reply, stopping input relay only after an early reply's downstream writable finishes, the h2 What was left out, as noted in the earlier hold: the 128-upload cap and the 30-second idle and five-minute absolute deadlines. This listener carries all Desktop traffic to claude.ai, so a large attachment on a slow link can run past five minutes, and upstream backpressure can pause input Review of the carry also found and fixed two issues in the HTTP/1.1 path. Destroying the socket right after Closing this in favor of #6725. |
Summary
Verification
Local validation used Node v24.19.0 against the actual listener with local verified TLS and a small test-framework/module adapter. Bun 1.4.0 and project dependencies were unavailable, so the following are Node evidence, not Bun execution:
git diff --checkpassed.The patch applies cleanly to
devatf92482065217bae891a88e27fd6c00012f212042, preserving its current Desktop CA/ACL documentation.Published-head verification is now complete in Cross-platform CI for
beea8373762e722b3f66193a3868352dbead5c0f. The checked-out merge has the exact proposed tree and ran Bun 1.4.0 (34cbb9a40):The negative-control reproduction above remains local Node evidence; no baseline Bun reproduction is claimed. Native Windows/macOS full suites were skipped by scope selection. Native Desktop/macOS, live-provider acceptance and production-limit stress were not run.
Review handoff — 2026-10-07
This published head is ready for independent review with the validation scope above. CodeRabbit's completed source review covers
beea8373762e722b3f66193a3868352dbead5c0fand found no actionable comments; there are no unresolved inline threads. The earlier author hold was for that review, which has completed. Current-head aggregate CI, TypeScript, hygiene and target-branch checks passed.The full local Bun suite was unavailable because the validation environment lacked Bun 1.4.0 and project dependencies. The actual-listener Node regressions and controls are retained as such; the completed hosted Bun run supplies the pinned-runtime coverage. The three Node-specific nearby-suite failures are not relabeled as local passes.
Independent maintainer/security review is requested for admission accounting across sessions/protocols, refusal cleanup, early-response backpressure and timer/cancellation ownership. The security checklist remains open until that review is supplied. Native Desktop/platform acceptance and production-limit stress remain unperformed. At this checkpoint the branch is 19 commits behind
dev9099e4bf99166677db0f5fa6df81fe30208dd795; GitHub reports no merge conflict. Existing CI validates the recorded published head and checkout, not a future dev integration. Ready for review does not authorize merge, release or activation.Checklist
Summary by CodeRabbit