-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
Fix HTTP/3 ALPN #56215
Fix HTTP/3 ALPN #56215
Conversation
Tagging subscribers to this area: @dotnet/ncl Issue DetailsFixes #55894
|
/azp run runtime-libraries stress-http |
Azure Pipelines successfully started running 1 pipeline(s). |
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.
Should we create test to verify that setting HTTP version to 3.0 will send correct/expected ALPN in handshake?
src/libraries/Common/tests/System/Net/Http/Http3LoopbackServer.cs
Outdated
Show resolved
Hide resolved
src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http3Connection.cs
Show resolved
Hide resolved
I was observing transport (msquic) failures with ALPN_NEG_FAILURE when I've updated Http3Connection to "h3" but not yet updated Http3LoopbackServer, so existing tests kind-of check that implicitly. But I'll see how to create more explicit test. |
I am observing a lot of stress failures for HTTP/3 (but it's not like all of them fail). I don't know whether it was this change that regressed it or some other change. I would expect it to fail completely if it was this change, so I have doubts, but I will investigate. |
is there need to update asp.net as well? |
Re this:
This seems super weird, any idea what's up here? |
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.
👍
Stress regression is unrelated, shows on main, created an issue for that #56310 |
@wfurt I wasn't able to come up with an idea on how to verify that explicitly. ALPN is hidden in QUIC handshake, isn't it? So I don't know how to intercept msquic to get that information... Do you have some ideas on how I could achieve that?
@geoffkizer It could be that the server just isn't working for some reason, but we need to investigate in #54726
@wfurt ASP.NET Core tests will need to be updated |
I don't think we need to hold back for the test @CarnaViire. It would be nice. I see two possible strategies. QuicConnection has NegotiatedApplicationProtocol. And the handshake happens early on. So it seems like if you create QuicListener and do HttpRequest to it you should know - even if everything else fails. Alternatively we could update Loopback server and/or get access to it via some reflection. |
We'll update our configurable ALPN to h3. The property will probably be removed for RC1. |
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.
LGTM
Fixes #55894
Re #54726: I've taken a quick look on whether interop tests would start working after this. For
Public_Interop_Upgrade_Success
, it now works with LiteSpeed and Cloudflare servers and does not with Chromium one (error CONNECTION_IDLE).Public_Interop_Upgrade_Success
still does not work at all, however the test itself seemed strange to me, but I didn't spend much time analyzing.