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

Reliable Reset Stream Support - Phase 1 - Feature Negotiation #3778

Merged
merged 47 commits into from
Aug 11, 2023

Conversation

ProjectsByJackHe
Copy link
Contributor

@ProjectsByJackHe ProjectsByJackHe commented Jul 26, 2023

Description

This PR is a start to trying to solve issue#3775.
It's implementation is based off https://datatracker.ietf.org/doc/draft-ietf-quic-reliable-stream-reset/

As you can imagine, the changes will be HUUUUUUUUUUGE, so I wanted to split it into multiple PRs, to ease the review process.

In terms of scope for this PR,

we want to build all the necessary logic for proper feature negotiation between client and server.
This includes adding a new Transport parameter, a new settings parameter (internal and external), and logic to handle
negotiation of the settings. Additionally, a new Connection event is necessary to communicate to the app the outcome of a feature negotiation, so the app knows and can respond accordingly.

Testing

New unit tests are added to validate the behavior of the various components. Including new Frame tests, Settings tests, and Transport parameter tests.

End 2 end testing is also in scope for this PR, to validate the behavior of the TLS negotiation.

Documentation

Not in this PR, but for future, there should be docs outlining how to use this new experimental feature.

@ProjectsByJackHe ProjectsByJackHe requested a review from a team as a code owner July 26, 2023 23:23
docs/Settings.md Outdated Show resolved Hide resolved
src/core/connection.c Outdated Show resolved Hide resolved
src/core/frame.h Outdated Show resolved Hide resolved
src/core/settings.h Outdated Show resolved Hide resolved
src/core/settings.h Outdated Show resolved Hide resolved
src/inc/msquic.h Outdated Show resolved Hide resolved
src/core/datagram.h Outdated Show resolved Hide resolved
@codecov
Copy link

codecov bot commented Jul 26, 2023

Codecov Report

Merging #3778 (d680e2f) into main (27b62ca) will decrease coverage by 0.53%.
Report is 21 commits behind head on main.
The diff coverage is 86.56%.

@@            Coverage Diff             @@
##             main    #3778      +/-   ##
==========================================
- Coverage   77.58%   77.05%   -0.53%     
==========================================
  Files          56       56              
  Lines       15558    15694     +136     
==========================================
+ Hits        12070    12093      +23     
- Misses       3488     3601     +113     
Files Changed Coverage Δ
src/core/connection.h 94.57% <ø> (ø)
src/core/frame.h 100.00% <ø> (ø)
src/core/connection.c 71.12% <71.42%> (-1.18%) ⬇️
src/core/crypto_tls.c 74.54% <81.81%> (+0.13%) ⬆️
src/core/frame.c 71.33% <94.44%> (+0.52%) ⬆️
src/core/settings.c 73.37% <100.00%> (+0.79%) ⬆️

... and 18 files with indirect coverage changes

src/core/datagram.h Outdated Show resolved Hide resolved
src/core/frame.h Outdated Show resolved Hide resolved
src/inc/msquic.h Outdated Show resolved Hide resolved
src/core/connection.h Outdated Show resolved Hide resolved
src/core/settings.c Dismissed Show dismissed Hide dismissed
src/inc/msquic.h Outdated Show resolved Hide resolved
src/inc/msquic.h Outdated Show resolved Hide resolved
Co-authored-by: Nick Banks <nibanks@microsoft.com>
@ProjectsByJackHe ProjectsByJackHe changed the title Support new experimental CLOSE_STREAM packet frame. Initialization PR. Support new experimental CLOSE_STREAM packet frame. Initialization PR to add feature negotiation. Aug 2, 2023
@nibanks nibanks changed the title Support new experimental CLOSE_STREAM packet frame. Initialization PR to add feature negotiation. Reliable Reset Stream Support - Phase 1 - Feature Negotiation Aug 10, 2023
@nibanks nibanks added Area: Protocol Updates Changes for new protocol changes Area: API Area: Core Related to the shared, core protocol logic labels Aug 10, 2023
src/manifest/clog.sidecar Outdated Show resolved Hide resolved
src/inc/msquic.h Outdated Show resolved Hide resolved
src/inc/msquic.h Outdated Show resolved Hide resolved
src/inc/msquic.h Outdated Show resolved Hide resolved
src/core/settings.c Outdated Show resolved Hide resolved
Co-authored-by: Nick Banks <nibanks@microsoft.com>
src/core/settings.c Outdated Show resolved Hide resolved
ProjectsByJackHe and others added 4 commits August 10, 2023 16:19
Co-authored-by: Nick Banks <nibanks@microsoft.com>
Co-authored-by: Nick Banks <nibanks@microsoft.com>
@nibanks nibanks merged commit 09eff16 into main Aug 11, 2023
429 of 436 checks passed
@nibanks nibanks deleted the jackhe/support-quic-reliable-stream-reset-3775 branch August 11, 2023 11:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: API Area: Core Related to the shared, core protocol logic Area: Protocol Updates Changes for new protocol changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants