-
Notifications
You must be signed in to change notification settings - Fork 542
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
Expose Interface for App to Set Stateless Reset Key #3879
Conversation
How about we use the same way as the random initial reset key, we call MsQuicLibraryFreePartitions() to set all PerProc->ResetTokenHash to NULL Co-authored-by: Nick Banks <[email protected]>
Codecov Report
@@ Coverage Diff @@
## main #3879 +/- ##
==========================================
- Coverage 86.80% 86.54% -0.26%
==========================================
Files 56 56
Lines 16693 16712 +19
==========================================
- Hits 14490 14464 -26
- Misses 2203 2248 +45
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great job! Just few small things left and this should be good to merge.
Looks like the CheckDotnet test failed because you need to update the generated file again. Please run |
Co-authored-by: Nick Banks <[email protected]>
Co-authored-by: Nick Banks <[email protected]>
Co-authored-by: Nick Banks <[email protected]>
CheckDotnet is still failing. Please fix that up. CIFuzz is failing because spinquic is setting the global paramter before a registration is created (good catch):
The code in library.c needs to handle this case (just fail with invalid state if not initialized yet). |
Oh, and we do have preexisting docs for parameters in settings.md. Please update those docs for this new setting. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great job! Thanks for doing this!
Description
At present, each MsQuic server utilizes a distinct stateless reset key. When the MsQuic client and server successfully complete the handshake process, they establish communication through an encrypted channel, utilizing an encryption key generated from the respective stateless reset key for their interactions. However, in the event of a server crash followed by a restart, the client remains unaware of this disruption, leaving it unable to communicate with the server due to the unavailability of the encryption key. To resolve this issue, we have introduced an interface that allows the App to set the same stateless reset key on the MsQuic server side.
Fixes #1719.
Testing
We have introduced two new test cases. The first one is designed to validate the length of the stateless reset key to ensure its validity. The second test case focuses on validating the behavior when the stateless reset key is changed and the server is subsequently shut down silently, leading to a client timeout instead of abort scenario.
Documentation
No.