Skip to content

quic: http/3 getting server settings and customSettings #63362

Open

Description

@martenrichter

For applications such as webtransport, http settings are important for negotiating capabilities.

The following problems may be present currently:
1.) I do not see a clear API path for a client that connects to a server to get the settings sent by the server.
Looking at the C++ code, I think the available settings could be on the SessionTicket,
However, if I immediately set a callback to onsessionticket after the Promise for QuicSession is fulfilled, I do not see a call.
@jasnell : Is there another API path to get this information? Or is this a bug, if I do not see the callback? Then I will try to make a test.
2.) nghttp3 does not seem to support settings beyond the settings hardcoded in the library. I will query upstream about implementing a mechanism similar to the customSettings mechanism currently used for http2.

Activity

  1. jasnell commented on May 16, 2026

    @jasnell
    Member

    I've been following @tatsuhiro-t's work on webtransport support and plan to update when it's ready. I intentionally have not provided an api to directly expose the settings yet as it wasn't clear (at the time) how things would shape up. Can definitely look at doing so now

  2. martenrichter commented on May 16, 2026

    @martenrichter
    ContributorAuthor

    Then we wait until the RFC is out, which is the trigger for @tatsuhiro-t to release.
    I have just read to day the spec a bit more in detail, also @tatsuhiro-t said that nghttp3 needed a patch for bidi streams.
    I do not understand so far why, but I assume he is right.
    So I will proceed porting it, but I will then work with a patched quiche counterpart, where I deactivate checks, that we can not currently implement. In this way I can see, what problems with the underlying stream are and we are prepared for the real implementation. Testing against the browsers will not work.
    (Would there be a way to have an experimental node.js branch on top of the nghttp3 PR for webtransport?)

  3. martenrichter commented on May 16, 2026

    @martenrichter
    ContributorAuthor

    Ok, some progress, I have patched quiche so that it assumes that there is always webtransport support.
    I will document, what to do later.
    It sort of connects, and then something crashes, I have to investigate, who is responsible. (I can't tell more).

  4. martenrichter commented on May 23, 2026

    @martenrichter
    ContributorAuthor

    Ok, I got a connection, but then it was closed as the http3 implementation in ngtcp2 does not allow to receive new stream from server.
    I could reimplement some basic http/3 logic on quic for testing, or I try to build in the ngtcp3 patch into the node.js build.

  5. martenrichter commented on May 23, 2026

    @martenrichter
    ContributorAuthor
  6. martenrichter commented on May 24, 2026

    @martenrichter
    ContributorAuthor

    I am playing around with implementing native webtransport support.
    Main purpose is that I can use my tests, but it may be also useful otherwise?
    https://github.com/martenrichter/node/tree/webtransportinterfaces
    Any use if I would do a draft PR.....

  7. added
    quicIssues and PRs related to the QUIC transport implementation.
    on Jun 10, 2026
  8. added
    http3Issues and PRs related to the HTTP/3 implementation.
    webtransportIssues and PRs related to the WebTransport API.
    on Aug 8, 2026
  9. moved this to Design in QUIC Teamon Aug 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    http3Issues and PRs related to the HTTP/3 implementation.quicIssues and PRs related to the QUIC transport implementation.webtransportIssues and PRs related to the WebTransport API.

    Type

    No type

    Projects

    • Status
      Design

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions