)]}'
{
  "commit": "e741d2dda61ececf040503855fc7d3b7cd86d15a",
  "tree": "3f1472e2f9787640bc6891c6be450069d040e87a",
  "parents": [
    "04db1a152381fe4694a2d532d3d1c6c481c09221"
  ],
  "author": {
    "name": "Victor Boivie",
    "email": "boivie@webrtc.org",
    "time": "Sat Oct 10 20:08:19 2026"
  },
  "committer": {
    "name": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Oct 16 08:08:25 2026"
  },
  "message": "dcsctp: Rate limit duplicate FORWARD-TSN chunks\n\nIn commit 0ca62e3752149ad37f73bf074db0a5f8fcaf6585, rate limiting of \nFORWARD-TSNs were added to at most one per min(200ms, srtt),\nregardless of whether it advanced the cumulative TSN or not. RFC 3758\nsection 3.5 (C3) says that a FORWARD-TSN MUST be sent when the\nAdvanced.Peer.Ack.Point advances and the implementation note about \nwaiting an RTT only applies to duplicate FORWARD-TSN chunks. This was \nnot considered at that time.\n\nIf there is frequent packet loss, and messages were sent with limited \nreliability, this delayed every FORWARD-TSN that followed another one \nwithin the interval, and each such delay blocked the receiver from \ndelivering messages on ordered streams for up to 200ms. This aligns with\nhow FreeBSD handles rate limiting of FORWARD-TSN.\n\nBug: webrtc:572239331\nChange-Id: I73f2a5e8ffc2ddb1eadcbee641cc19a4bcc4a7f2\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/508542\nReviewed-by: Danil Chapovalov \u003cdanilchap@webrtc.org\u003e\nCommit-Queue: Victor Boivie \u003cboivie@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#48932}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "861ccd26538db42cef0181cef224893f3453ae79",
      "old_mode": 33188,
      "old_path": "net/dcsctp/socket/dcsctp_socket_test.cc",
      "new_id": "6611fdd688e5d458bfebfb1b7e7722874571d759",
      "new_mode": 33188,
      "new_path": "net/dcsctp/socket/dcsctp_socket_test.cc"
    },
    {
      "type": "modify",
      "old_id": "1be6484129ca19fbf9a1b758731d0a3baae85ea8",
      "old_mode": 33188,
      "old_path": "net/dcsctp/socket/transmission_control_block.cc",
      "new_id": "c3585c5a791122464f310c4980f4cb246f2f74aa",
      "new_mode": 33188,
      "new_path": "net/dcsctp/socket/transmission_control_block.cc"
    },
    {
      "type": "modify",
      "old_id": "a42cdd8e3f7144139ccf7778cdefa55d022fafbb",
      "old_mode": 33188,
      "old_path": "net/dcsctp/socket/transmission_control_block.h",
      "new_id": "4ad6a2b0032d4085819f1110192a5f4a9842a6a6",
      "new_mode": 33188,
      "new_path": "net/dcsctp/socket/transmission_control_block.h"
    }
  ]
}
