)]}'
{
  "commit": "44d2aec6e8795ac22b9121b3d2ecf43589e8ecd2",
  "tree": "01dec43890b025294f6b3dc98c0fae211034c50d",
  "parents": [
    "225bc32a989d7a22fa6addafd4ce7dcd04675dbf"
  ],
  "author": {
    "name": "Andrzej Hunt",
    "email": "andrzej@ahunt.org",
    "time": "Sun Sep 26 15:58:33 2021 +0000"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Sep 27 10:34:41 2021 -0700"
  },
  "message": "connect: also update offset for features without values\n\nparse_feature_value() takes an offset, and uses it to seek past the\npoint in features_list that we\u0027ve already seen. However if the feature\nbeing searched for does not specify a value, the offset is not\nupdated. Therefore if we call parse_feature_value() in a loop on a\nvalue-less feature, we\u0027ll keep on parsing the same feature over and over\nagain. This usually isn\u0027t an issue: there\u0027s no point in using\nnext_server_feature_value() to search for repeated instances of the same\ncapability unless that capability typically specifies a value - but a\nbroken server could send a response that omits the value for a feature\neven when we are expecting a value.\n\nTherefore we add an offset update calculation for the no-value case,\nwhich helps ensure that loops using next_server_feature_value() will\nalways terminate.\n\nnext_server_feature_value(), and the offset calculation, were first\nadded in 2.28 in 2c6a403d96 (connect: add function to parse multiple\nv1 capability values, 2020-05-25).\n\nThanks to Peff for authoring the test.\n\nCo-authored-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Andrzej Hunt \u003candrzej@ahunt.org\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "70b13389ba5f706045b2b77114fa6f4797b58d28",
      "old_mode": 33188,
      "old_path": "connect.c",
      "new_id": "71e8757e24ddbab1f69c073cef429f8bd5d3f590",
      "new_mode": 33188,
      "new_path": "connect.c"
    },
    {
      "type": "modify",
      "old_id": "5c941949b980b49607fb9b3876487110cf0acabc",
      "old_mode": 33261,
      "old_path": "t/t5704-protocol-violations.sh",
      "new_id": "bc393d7c31939f6e592815614521741c3e8dc087",
      "new_mode": 33261,
      "new_path": "t/t5704-protocol-violations.sh"
    }
  ]
}
