Always send the HTTP/3 setting indicating support for RFC 9297 (HTTP Datagrams)

Support for HTTP Datagrams was initially disabled by default because it was an evolving specification. Now that RFC 9297 has been published, we can simplify our codebase by default-enabling them. This matches what we did for the QUIC DATAGRAM transport parameter after RFC 9221 was published.

For use cases that need HTTP Datagram support (such as WebTransport), this change is a no-op because they were already overriding this configuration. For other use cases, the only behavior change is that we now send the setting. We will still silently ignore datagrams when received, as we did before.

This CL also minorly refactors a test to make it easier to debug.

Protected by FLAGS_quic_reloadable_flag_quic_enable_h3_datagrams.

PiperOrigin-RevId: 569300393
4 files changed
tree: 079c99ddc549991fd5881837655089304b6dc40e
  1. build/
  2. depstool/
  3. quiche/
  4. .bazelrc
  5. BUILD.bazel
  6. CONTRIBUTING.md
  7. LICENSE
  8. README.md
  9. WHITESPACE
  10. WORKSPACE.bazel
README.md

QUICHE

QUICHE stands for QUIC, Http, Etc. It is Google‘s production-ready implementation of QUIC, HTTP/2, HTTP/3, and related protocols and tools. It powers Google’s servers, Chromium, Envoy, and other projects. It is actively developed and maintained.

There are two public QUICHE repositories. Either one may be used by embedders, as they are automatically kept in sync:

To embed QUICHE in your project, platform APIs need to be implemented and build files need to be created. Note that it is on the QUICHE team's roadmap to include default implementation for all platform APIs and to open-source build files. In the meanwhile, take a look at open source embedders like Chromium and Envoy to get started:

To contribute to QUICHE, follow instructions at CONTRIBUTING.md.

QUICHE is only supported on little-endian platforms.