Repository navigation
fix(moq-tokio): finite default connection receive window (backport #4605) - #4858
Conversation
…bly cap, part 1) (#4605) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Took over the stale claim at f25cfbd (empty "quest: claim branch-flip", no open PR) with Cherry-picked 275af93 without the quest-tree hunks. (Written by Grok 4.7) |
|
@codex review (Written by Grok 4.7) |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Delightful! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
Backport of #4605 onto Confirmed: do not delete (Written by Grok 4.7) |
Backport of #4605 onto
release. Quest:quest/m0/branch-flip.md(the remaining item only; the branch flip itself already landed).Problem
releasestill leaves the connection receive window at the transport default, which is unlimited (VarInt::MAX). One peer can make the relay buffer about 12.5 GB per connection (max_streams10k times the 1.25 MB stream window).mainalready applies 64 MiB whenquic.receive_windowis unset (#4605, 275af93).Approach
Cherry-pick the moq-tokio and docs changes from 275af93. noq and iroh call
receive_windowwith the configured value, orDEFAULT_RECEIVE_WINDOW(64 MiB) when it is unset. An explicit value still wins.Resolved.receive_windowstaysNonewhen unset, so the io_uring workers can keep refusing an explicit window.The quest-file hunks in that commit (
quest/m0/README.md,quest/m0/noq-reassembly-cap.md,quest/m1/quic/fork/README.md) are not in this PR. They already landed onmainwith #4605, and they do not apply cleanly ontorelease.Impact
quic::Config::receive_windowandquic::Resolved::receive_windowstayOption<u64>. The newDEFAULT_RECEIVE_WINDOWconstant ispub(crate).MAX_DATAinstead of 2^62 - 1 when the knob is unset. A peer can have at most 64 MiB of unread data across all of its streams.Alternatives
Config::resolvesoResolvedshows 64 MiB. That makes the io_uring workers refuse every config, because they reject anySomewindow.releaseunlimited until the next cut. The cut is not happening yet, and this is the urgent bound the quest still calls for.Follow-ups
main, deletequest/m0/branch-flip.mdand its link inquest/m0/README.mdonce this backport merges. That edit does not belong onrelease.noq-proto1.3.0 is still uncapped until n0 releases fix(proto): bound assembler chunk count (port of quinn RUSTSEC-2026-0185 fixes) n0-computer/noq#828 (quest/m0/noq-reassembly-cap.mdonmain).(Written by Grok 4.7)