)]}'
{
  "commit": "2f2b7420cbef0e29be7890f35aed33d303111233",
  "tree": "e4b69318802b26d627ea63e30bdc8504a8b75fce",
  "parents": [
    "8e9d94458d1ba68a1f1deb87b66c96d786905006"
  ],
  "author": {
    "name": "bnc",
    "email": "bnc@google.com",
    "time": "Wed Oct 02 18:10:43 2019 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu Oct 03 12:37:28 2019 -0700"
  },
  "message": "Fix QPACK crash by unregistering observers with QpackHeaderTable.\n\nQpackHeaderTable is owned by QpackDecoder, owned by QuicSpdySession.  Each\nobserver is a QpackProgressiveDecoder, owned by QpackHeaderAccumulator, owned by\nQuicSpdyStream.  If a stream is deleted (local cancellation, reset received from\npeer), then the observer must be deregistered with QpackHeaderTable in order to\navoid a crash.\n\ngfe-relnote: n/a, change to QUIC v99-only code.  Protected by existing disabled gfe2_reloadable_flag_quic_enable_version_99.\nPiperOrigin-RevId: 272562981\nChange-Id: Ia49f2ef9aeeebcccb83405107f0224ee7d23694f\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1d3092cd42aa0249ffb5bb3dc2e59083f9af56ae",
      "old_mode": 33188,
      "old_path": "quic/core/http/quic_spdy_session_test.cc",
      "new_id": "3e0a6f8d1de0ee454adceee46b174c462e548e0f",
      "new_mode": 33188,
      "new_path": "quic/core/http/quic_spdy_session_test.cc"
    },
    {
      "type": "modify",
      "old_id": "30f15a57a92c4ba24dc86729cfff7e76e1d1d3d6",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/qpack_header_table.cc",
      "new_id": "7274ce4459565bd4d928aef4c91dfa3ec3723073",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/qpack_header_table.cc"
    },
    {
      "type": "modify",
      "old_id": "919a4eb0f101ad3e7fd97dfd2bd40fa9be23a245",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/qpack_header_table.h",
      "new_id": "34dfd1cecb20c411dac67c9a9cd4defdcf558f85",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/qpack_header_table.h"
    },
    {
      "type": "modify",
      "old_id": "5a97c20ccf28348970a473f0282dd1af126ea579",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/qpack_header_table_test.cc",
      "new_id": "907c2dbc932aa21df2ca3a72d7210c557c84e70a",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/qpack_header_table_test.cc"
    },
    {
      "type": "modify",
      "old_id": "56322861965a8b1618f76acb823963db16ad3553",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/qpack_progressive_decoder.cc",
      "new_id": "7037f15180bd69a9c7b4497a2d2292df779b789d",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/qpack_progressive_decoder.cc"
    },
    {
      "type": "modify",
      "old_id": "5c116b1d52585ed6405a83e52bdbc78653f3c609",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/qpack_progressive_decoder.h",
      "new_id": "dbb40937d884934771368597051a97750e5a3112",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/qpack_progressive_decoder.h"
    }
  ]
}
