)]}'
{
  "commit": "49e65a4576c028e01227ce51ab3a7b76c36eb1bf",
  "tree": "181b9a9b155fe2b668e34b52152f354f11e3ee6e",
  "parents": [
    "5f7c70d3291ecfbc9ffe07bea8f6cbe55568389f"
  ],
  "author": {
    "name": "birenroy",
    "email": "birenroy@google.com",
    "time": "Thu Jan 11 12:19:11 2024 -0800"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu Jan 11 12:20:47 2024 -0800"
  },
  "message": "Fixes a code defect reported in https://github.com/envoyproxy/envoy/issues/31710.\n\nIn a very specific situation, OgHttp2Session can enter an infinite loop. This requires the following conditions:\n* a stream has both response body data and trailers to write;\n* the stream becomes blocked by stream-level flow control while writing the body; and\n* the connection still has flow control quota available.\n\nIn this circumstance, OgHttp2Session::HasReadyStream() returns true because trailers_ready_ is not empty, but WriteForStream() cannot make progress.\n\nThe fix is to remove the stream ID from trailers_ready_ in GetNextReadyStream().\n\nProtected by not protected, does not affect the GFE binary.\n\nPiperOrigin-RevId: 597622882\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d07705123f2ce0ada50444f5dec566075948f290",
      "old_mode": 33188,
      "old_path": "quiche/http2/adapter/oghttp2_adapter_test.cc",
      "new_id": "6b570e21fe2ed5baf67cc267230fe08ef4342596",
      "new_mode": 33188,
      "new_path": "quiche/http2/adapter/oghttp2_adapter_test.cc"
    },
    {
      "type": "modify",
      "old_id": "0242f403e4c2725b55ca209e1ba933d984b682cb",
      "old_mode": 33188,
      "old_path": "quiche/http2/adapter/oghttp2_session.cc",
      "new_id": "ad67a18e5da68040c1bfbe3adbaf43ae910693f3",
      "new_mode": 33188,
      "new_path": "quiche/http2/adapter/oghttp2_session.cc"
    }
  ]
}
