)]}'
{
  "commit": "620095a9b809a89adf7581fa46ace03d221c98c1",
  "tree": "75aea260611a39379af3009399343f01e29af286",
  "parents": [
    "6d2aea061f8d756db70d4a3e74491c17a43571cf"
  ],
  "author": {
    "name": "bnc",
    "email": "bnc@google.com",
    "time": "Wed Jun 26 05:31:05 2019 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Jun 26 10:33:44 2019 -0700"
  },
  "message": "Do not call HttpDecoder::ProcessInput after error.\n\nThis CL changes API contract and call sites.  Without the change to the call\nsites, //gfe/gfe2/test_tools/fuzzing:gfe_quic_fuzzer would crash on the new\nDCHECK_NE(QUIC_NO_ERROR, error_).  This is because even if Visitor::OnError()\ncloses the connection, the sequencer might have more data that QuicSpdyStream is\neager to read and feed to HttpDecoder::ProcessInput().\n\nCurrently HttpDecoder::ProcessInput() ignores input upon error.  However, I\u0027m\ngoing to modify the call sites to use PeekRegion() instead of\nPrefetchNextRegion() and spin until decoding is paused by a visitor method or no\nnew region is there to peek at.  Since HttpDecoder::ProcessInput() returns 0\nif called after an error, this would just result in PeekRegion() being called\nwith the same offset, returning true, and the cycle spinning in an infinite\nloop.\n\ngfe-relnote: n/a, change to QUIC v99-only code path.\nPiperOrigin-RevId: 255168809\nChange-Id: I6b6f0b0986f2f6bec0a8eedb695dc91943d57bf2\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1bcbfaac501e76314e2c8fd5a592bc2b719c5f68",
      "old_mode": 33188,
      "old_path": "quic/core/http/http_decoder.cc",
      "new_id": "ffd5c74eaf05c6ce0b28e27694f1704b26075b40",
      "new_mode": 33188,
      "new_path": "quic/core/http/http_decoder.cc"
    },
    {
      "type": "modify",
      "old_id": "fa0a27b3672194eca451c74df15b69cc50353ed3",
      "old_mode": 33188,
      "old_path": "quic/core/http/http_decoder.h",
      "new_id": "515daaeef3a052f184dc654c5b6c5ce93b2d70e7",
      "new_mode": 33188,
      "new_path": "quic/core/http/http_decoder.h"
    },
    {
      "type": "modify",
      "old_id": "e7efad1a8f995a65a049e7654676b97d486813c3",
      "old_mode": 33188,
      "old_path": "quic/core/http/quic_receive_control_stream.cc",
      "new_id": "9e166e09cb21698f8c74997a84827b4ea7d62a6f",
      "new_mode": 33188,
      "new_path": "quic/core/http/quic_receive_control_stream.cc"
    },
    {
      "type": "modify",
      "old_id": "92138a491a1db1672655250d8502ab040297da76",
      "old_mode": 33188,
      "old_path": "quic/core/http/quic_spdy_stream.cc",
      "new_id": "b7522c0dad92fcd1a00a5ebef1c83ed083b804f8",
      "new_mode": 33188,
      "new_path": "quic/core/http/quic_spdy_stream.cc"
    }
  ]
}
