)]}'
{
  "commit": "21bbf1cd55a465bd2ac34b1e469a3135ca77c4fb",
  "tree": "8098d1c1f8a89c20a34ca6101db79ae9b2b8e04e",
  "parents": [
    "453bda8fea991fd1a333fa5326b1afbcfeaafe5d"
  ],
  "author": {
    "name": "bnc",
    "email": "bnc@google.com",
    "time": "Tue Sep 28 11:24:08 2021 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Tue Sep 28 11:24:50 2021 -0700"
  },
  "message": "Simplify HttpDecoder state transitions.\n\nBoth before and after this CL, non-buffered frames go through the following\nstates:\n  STATE_READING_FRAME_LENGTH\n  STATE_READING_FRAME_TYPE\n  STATE_READING_FRAME_PAYLOAD\n  STATE_FINISH_PARSING\nThey skip STATE_READING_FRAME_PAYLOAD if the payload is empty.\n\nBefore this CL, buffered frames normally skip STATE_FINISH_PARSING, except they\nskip STATE_READING_FRAME_PAYLOAD if payload is empty just like non-buffered\nstates, and therefore they have to go through STATE_FINISH_PARSING.\nReadFramePayload() corresponds to STATE_READING_FRAME_PAYLOAD and\nFinishParsing() corresponds to STATE_FINISH_PARSING, and states are only changed\nin methods that correspond to states, except for the helper\nBufferOrParsePayload() which does not have a corresponding state but can still\nchange the state, which its caller must detect.\n\nAfter this CL, the states STATE_READING_FRAME_PAYLOAD and STATE_FINISH_PARSING\nonly process non-buffered frames, and buffered frames go through a dedicated new\nstate STATE_BUFFER_OR_PARSE_PAYLOAD.  The state transition path forks in\nReadFrameLength().  BufferOrParsePayload() gets promoted from a random helper\ncalled from other methods to a method corresponding to a state, called from\nProcessInput() which drives the state machine.  State transitions are now\ncleaner.\n\nPiperOrigin-RevId: 399487182\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2265b77d3483449e95985177333c85325398d126",
      "old_mode": 33188,
      "old_path": "quic/core/http/http_decoder.cc",
      "new_id": "02aa123ed7a346b470253a69110daa6644174f69",
      "new_mode": 33188,
      "new_path": "quic/core/http/http_decoder.cc"
    },
    {
      "type": "modify",
      "old_id": "002ff68f0081a88edcac9999258c626a1f233714",
      "old_mode": 33188,
      "old_path": "quic/core/http/http_decoder.h",
      "new_id": "118fbcf59f5c251d2c57922b0feaa5e4289d0bc5",
      "new_mode": 33188,
      "new_path": "quic/core/http/http_decoder.h"
    }
  ]
}
