Refactor HTTP/3 Datagram

This CL refactors our HTTP/3 Datagram APIs in order to prepare for the transition from draft-ietf-masque-h3-datagram-00 to draft-ietf-masque-h3-datagram-02. This CL switches the QuicSpdySession APIs to use the model and mindset from draft-02, but it still keeps draft-00 on the wire for now.

This CL has no server-side behavior changes. There is one behavior change on the client: the Datagram-Flow-Id now always uses a flow ID equal to the stream ID. That allows simplifying client code. The server code currently still uses whichever flow ID came in the Datagram-Flow-Id header. We'll keep it that way until we can remove support for draft-00.

The mismatch between draft-00 and draft-02 does mean that in some places we have variables called "stream_id" that contain the flow ID when draft-00 is in use, but it'll make it easier to reason about draft-02 which is the direction we're going in.

PiperOrigin-RevId: 383744375
20 files changed
tree: 1439ad539a2522a2a0e9acf486e8eb271563fa10
  1. common/
  2. epoll_server/
  3. http2/
  4. quic/
  5. spdy/
  6. CONTRIBUTING.md
  7. LICENSE
  8. README.md
README.md

QUICHE

QUICHE (QUIC, Http/2, Etc) is Google‘s implementation of QUIC and related protocols. It powers Chromium as well as Google’s QUIC servers and some other projects. QUICHE is only supported on little-endian platforms.

Code can be viewed in CodeSearch in Quiche and is imported into Chromium.