-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Implement 100 Continue for HTTP/3 #36168
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
Implement 100 Continue for HTTP/3 #36168
Conversation
src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3ConnectionTests.cs
Show resolved
Hide resolved
src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3ConnectionTests.cs
Outdated
Show resolved
Hide resolved
src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3ConnectionTests.cs
Show resolved
Hide resolved
src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3ConnectionTests.cs
Outdated
Show resolved
Hide resolved
src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3ConnectionTests.cs
Outdated
Show resolved
Hide resolved
|
@Tratcher In what situation does HttpClient send a 100 continue? Is this something we can test end-to-end in the interop tests, or is it difficult to trigger 100 continue from HttpClient? |
|
Sending Triggering the 100 response on the server is easy, you just read the request body. The real trick is observing that the 100 response happened, it's implicitly sent by the server and implicitly handled by HttpClient, the app code on either side never sees it. Try this: This will prevent the client from sending the body until the 100 response is received. If the server doesn't send the 100 response then the client will not send the data and the server read will time out. |
31e5ca3 to
5733e20
Compare
5733e20 to
d64d286
Compare
src/Servers/Kestrel/Core/src/Internal/Http3/Http3FrameWriter.cs
Outdated
Show resolved
Hide resolved
src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3ConnectionTests.cs
Outdated
Show resolved
Hide resolved
src/Servers/Kestrel/test/Interop.FunctionalTests/Http3/Http3RequestTests.cs
Outdated
Show resolved
Hide resolved
|
/backport to release/6.0 |
|
Started backporting to release/6.0: https://github.com/dotnet/aspnetcore/actions/runs/1223025051 |
Addresses #35974
Keeping this in draft while I confirm this is the expected behavior.Update 9/9: client/server interoperability has been verified. This should be good.