)]}'
{
  "commit": "b206ab1f81990756a635ce3a0da93719251506c4",
  "tree": "4d4ae9bf34b365cb346b33d84051132b42e20864",
  "parents": [
    "1072257098cca337068f547c669c4b15a3f624ab"
  ],
  "author": {
    "name": "Victor Boivie",
    "email": "boivie@webrtc.org",
    "time": "Mon Apr 29 13:28:44 2024"
  },
  "committer": {
    "name": "WebRTC LUCI CQ",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu May 30 10:50:30 2024"
  },
  "message": "dcsctp: Restart heartbeat timer when sending DATA\n\nBefore this change, the heartbeat timer was restarted every time a\npacket was sent on the socket. On an idle connection, if the peer is\nsending heartbeats, just responding to those heartbeats (with a\nHEARTBEAT-ACK) would restart the timer, and then this socket wouldn\u0027t\ndo any heartbeating itself because the next hearbeat by the peer would\nbe received before the timer expires.\n\nThis is not according to the specification, where\nhttps://datatracker.ietf.org/doc/html/rfc9260#section-8.3 states that\n\"A destination transport address is considered \"idle\" if no new chunk\n that can be used for updating path RTT (usually including first\n transmission DATA, INIT, COOKIE ECHO, or HEARTBEAT chunks, etc.)\"\n\nThere are already timers running when INIT, and COOKIE-ECHO are sent\nand not acked, so the heartbeat shouldn\u0027t be sent then. This is further\nconfirmed in the same section in the RFC which says that \"The sending of\nHEARTBEAT chunks MAY begin upon reaching the ESTABLISHED state\". And\nwhen INIT and COOKIE-ECHO are sent, the connection is not yet\nestablished.\n\nThis CL changes so that the heartbeat timer is only restarted when any\nDATA or I-DATA chunk is sent. This will make both sides send heartbeats\non an idle connection.\n\nBug: webrtc:343600379\nChange-Id: I5ab159b7901e2ec9d37b24aaf845891b60a53c13\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/352841\nReviewed-by: Florent Castelli \u003corphis@webrtc.org\u003e\nCommit-Queue: Victor Boivie \u003cboivie@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#42409}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d197a383861735cf5610d764b4fe57be572b3f1a",
      "old_mode": 33188,
      "old_path": "net/dcsctp/socket/dcsctp_socket.cc",
      "new_id": "48b6edb67f37f0fd6a89229ce027b75ce9a39af7",
      "new_mode": 33188,
      "new_path": "net/dcsctp/socket/dcsctp_socket.cc"
    },
    {
      "type": "modify",
      "old_id": "2d392d62f131fe3e2ddd254ec6099d8d92e15288",
      "old_mode": 33188,
      "old_path": "net/dcsctp/socket/dcsctp_socket_test.cc",
      "new_id": "d27b26075396f84591970550e9de30490b97b386",
      "new_mode": 33188,
      "new_path": "net/dcsctp/socket/dcsctp_socket_test.cc"
    },
    {
      "type": "modify",
      "old_id": "34223411cbec4b703eb56e9add687f5aad7f78dd",
      "old_mode": 33188,
      "old_path": "net/dcsctp/socket/transmission_control_block.cc",
      "new_id": "e179a8e4aebfdfc937da34cc0c562e6a79620a58",
      "new_mode": 33188,
      "new_path": "net/dcsctp/socket/transmission_control_block.cc"
    }
  ]
}
