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

nghttpx and jetty http3 client #1938

Closed
ChGen opened this issue Aug 28, 2023 · 2 comments
Closed

nghttpx and jetty http3 client #1938

ChGen opened this issue Aug 28, 2023 · 2 comments

Comments

@ChGen
Copy link

ChGen commented Aug 28, 2023

When trying jetty http3 client, I found out that it fails with nghttpx http3 server.
For example, java test below fails for https://nghttp2.org:4433 (or local nghttpx), but will pass for https://http3check.net
However, curl built with http3 support will connect both https://nghttp2.org:4433 and https://http3check.net successfully.

curl -kv --http3 https://nghttp2.org:4433

According to the comment in jetty/jetty.project#10390 , this could be bug in the nghttpx too:

Note that the value sent by nghttp2.org is 4611686018427387903, which is not a "grease" value.
The closes grease value is 0x1F * 148764065110560899 + 0x21 = 4611686018427387902 which is off by 1 with what sent by nghttp2.org, so I guess also nghttp2.org has a bug.

Test code:

    @Test
    public void testConnection_nghttp2() throws Exception {
        final HTTP3Client h3Client = new HTTP3Client();
        final HttpClientTransportOverHTTP3 transport = new HttpClientTransportOverHTTP3(h3Client);
        final HttpClient client = new HttpClient(transport);
        client.start();
        final ContentResponse response = client.GET("https://nghttp2.org:4433"); // will pass for 'https://http3check.net`
        assertEquals(200, response.getStatus());
        client.stop();
    }
@tatsuhiro-t
Copy link
Member

Greasing is done for settings ID, not value.
4611686018427387903 is a valid value for SETTINGS_MAX_FIELD_SECTION_SIZE. That is the maximum value that can be expressed in 62-bit unsigned integer.
I think jetty should try to convert it to 64-bit integer rather than int (which I assume 32-bit integer which is too small).

@tatsuhiro-t
Copy link
Member

Closing because this is not a bug on our side.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants