Avoid unnecessary copy in HttpDecoder if entire payload is present.

Move parsing logic from FinishParsing() to ParseEntirePayload() for CANCEL_PUSH,
SETTINGS, GOAWAY, MAX_PUSH_ID, PRIORITY_UPDATE, PRIORITY_UPDATE_REQUEST_STREAM,
and ACCEPT_CH frame types.  Skip FinishParsing() for these frames except when
payload is empty, when ReadFramePayload() is skipped.  Rename
BufferFramePayload() to BufferOrParsePayload(), only buffer if necessary, and
call ParseEntirePayload() when possible.  Pass QuicDataReader to FinishParsing()
to make it convenient to pass it on to BufferOrParsePayload() where nothing is
read from it.

PiperOrigin-RevId: 365791256
Change-Id: I3fa150e2b886f024de01f85a6b25e5953a8cb0ec
2 files changed
tree: 9d55eb3dffdb665741d7c0f3211c5103264826b1
  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.