)]}'
{
  "commit": "2d3e863fa9cc0df0b52665be986442bfc33325a3",
  "tree": "880335ed9ceffe76c48c99a6ba6956cd1dc270bd",
  "parents": [
    "8bf0359a367bd262f07ec5842fd00a80751bc958"
  ],
  "author": {
    "name": "Amine Alami",
    "email": "43780877+Alami-Amine@users.noreply.github.com",
    "time": "Wed Jul 15 21:25:09 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jul 15 19:25:09 2026 +0000"
  },
  "message": "[IM] Reject chunked WriteRequest combined with SuppressResponse (#73046)\n\nA WriteRequestMessage that sets both MoreChunkedMessages and\nSuppressResponse is not a valid chunked write: per the data model\nencoding specification, SuppressResponse SHALL be false when\nMoreChunkedMessages is true.\n\nSuppressResponse handling on the write path was added in #72003. This\nchange enforces the constraint on both sides:\n\n- Receive side: WriteHandler::ProcessWriteRequest previously rejected\n  more-chunks only for group and timed writes, so a suppressed\n  multi-chunk first message was accepted and the WriteHandler was kept\n  alive awaiting the next chunk. Because the response was suppressed,\n  nothing was sent on the exchange and the messaging layer closed it,\n  leaving the handler allocated with no exchange and never released.\n  Since the handler pool is bounded (CHIP_IM_MAX_NUM_WRITE_HANDLER),\n  repeated such requests exhaust it and subsequent WriteRequests are\n  answered with Busy. Reject the combination at the accept gate,\n  alongside the existing group/timed guards.\n\n- Send side: WriteClient now refuses to chunk a suppressed write, in\n  StartNewMessage and SendWriteRequest, alongside the existing timed\n  and group guards. The timed+chunk rejection in StartNewMessage now\n  returns CHIP_ERROR_INVALID_MESSAGE_TYPE instead of\n  CHIP_ERROR_NO_MEMORY.\n\nAdd regression tests for both the receive-side handler release and the\nsend-side rejection.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3d2e9ea631790a62f14b1aba77e30a4c97534c0b",
      "old_mode": 33188,
      "old_path": "src/app/WriteClient.cpp",
      "new_id": "3172e118c3d58d18967030409d2be3f9d45a21ae",
      "new_mode": 33188,
      "new_path": "src/app/WriteClient.cpp"
    },
    {
      "type": "modify",
      "old_id": "e2ece4394256214c488f2f9992024ce0cf80844d",
      "old_mode": 33188,
      "old_path": "src/app/WriteHandler.cpp",
      "new_id": "16799040aaa3ee0caa031fe1d85c1ef72bd1dbf2",
      "new_mode": 33188,
      "new_path": "src/app/WriteHandler.cpp"
    },
    {
      "type": "modify",
      "old_id": "325d90184d4fb896012c026580a656afcbbd6671",
      "old_mode": 33188,
      "old_path": "src/app/tests/TestWriteInteraction.cpp",
      "new_id": "68b56bccaf9f007453056aa9849c22ca531dcc90",
      "new_mode": 33188,
      "new_path": "src/app/tests/TestWriteInteraction.cpp"
    }
  ]
}
