)]}'
{
  "commit": "dfd44900ff1883a74d785cf2c0f551f3abcfea84",
  "tree": "92aec5e027b7a19a2b677c1218bd6826ccd9e598",
  "parents": [
    "7c3252a67badce0854305403be6f51b1b298895a"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Mon Nov 04 04:41:16 2024 +0000"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Nov 18 22:47:35 2024 +0000"
  },
  "message": "Schedule ACKs when we receive a partial flight\n\nThis implements a very simple ACK policy: for every ACKable record (i.e.\ncontains no far-future fragments that we ignore), add it to a queue of\nrecord numbers to ACK and set an ACK timer at 1/4 of the current\nretransmission timeout.\n\nRFC 9147 doesn\u0027t say a whole lot, but this is arguably slightly\ndifferent from the recommended policy. RFC 9147 has some text with\nimplies you\u0027re only meant to ACK the current flight and not arbitrarily\nold message fragments. However, tracking that in the fully general case with\npost-handshake messages is unclear. There\u0027s no harm in ACKing those\npackets, so start with this. See discussion in\nhttps://mailarchive.ietf.org/arch/msg/tls/kjJnquJOVaWxu5hUCmNzB35eqY0/\n\nSomething kind of fun is that this provision in the spec happens for\nfree:\n\n\u003e ACKs SHOULD NOT be sent for these flights unless the responding flight\n\u003e cannot be generated immediately. All other flights MUST be ACKed. In\n\u003e this case, implementations MAY send explicit ACKs for the complete\n\u003e received flight even though it will eventually also be implicitly\n\u003e acknowledged through the responding flight. A notable example for this\n\u003e is the case of client authentication in constrained environments,\n\u003e where generating the CertificateVerify message can take considerable\n\u003e time on the client.\n\nIf we generate the next flight before the ACK timer, it will be canceled\nand we don\u0027t ACK. If the next flight is async and takes too long, the\nACK timer will win and we tell the peer not to retransmit.\n\nBug: 42290594\nChange-Id: I7974499f82ce2b2c7da91f02ca65886b0f82896c\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/72952\nReviewed-by: Nick Harper \u003cnharper@chromium.org\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a7369542378aae713f7c75ca4ddc575bafde0ca3",
      "old_mode": 33188,
      "old_path": "ssl/d1_both.cc",
      "new_id": "e5cc7acaf1e49472386f9588b816c1896396eb0c",
      "new_mode": 33188,
      "new_path": "ssl/d1_both.cc"
    },
    {
      "type": "modify",
      "old_id": "c73a1029baa2537040f00bec03e243d2c0ec43b8",
      "old_mode": 33188,
      "old_path": "ssl/d1_lib.cc",
      "new_id": "2c7a1cd8ab7dc3303550a59788baa93c65b08201",
      "new_mode": 33188,
      "new_path": "ssl/d1_lib.cc"
    },
    {
      "type": "modify",
      "old_id": "8dcc097fa3720440b94f6d2d9e19e7d6ba7615f7",
      "old_mode": 33188,
      "old_path": "ssl/internal.h",
      "new_id": "a8ceb16a9098d3b03fa73d884a7267a83a40dc3a",
      "new_mode": 33188,
      "new_path": "ssl/internal.h"
    },
    {
      "type": "modify",
      "old_id": "65219d8477b67c044f2c9ea2f4d1e7dd7a8cd506",
      "old_mode": 33188,
      "old_path": "ssl/test/handshake_util.cc",
      "new_id": "d5e43e7fd6d79e3a5b8d5a3f403b6e276131347e",
      "new_mode": 33188,
      "new_path": "ssl/test/handshake_util.cc"
    },
    {
      "type": "modify",
      "old_id": "f5e2a54c9132e1a2cbcde54c1fed8ed2b1eb07cf",
      "old_mode": 33188,
      "old_path": "ssl/test/packeted_bio.cc",
      "new_id": "94065506d252e3e257eeddc3271f1f5a0ca2bc29",
      "new_mode": 33188,
      "new_path": "ssl/test/packeted_bio.cc"
    },
    {
      "type": "modify",
      "old_id": "b99e9719118a4f93fc02c00c2eb0de64d12afad3",
      "old_mode": 33188,
      "old_path": "ssl/test/packeted_bio.h",
      "new_id": "9b2e50e55d7ae9fc6839d60ef77ad72e96fafe0e",
      "new_mode": 33188,
      "new_path": "ssl/test/packeted_bio.h"
    },
    {
      "type": "modify",
      "old_id": "9dddd138aa571b04d4cc0fc9df84cc4953af0d5c",
      "old_mode": 33188,
      "old_path": "ssl/test/runner/handshake_server.go",
      "new_id": "9f907222577b52d0acfa342b41661836dd222e06",
      "new_mode": 33188,
      "new_path": "ssl/test/runner/handshake_server.go"
    },
    {
      "type": "modify",
      "old_id": "6ee603fa4e7971d34ee4bb1a72e344f721224a39",
      "old_mode": 33188,
      "old_path": "ssl/test/runner/runner.go",
      "new_id": "29c12310ca88f226ad0aa3711a3bbc74e5b6b885",
      "new_mode": 33188,
      "new_path": "ssl/test/runner/runner.go"
    },
    {
      "type": "modify",
      "old_id": "4c3c1cc0cdd442f6f807f182e714fcd599ad048e",
      "old_mode": 33188,
      "old_path": "ssl/test/test_config.cc",
      "new_id": "6583b74fd5e465b1b76d74332c50b2f5155d28b6",
      "new_mode": 33188,
      "new_path": "ssl/test/test_config.cc"
    },
    {
      "type": "modify",
      "old_id": "093d2410a65e8e51a842e4d2e5488a6aee8805bd",
      "old_mode": 33188,
      "old_path": "ssl/test/test_config.h",
      "new_id": "b4b290d2cd900af0337e13f867aa5d59b672e545",
      "new_mode": 33188,
      "new_path": "ssl/test/test_config.h"
    }
  ]
}
