)]}'
{
  "commit": "dbcd158546b65baff5136be412d513434ff84395",
  "tree": "4334f165c7f6bbf0c0c36e6922dc16ff139ec6c0",
  "parents": [
    "95c5217fc960620ef24fc0d2bee4436f68cce15e"
  ],
  "author": {
    "name": "jake champion",
    "email": "jake.champion@netlify.com",
    "time": "Tue Aug 18 16:25:18 2026 +0100"
  },
  "committer": {
    "name": "jake champion",
    "email": "jake.champion@netlify.com",
    "time": "Tue Oct 13 15:22:32 2026 +0100"
  },
  "message": "http: recognize QUERY as a well-known method\n\nQUERY (draft-ietf-httpbis-safe-method-w-body) was handled as an\nextension method, so it was tunneled, could not be named in an\nip_allow.yaml or remap.config ACL, and was not counted separately.\n\nRegister it in the well-known token table and give it the semantics\nthe draft defines: safe, idempotent, and carrying request content, so\nover HTTP/1.1 it needs a Content-Length or Transfer-Encoding: chunked\nlike POST and PUT do.\n\nQUERY is appended after PUSH in the method block so existing\nHTTP_WKSIDX_* values, and the ip_allow method bitmask derived from\nthem, are unchanged.\n\nQUERY is kept off the retry-after-bytes-sent path that GET and HEAD\nuse: its content is not kept for replay on that path, so once any of\nthe request has been sent it is treated like POST there. A buffered\nQUERY can still be retried when an HTTP/2 origin reports the request\nwas not processed.\n\nAdding QUERY grows the OPTIONS Allow value, which exposed that the\nvalue was appended through the string_view overload with a char * and\nno length, so it was measured with strlen on an unterminated buffer and\ncould pick up trailing garbage. Pass the length explicitly.\n\nCaching of QUERY responses is not addressed here.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "79c787d6945b2e3a538fa7bef398e5c406fa809a",
      "old_mode": 33188,
      "old_path": "doc/admin-guide/monitoring/statistics/core/http-request-method.en.rst",
      "new_id": "909a5abb55d1fe03ff47660ed353c8535ab92d90",
      "new_mode": 33188,
      "new_path": "doc/admin-guide/monitoring/statistics/core/http-request-method.en.rst"
    },
    {
      "type": "modify",
      "old_id": "2c3da9f1a14d941635438b89731b1139e1fe392d",
      "old_mode": 33188,
      "old_path": "doc/release-notes/whats-new.en.rst",
      "new_id": "d6bfd221dc7e4d4c8916f124a30d5b1be6ef049f",
      "new_mode": 33188,
      "new_path": "doc/release-notes/whats-new.en.rst"
    },
    {
      "type": "modify",
      "old_id": "2539e4dd4c46bc74ff9199baa6b22663374f076b",
      "old_mode": 33188,
      "old_path": "include/proxy/hdrs/HTTP.h",
      "new_id": "4e16babff7dbaed81a6b5a9b49c441d0700df143",
      "new_mode": 33188,
      "new_path": "include/proxy/hdrs/HTTP.h"
    },
    {
      "type": "modify",
      "old_id": "2a52cd7b55e81fe92d14332b21eb520f40dcbda2",
      "old_mode": 33188,
      "old_path": "include/proxy/http/HttpConfig.h",
      "new_id": "080744718b0dfff6ede963fa546f2681812d830c",
      "new_mode": 33188,
      "new_path": "include/proxy/http/HttpConfig.h"
    },
    {
      "type": "modify",
      "old_id": "e2f3f47ae3542c1160d399cf66e6364e045c75ef",
      "old_mode": 33188,
      "old_path": "include/proxy/http/HttpTransactHeaders.h",
      "new_id": "2c33ff80046d8a061bcde519d25c54308a3a69be",
      "new_mode": 33188,
      "new_path": "include/proxy/http/HttpTransactHeaders.h"
    },
    {
      "type": "modify",
      "old_id": "9eb0668d602614edb49e1eabee49975efa408ca3",
      "old_mode": 33188,
      "old_path": "src/proxy/hdrs/HTTP.cc",
      "new_id": "6b372e8dd98849db99d65f706f549841484de0e3",
      "new_mode": 33188,
      "new_path": "src/proxy/hdrs/HTTP.cc"
    },
    {
      "type": "modify",
      "old_id": "d167fb4d6db5de70310b009746b0127e989d43c8",
      "old_mode": 33188,
      "old_path": "src/proxy/hdrs/HdrToken.cc",
      "new_id": "d72c1f157779fa66f2132a857cde7adb03b7eca2",
      "new_mode": 33188,
      "new_path": "src/proxy/hdrs/HdrToken.cc"
    },
    {
      "type": "modify",
      "old_id": "7977cd15793d61bcb3366bcadbf06776725b8ca6",
      "old_mode": 33188,
      "old_path": "src/proxy/http/HttpConfig.cc",
      "new_id": "ca15807706b730fdab68773038d8a17d727fda91",
      "new_mode": 33188,
      "new_path": "src/proxy/http/HttpConfig.cc"
    },
    {
      "type": "modify",
      "old_id": "66d2bfcd871cb7eed76afcc8601f1b44d97d8038",
      "old_mode": 33188,
      "old_path": "src/proxy/http/HttpDebugNames.cc",
      "new_id": "c017be8ba054c49a1ac04eea8baacecfbeedf099",
      "new_mode": 33188,
      "new_path": "src/proxy/http/HttpDebugNames.cc"
    },
    {
      "type": "modify",
      "old_id": "454a0151de6c2e22c80469d30444b999ef79b5dc",
      "old_mode": 33188,
      "old_path": "src/proxy/http/HttpSM.cc",
      "new_id": "07b6ef50acd4b06c6c61b644a4c6ab7295e3e308",
      "new_mode": 33188,
      "new_path": "src/proxy/http/HttpSM.cc"
    },
    {
      "type": "modify",
      "old_id": "442ce7dd9aec973ddebe813fdcf6d3a47dfdffc5",
      "old_mode": 33188,
      "old_path": "src/proxy/http/HttpTransact.cc",
      "new_id": "63538b769739082921e76425b2312ca60bcb3a6a",
      "new_mode": 33188,
      "new_path": "src/proxy/http/HttpTransact.cc"
    },
    {
      "type": "modify",
      "old_id": "e688f08976c6e2707a6bf1f83b6aaf874b0cec4e",
      "old_mode": 33188,
      "old_path": "src/proxy/http/HttpTransactHeaders.cc",
      "new_id": "409c7ba3a651cb37b7e57a350c4aecce020486ca",
      "new_mode": 33188,
      "new_path": "src/proxy/http/HttpTransactHeaders.cc"
    },
    {
      "type": "modify",
      "old_id": "1fcae8a3bb50674f71d9fa7b40aafef22025246f",
      "old_mode": 33188,
      "old_path": "src/proxy/http2/Http2ConnectionState.cc",
      "new_id": "b822d3e8cccd972eb003bb1eeedc611b88cb3860",
      "new_mode": 33188,
      "new_path": "src/proxy/http2/Http2ConnectionState.cc"
    },
    {
      "type": "modify",
      "old_id": "205fac37a84614e0e0d9b4ed47921450bff7bde5",
      "old_mode": 33188,
      "old_path": "tests/gold_tests/autest-site/ats_replay.test.ext",
      "new_id": "2fe6370a4ad9528eb559b42aac56987715317a2e",
      "new_mode": 33188,
      "new_path": "tests/gold_tests/autest-site/ats_replay.test.ext"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bff99cbfd7b8d74f62051c982b05a56ff4247ef3",
      "new_mode": 33188,
      "new_path": "tests/gold_tests/query/query-ip-allow.test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d4341269ef9f52f346a3060101be7ed248d4a451",
      "new_mode": 33188,
      "new_path": "tests/gold_tests/query/query-pass-through.test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9c4c19284eaac93ddfac5797766fb64ee89c3194",
      "new_mode": 33188,
      "new_path": "tests/gold_tests/query/query-remap-acl.test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9cf0644fac11ebd11d9d3de762185495c09737fc",
      "new_mode": 33188,
      "new_path": "tests/gold_tests/query/query-retry.test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b11e167d877ae9d4670f4837ce59289a22d1bc83",
      "new_mode": 33188,
      "new_path": "tests/gold_tests/query/query_retry_origin.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7d5833ebce90f11eb9a1d855a6d30e8c2e29beb2",
      "new_mode": 33188,
      "new_path": "tests/gold_tests/query/replay/query-ip-allow.replay.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "43eed770d4e526dfbb91bf5ba09a1223f57b97b6",
      "new_mode": 33188,
      "new_path": "tests/gold_tests/query/replay/query-pass-through.replay.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e95b9f8467024317f1113d06d81afd14f5e28c01",
      "new_mode": 33188,
      "new_path": "tests/gold_tests/query/replay/query-remap-acl.replay.yaml"
    }
  ]
}
