Skip to content

Adding WebTransport Handshake to Kestrel #41877

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

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
138fdea
Fixed issues with connecting via webtransport. Now error is method no…
Daniel-Genkin-MS-2 May 19, 2022
e6d9afd
Fixed the handshake/method not supported issue
Daniel-Genkin-MS-2 May 19, 2022
751856c
Handshake completes successfully
Daniel-Genkin-MS-2 May 20, 2022
a6a0fec
Merge branch 'main' of https://github.com/dotnet/aspnetcore into t-da…
Daniel-Genkin-MS-2 May 23, 2022
39457bd
minor clean up
Daniel-Genkin-MS-2 May 23, 2022
e06d048
Added WebTransport settings to KestrelServerOptions
Daniel-Genkin-MS-2 May 24, 2022
70e1a24
Added validation for WebTransport headers and settings
Daniel-Genkin-MS-2 May 24, 2022
1313d01
WIP adding the unit tests for the handshake + various misc fixes that…
Daniel-Genkin-MS-2 May 24, 2022
123b849
First unit test works!
Daniel-Genkin-MS-2 May 25, 2022
bb3f1c5
Added some tests to avoid bad connections. More are needed though
Daniel-Genkin-MS-2 May 25, 2022
ff0bb08
Fixed some unit tests and added origin validation
Daniel-Genkin-MS-2 May 25, 2022
a810ed0
Cleanup
Daniel-Genkin-MS-2 May 25, 2022
f52b7d9
Finished the unit tests
Daniel-Genkin-MS-2 May 26, 2022
e50cfda
Added protocol to public APIs
Daniel-Genkin-MS-2 May 26, 2022
ff34498
Slight cleanup
Daniel-Genkin-MS-2 May 26, 2022
a2f5353
Removed KestrelServerOptions as per Stephen's and Chris' suggestion
Daniel-Genkin-MS-2 May 26, 2022
48d10fe
Removed option to use H3_Datagrams without webtransport
Daniel-Genkin-MS-2 May 26, 2022
1923923
Update src/Servers/Kestrel/samples/Http3SampleApp/Program.cs
Daniel-Genkin-MS-2 May 27, 2022
cecea59
Addressed a bunch of PR comments?
Daniel-Genkin-MS-2 May 27, 2022
1e8b99c
Unhardcoded strings
Daniel-Genkin-MS-2 May 27, 2022
cc0e138
removed nonexistant server options from public API
Daniel-Genkin-MS-2 May 27, 2022
818bea2
Cleanup related to PR comments
Daniel-Genkin-MS-2 May 27, 2022
f135236
Gave in to only passing 1 parameter into the string
Daniel-Genkin-MS-2 May 27, 2022
9bab83c
logic fix
Daniel-Genkin-MS-2 May 27, 2022
32dcf73
I am blind
Daniel-Genkin-MS-2 May 27, 2022
bfc1b57
Fixed CI test failures
Daniel-Genkin-MS-2 May 27, 2022
75e910e
Fixed typo in string values
Daniel-Genkin-MS-2 May 27, 2022
40c1697
Removed @
Daniel-Genkin-MS-2 May 27, 2022
bb79a1f
Merge branch 't-dagenkin/WebTransport' of https://github.com/Daniel-G…
Daniel-Genkin-MS-2 May 27, 2022
f51ca4a
Move Webtransport related parts into a new port and undid changed to …
Daniel-Genkin-MS-2 May 27, 2022
3788865
Addressed some more PR comments
Daniel-Genkin-MS-2 May 31, 2022
6acfbe4
WIP
Daniel-Genkin-MS-2 Jun 1, 2022
83d5797
Switched to using AppContext switches?
Daniel-Genkin-MS-2 Jun 1, 2022
ba7d5f5
Reverted to using HTTP instead of HTTPS as per Stephen's PR comment
Daniel-Genkin-MS-2 Jun 2, 2022
dcbc177
Set AppContextSwitch in the sample app to enable webtransport on the …
Daniel-Genkin-MS-2 Jun 2, 2022
07423c8
Moved the AppContext switch setting to the csproj
Daniel-Genkin-MS-2 Jun 2, 2022
146abdc
Attempt to fix the failed CI test
Daniel-Genkin-MS-2 Jun 3, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/Http/Headers/src/HeaderNames.cs
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,9 @@ public static class HeaderNames
/// <summary>Gets the <c>Pragma</c> HTTP header name.</summary>
public static readonly string Pragma = "Pragma";

/// <summary>Gets the <c>Protocol</c> HTTP header name.</summary>
public static readonly string Protocol = ":protocol";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you submit an API proposal for this? I know there are going to be a bunch more APIs, but it might be good to learn the process by quickly filling out the issue template.

Copy link
Member

@Tratcher Tratcher Jun 1, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I already did as part of my h2 WebSockets PR. This field is duplicated in both.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there an API proposal for that yet? The PR doesn't count! I figured approving this one API would be easier than approving the full extended connect server feature we were discussing.

Copy link
Contributor Author

@Daniel-Genkin-MS-2 Daniel-Genkin-MS-2 Jun 1, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Tratcher have you already filed one for :protocol as part of your websockets PR?
Edit: nevermind, should have refreshed the page sooner.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

API proposal: #42002


/// <summary>Gets the <c>Proxy-Authenticate</c> HTTP header name.</summary>
public static readonly string ProxyAuthenticate = "Proxy-Authenticate";

Expand Down
1 change: 1 addition & 0 deletions src/Http/Headers/src/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
#nullable enable
static readonly Microsoft.Net.Http.Headers.HeaderNames.Protocol -> string!
11 changes: 10 additions & 1 deletion src/Servers/Kestrel/Core/src/CoreStrings.resx
Original file line number Diff line number Diff line change
Expand Up @@ -668,4 +668,13 @@ For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?l
<data name="Http3ControlStreamErrorInitializingOutbound" xml:space="preserve">
<value>Error initializing outbound control stream.</value>
</data>
</root>
<data name="Http3DatagramStatusMismatch" xml:space="preserve">
<value>HTTP/3 datagrams negotiation mismatch. Currently client has it '{clientStatus}' and server has it '{serverStatus}'</value>
</data>
<data name="Http3MethodMustBeConnectWhenUsingProtocolPseudoHeader" xml:space="preserve">
<value>Method must be CONNECT when using the :protocol pseudo-header.</value>
</data>
<data name="Http3MissingAuthorityOrPathPseudoHeaders" xml:space="preserve">
<value>The :authority and/or :path pseudo-headers are missing.</value>
</data>
</root>
Loading