Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Accumulator logic for MAX_DATA updates #2553

Merged
merged 2 commits into from
Mar 18, 2022
Merged

Conversation

maolson-msft
Copy link
Member

When many small streams are used, it's possible that we never actually send MAX_STREAM_DATA updates. The current logic ties MAX_STREAM_DATA and (connection-wide) MAX_DATA updates together, which causes the peer to be eventually connection FC blocked in this case.

This PR adds an accumulator variable for connectionwide delivered bytes. When the accumulator hits a fraction (I propose 1/4 but haven't carefully thought about it) of the conn FC window, we send a MAX_DATA frame to open the window.

@maolson-msft maolson-msft requested a review from a team as a code owner March 18, 2022 20:53
@nibanks nibanks added Bug: Core A code bug in the Core MsQuic code Area: Core Related to the shared, core protocol logic labels Mar 18, 2022
src/core/stream_recv.c Outdated Show resolved Hide resolved
@nibanks nibanks merged commit 1fc7ea9 into main Mar 18, 2022
@nibanks nibanks deleted the maolson/independent-max-data branch March 18, 2022 21:56
nibanks pushed a commit that referenced this pull request Mar 18, 2022
nibanks added a commit that referenced this pull request Mar 18, 2022
Co-authored-by: Matt Olson <maolson@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: Core Related to the shared, core protocol logic Bug: Core A code bug in the Core MsQuic code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants