)]}'
{
  "commit": "02eb0f3c0a13d33cb696b10ab2d257f46c616a8a",
  "tree": "4b5e58e2083b9d9d4c44e8d4a38c8e1e83ba3e0b",
  "parents": [
    "57bce0e9e9d357708bcc4486f0e8602471f59c78"
  ],
  "author": {
    "name": "Damien Neil",
    "email": "dneil@google.com",
    "time": "Tue Sep 12 15:13:59 2023 -0700"
  },
  "committer": {
    "name": "Damien Neil",
    "email": "dneil@google.com",
    "time": "Wed Sep 13 19:43:51 2023 +0000"
  },
  "message": "quic: avoid deadlock when updating inbound conn-level flow control\n\nhandleStreamBytesReadOffLoop sends a message to the conn\nindicating that we need to send a MAX_DATA update.\n\nCalling this with a stream\u0027s gate locked can lead to a deadlock,\nwhen the conn\u0027s loop is processing an inbound frame for the\nsame stream: The conn can\u0027t acquire the stream\u0027s ingate, and\nthe gate won\u0027t be unlocked until the conn processes another\nevent from its queue.\n\nMove the handleStreamBytesReadOffLoop calls out of the gate.\n\nNo test in this CL, but a following CL contains a test which\nreliably exercises the condition.\n\nFor golang/go#58547\n\nChange-Id: Ic98888947f67408a4a1f6f4a3aaf68c3a2fe8e7f\nReviewed-on: https://go-review.googlesource.com/c/net/+/527580\nReviewed-by: Jonathan Amsterdam \u003cjba@google.com\u003e\nLUCI-TryBot-Result: Go LUCI \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "265fdaf85511af20533e3ccc61e0dd4557481274",
      "old_mode": 33188,
      "old_path": "internal/quic/conn_flow.go",
      "new_id": "cd9a6a912b299d3169636a34e57d911addc3adbf",
      "new_mode": 33188,
      "new_path": "internal/quic/conn_flow.go"
    },
    {
      "type": "modify",
      "old_id": "28559b46953a46145b969287e65064b85205bcc1",
      "old_mode": 33188,
      "old_path": "internal/quic/conn_flow_test.go",
      "new_id": "2cd4e62469a309f0e490124dd7106671692115ad",
      "new_mode": 33188,
      "new_path": "internal/quic/conn_flow_test.go"
    },
    {
      "type": "modify",
      "old_id": "923ff232ef08a024bfe97cb79651a2a888608435",
      "old_mode": 33188,
      "old_path": "internal/quic/stream.go",
      "new_id": "9310811c1b97b44449580e2a20c51ce159e237c3",
      "new_mode": 33188,
      "new_path": "internal/quic/stream.go"
    }
  ]
}
