)]}'
{
  "commit": "3e7a445bf42b2e561241ba03bf98fc320ea58814",
  "tree": "9d9559352d27e9cab648849800d506004b169940",
  "parents": [
    "3f563d3b0dee482b8cc70bae68346d9a6d4609a6"
  ],
  "author": {
    "name": "Damien Neil",
    "email": "dneil@google.com",
    "time": "Tue Apr 08 17:01:09 2025 -0700"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Thu Apr 10 11:38:36 2025 -0700"
  },
  "message": "quic: skip packet numbers for optimistic ack defense\n\nAn \"optimistic ACK attack\" involves an attacker sending ACKs\nfor packets it hasn\u0027t received, causing the victim\u0027s\ncongestion controller to improperly send at a higher rate.\n\nThe standard defense against this attack is to skip the occasional\npacket number, and to close the connection with an error if the\npeer ACKs an unsent packet.\n\nImplement this defense, increasing the gap between skipped\npacket numbers as a connection\u0027s lifetime grows and correspondingly\nthe amount of work required on the part of the attacker.\n\nChange-Id: I01f44f13367821b86af6535ffb69d380e2b4d7b7\nReviewed-on: https://go-review.googlesource.com/c/net/+/664298\nLUCI-TryBot-Result: Go LUCI \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Jonathan Amsterdam \u003cjba@google.com\u003e\nAuto-Submit: Damien Neil \u003cdneil@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ba2fd7e865b81631fa49dcadcd95c3bba7117e37",
      "old_mode": 33188,
      "old_path": "quic/conn.go",
      "new_id": "b9ec0e405973d648663afea67b332caee2b08863",
      "new_mode": 33188,
      "new_path": "quic/conn.go"
    },
    {
      "type": "modify",
      "old_id": "753fbb92371cc03d43b7e1886b103a745a2c4a56",
      "old_mode": 33188,
      "old_path": "quic/conn_recv.go",
      "new_id": "a24fc369168a958029f4f53f782ad20db6629b54",
      "new_mode": 33188,
      "new_path": "quic/conn_recv.go"
    },
    {
      "type": "modify",
      "old_id": "2b6d6f08269eb243575ea1123d9e44791c8c83d4",
      "old_mode": 33188,
      "old_path": "quic/conn_send.go",
      "new_id": "d6fb149d9ff50fbb8c0ee9921eb61713a895c334",
      "new_mode": 33188,
      "new_path": "quic/conn_send.go"
    },
    {
      "type": "modify",
      "old_id": "d16b093233835a27b2e979468a290f2daf1ae607",
      "old_mode": 33188,
      "old_path": "quic/conn_send_test.go",
      "new_id": "c5cf93644c317ada7e4fd037f65b7e770bf0c6c6",
      "new_mode": 33188,
      "new_path": "quic/conn_send_test.go"
    },
    {
      "type": "modify",
      "old_id": "c292f691943a44cf1a0581134f298769936ed239",
      "old_mode": 33188,
      "old_path": "quic/conn_streams_test.go",
      "new_id": "af3c1dec8fa8e1c93d0aa50be88ff2741b96e7a8",
      "new_mode": 33188,
      "new_path": "quic/conn_streams_test.go"
    },
    {
      "type": "modify",
      "old_id": "b89aabdf3f6c399689646e1fcf710391e69225ae",
      "old_mode": 33188,
      "old_path": "quic/loss.go",
      "new_id": "ffbf69ddb7e189deb1dec9a594eabf3d036a3386",
      "new_mode": 33188,
      "new_path": "quic/loss.go"
    },
    {
      "type": "modify",
      "old_id": "457c50e615148a830efa214e3f5f4a13fa66bf58",
      "old_mode": 33188,
      "old_path": "quic/sent_packet.go",
      "new_id": "f67606b3534e3320973bc0e222ca464578921b8c",
      "new_mode": 33188,
      "new_path": "quic/sent_packet.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f5ba764f8a6dea07e0bfba0a4f4f912ad861c4ca",
      "new_mode": 33188,
      "new_path": "quic/skip.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1fcb735ff1635d60a8cb81e7b1942604d75425fc",
      "new_mode": 33188,
      "new_path": "quic/skip_test.go"
    }
  ]
}
