)]}'
{
  "commit": "70914269abdaa5d208822c1114a9f8e438e290e1",
  "tree": "66f3cd61e646294d6b51444e43afacb6b1457d0a",
  "parents": [
    "6987b4ab40325b3fab82417cf2ad2125a4819030"
  ],
  "author": {
    "name": "bnc",
    "email": "bnc@google.com",
    "time": "Sat Mar 16 12:49:50 2019 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Sat Mar 16 12:50:35 2019 -0700"
  },
  "message": "Improve handing of frames with empty payload in HttpDecoder.\n\nThe current draft allows HTTP frames to have an empty payload.  Before this CL, there were some issues with our implementation:\n\n(1) Frames with empty payload were not processed until data from the next frame arrived.\n(2) OnDataFrameStart() and OnHeadersFrameStart() were only called after some more data (frame payload or next frame) arrived, even though all necessary argument values were already available when the frame header was processed.\n(3) If a DATA or HEADERS or PUSH_PROMISE frame had no payload, On*FramePayload() was called once with an empty string argument.\n\nThis CL adds one more state to the state machine, and fixes these issues.  It also documents that the |payload| argument of On*FramePayload() cannot be empty by adding some DCHECKs.\n\ngfe-relnote: n/a.  Change in QUIC v99 only, code path not used in production.\nPiperOrigin-RevId: 238811718\nChange-Id: I020dd16ebdb529a77fb2fa7969a65ceede667530\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7bccbbc2112db676b4abe1bdfb0d4c597bfe9300",
      "old_mode": 33188,
      "old_path": "quic/core/http/http_decoder.cc",
      "new_id": "01d5e4bff8745705018102ca1c99ca8bc3163f88",
      "new_mode": 33188,
      "new_path": "quic/core/http/http_decoder.cc"
    },
    {
      "type": "modify",
      "old_id": "cbfa65eb1033c6857e9d0e8f948f5c7c2f4437f2",
      "old_mode": 33188,
      "old_path": "quic/core/http/http_decoder.h",
      "new_id": "1cc973ab6270e7440a463a4a9277aa3cff951399",
      "new_mode": 33188,
      "new_path": "quic/core/http/http_decoder.h"
    },
    {
      "type": "modify",
      "old_id": "5e620cbdd3945e4cccab9a0add6e9db4dab41144",
      "old_mode": 33188,
      "old_path": "quic/core/http/http_decoder_test.cc",
      "new_id": "53b5f8606d6ec451ae7ce163cea2eef5f399d91d",
      "new_mode": 33188,
      "new_path": "quic/core/http/http_decoder_test.cc"
    },
    {
      "type": "modify",
      "old_id": "8a6f00218e2996805bf162a67149266936a55aeb",
      "old_mode": 33188,
      "old_path": "quic/core/http/quic_spdy_stream.cc",
      "new_id": "012250a4a291f0b4842426f811f42367a39a028f",
      "new_mode": 33188,
      "new_path": "quic/core/http/quic_spdy_stream.cc"
    },
    {
      "type": "modify",
      "old_id": "dcb8030e3cea513175afc9224d753a949a112631",
      "old_mode": 33188,
      "old_path": "quic/core/http/quic_spdy_stream_body_buffer.cc",
      "new_id": "c0a77b29485e1c7a0181d6caaaa618cd880e813c",
      "new_mode": 33188,
      "new_path": "quic/core/http/quic_spdy_stream_body_buffer.cc"
    }
  ]
}
