)]}'
{
  "commit": "caf68bd38245dec8464a424e13c146c398862004",
  "tree": "9d55eb3dffdb665741d7c0f3211c5103264826b1",
  "parents": [
    "cff6df57ecd63f7068b61e88b97678dcfa6f2403"
  ],
  "author": {
    "name": "bnc",
    "email": "bnc@google.com",
    "time": "Tue Mar 30 05:43:18 2021 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Tue Mar 30 05:44:47 2021 -0700"
  },
  "message": "Avoid unnecessary copy in HttpDecoder if entire payload is present.\n\nMove parsing logic from FinishParsing() to ParseEntirePayload() for CANCEL_PUSH,\nSETTINGS, GOAWAY, MAX_PUSH_ID, PRIORITY_UPDATE, PRIORITY_UPDATE_REQUEST_STREAM,\nand ACCEPT_CH frame types.  Skip FinishParsing() for these frames except when\npayload is empty, when ReadFramePayload() is skipped.  Rename\nBufferFramePayload() to BufferOrParsePayload(), only buffer if necessary, and\ncall ParseEntirePayload() when possible.  Pass QuicDataReader to FinishParsing()\nto make it convenient to pass it on to BufferOrParsePayload() where nothing is\nread from it.\n\nPiperOrigin-RevId: 365791256\nChange-Id: I3fa150e2b886f024de01f85a6b25e5953a8cb0ec\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "02b563d3a886069f0fda8e02ab913cdee2fe1f9f",
      "old_mode": 33188,
      "old_path": "quic/core/http/http_decoder.cc",
      "new_id": "6a5eee0b194dd35fcef090af4e3d723b5718b87c",
      "new_mode": 33188,
      "new_path": "quic/core/http/http_decoder.cc"
    },
    {
      "type": "modify",
      "old_id": "fe955c32bf8fe4015cf4bb02577e3902bb2fba92",
      "old_mode": 33188,
      "old_path": "quic/core/http/http_decoder.h",
      "new_id": "30ae93241ed7d8ecd8459b51b8e80089a5542a0f",
      "new_mode": 33188,
      "new_path": "quic/core/http/http_decoder.h"
    }
  ]
}
