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

QUIC Listener ConnectionOptionsCallback ALPN Narrowing Down Failure with Wrong Error Code #86701

Closed
liveans opened this issue May 24, 2023 · 3 comments · Fixed by #91116
Closed
Labels
area-System.Net.Quic disabled-test The test is disabled in source code against the issue test-run-core Test failures in .NET Core test runs
Milestone

Comments

@liveans
Copy link
Member

liveans commented May 24, 2023

This is a tracking issue for msquic next release to activate Listener_AlpnNarrowingDown_Failure test inside of QuicListenerTests.

Description:
While we're narrowing down ALPN negotiation list with ConnectionOptionsCallback, Quic is renegotiating ALPN with the Client.

                ApplicationProtocols = new List<SslApplicationProtocol>()
                {
                    new SslApplicationProtocol("foo"),
                    new SslApplicationProtocol("bar"),
                    new SslApplicationProtocol("test"),
                },
                ConnectionOptionsCallback = (_, _, _) =>
                {
                    // Narrowing down alpn list to more specific.
                    var options = CreateQuicServerOptions();
                    options.ServerAuthenticationOptions.ApplicationProtocols = new()
                    {
                        new SslApplicationProtocol("bar"),
                        new SslApplicationProtocol("test"),
                    };
                    return ValueTask.FromResult(options);
                }

In that case, if Quic can't find any matching ALPN between the client and server, the connection is failing with QUIC_STATUS_INTERNAL_ERROR instead of QUIC_STATUS_ALPN_NEG_FAILURE.

This is coming from msquic and has already been fixed in both the main and release/2.2 branches. (microsoft/msquic#3647 and microsoft/msquic#3649)

@dotnet-issue-labeler dotnet-issue-labeler bot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label May 24, 2023
@ghost ghost added the untriaged New issue has not been triaged by the area owner label May 24, 2023
@ghost
Copy link

ghost commented May 24, 2023

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

Issue Details

This is a tracking issue for msquic next release to activate Listener_AlpnNarrowingDown_Failure test inside of QuicListenerTests.

Description:
While we're narrowing down ALPN negotiation list with ConnectionOptionsCallback, Quic is renegotiating ALPN with the Client.

                ApplicationProtocols = new List<SslApplicationProtocol>()
                {
                    new SslApplicationProtocol("foo"),
                    new SslApplicationProtocol("bar"),
                    new SslApplicationProtocol("test"),
                },
                ConnectionOptionsCallback = (_, _, _) =>
                {
                    // Narrowing down alpn list to more specific.
                    var options = CreateQuicServerOptions();
                    options.ServerAuthenticationOptions.ApplicationProtocols = new()
                    {
                        new SslApplicationProtocol("bar"),
                        new SslApplicationProtocol("test"),
                    };
                    return ValueTask.FromResult(options);
                }

In that case, if Quic can't find any matching ALPN between the client and server, the connection is failing with QUIC_STATUS_INTERNAL_ERROR instead of QUIC_STATUS_ALPN_NEG_FAILURE.

This is coming from msquic and has already been fixed in both the main and release/2.2 branches. (microsoft/msquic#3647 and microsoft/msquic#3649)

Author: liveans
Assignees: -
Labels:

untriaged, area-System.Net.Quic, needs-area-label

Milestone: -

@liveans liveans added disabled-test The test is disabled in source code against the issue and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels May 24, 2023
@ManickaP ManickaP removed the untriaged New issue has not been triaged by the area owner label May 24, 2023
@ManickaP ManickaP added this to the 8.0.0 milestone May 24, 2023
@liveans
Copy link
Member Author

liveans commented Jun 12, 2023

msquic v2.2.2 has been released, which includes these changes. https://github.com/microsoft/msquic/releases/tag/v2.2.2 We need to update our pipeline msquic package versions and I will enable the test on #86659 this PR.

@wfurt
Copy link
Member

wfurt commented Jun 12, 2023

docker images are easy and Debian should be already done. RH Stream 8 will be triggered when dotnet/dotnet-buildtools-prereqs-docker#895 is merged.

For actual Helix machines it may take several more weeks. AFAIK they are on auto-updated and updated on most Wednesdays.

@karelz karelz added the test-run-core Test failures in .NET Core test runs label Jul 16, 2023
@karelz karelz modified the milestones: 8.0.0, 9.0.0 Jul 18, 2023
@ghost ghost added the in-pr There is an active PR which will close this issue when it is merged label Aug 25, 2023
@ghost ghost removed the in-pr There is an active PR which will close this issue when it is merged label Sep 4, 2023
@ghost ghost locked as resolved and limited conversation to collaborators Oct 5, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-System.Net.Quic disabled-test The test is disabled in source code against the issue test-run-core Test failures in .NET Core test runs
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants