Refactor QPACK roundtrip fuzzer.

Create EncodingEnpoint and DecodingEndpoint, encapsulate crashing delegates.
Change SplitHeaderList to return QuicHeaderList instead of SpdyHeaderBlock.
Create VerifyingDecoder and use it with QpackDecodedHeadersAccumulator for
decoding instead of previous DecodeHeaderBlock function with TestHeadersHandler.

This is largely a no-op refactor, except header blocks are not broken up into
fragments any more when fed into the decoder.  This of course mostly invalidates
the fuzzer corpus, which I'll regenerate after I'm done with the dynamic table
work.

Some of this CL feels clumpsy, like OnHeaderBlockStart(),
OnHeaderBlockFragment(), and OnHeaderBlockEnd() calls in succession, or calling
AddExpectedHeaderList() instead of passing expected_header_list directly in
OnHeaderBlockEnd().  This will all make sense with subsequent changes supporting
the dynamic table and async decoding.

gfe-relnote: n/a, test-only change.
PiperOrigin-RevId: 263373592
Change-Id: Ied24c806c85cfe09fd27f9da5f0a2f60357c8baf
1 file changed
tree: eb7c1a3ac01ef42db53869130ae5a5e022eced74
  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.

The code is currently in process of being moved from https://cs.chromium.org/chromium/src/net/third_party/ into this repository. Please excuse our appearance while we're under construction.