)]}'
{
  "commit": "7acca649ce0c10a29756afb48eef22ec64026822",
  "tree": "d3c3055159af8fc71b2109f070674f391e5c265a",
  "parents": [
    "19944ee00bf4e8f64a543205f34028431c9fa60f"
  ],
  "author": {
    "name": "QUICHE team",
    "email": "quiche-dev@google.com",
    "time": "Tue Jan 18 10:53:35 2022 -0800"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Tue Jan 18 10:54:34 2022 -0800"
  },
  "message": "Perform content-length validation in OgHttp2Session.\n\nThis CL validates the content-length header value in HeaderValidator and allows\nthe value to be checked in OgHttp2Session when comparing against actual\nreceived body lengths for a stream. If there is a mismatch between the\ncontent-length header value and the total body length received, OgHttp2Session\ninvokes the visitor OnInvalidFrame() callback and enqueues a RST_STREAM.\n\nThis change better aligns oghttp2 with nghttp2 on content-length validation,\nbut at least one remaining difference is that nghttp2 invokes OnInvalidFrame()\n(leading to connection-level error-signalling in Envoy) only when the\ncontent-length mismatch happens with HEADERS ending the stream [1]. The\nOnInvalidFrame() --\u003e connection error is important at least for a\ncontent-length integration test. Therefore, oghttp2 also calls OnInvalidFrame()\nfor content-length mismatch, but regardless of whether HEADERS or DATA ends the\nstream for unity. (Ideally, content-length mismatch on one stream should not\ncause a connection-level error; perhaps this can be fixed once migration to\noghttp2 is complete.)\n\nWith this CL, MultiplexedIntegrationTest.InconsistentContentLength passes with\noghttp2 (http://sponge2/663d811a-e662-44c0-b003-a4d7fcb13d42).\n\n[1] Compare HEADERS at\nhttp://google3/third_party/nghttp2/src/lib/nghttp2_session.c;l\u003d3778,3790-3791;rcl\u003d421446478\nto DATA at\nhttp://google3/third_party/nghttp2/src/lib/nghttp2_session.c;l\u003d4961-4963;rcl\u003d421446478.\n\nPiperOrigin-RevId: 422597021\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0c1d8738d897fa45cec83cbccfb181ddd8070620",
      "old_mode": 33188,
      "old_path": "http2/adapter/header_validator.cc",
      "new_id": "57afa54ee578c82a81f1e835ddc0a0f289d04ae0",
      "new_mode": 33188,
      "new_path": "http2/adapter/header_validator.cc"
    },
    {
      "type": "modify",
      "old_id": "b21b299f7f94bc8a95757c50122c186119784851",
      "old_mode": 33188,
      "old_path": "http2/adapter/header_validator.h",
      "new_id": "ddcabdf13ca567f8ee430f5b679af12f912d4b1d",
      "new_mode": 33188,
      "new_path": "http2/adapter/header_validator.h"
    },
    {
      "type": "modify",
      "old_id": "5fe05a8eac778857b6afe8f13247e33168b4192b",
      "old_mode": 33188,
      "old_path": "http2/adapter/header_validator_test.cc",
      "new_id": "0d4d7fc51af0f83150ae56224b8232858443bcb8",
      "new_mode": 33188,
      "new_path": "http2/adapter/header_validator_test.cc"
    },
    {
      "type": "modify",
      "old_id": "553c0bd6a3995e3666df74a364ce41eb53da7dca",
      "old_mode": 33188,
      "old_path": "http2/adapter/http2_util.cc",
      "new_id": "f93b1613c77a831f6d4cf284393ecad930c8f4aa",
      "new_mode": 33188,
      "new_path": "http2/adapter/http2_util.cc"
    },
    {
      "type": "modify",
      "old_id": "0e8619fd126e1ea76fcb297671e78e063e3b02f8",
      "old_mode": 33188,
      "old_path": "http2/adapter/http2_visitor_interface.h",
      "new_id": "61c76b7e458f86441bb645121757dc361365ec10",
      "new_mode": 33188,
      "new_path": "http2/adapter/http2_visitor_interface.h"
    },
    {
      "type": "modify",
      "old_id": "51679f47583ce03a73a9cca6a2f097ed00980f6c",
      "old_mode": 33188,
      "old_path": "http2/adapter/oghttp2_adapter_test.cc",
      "new_id": "9b2809b6eb7a1f22ef19b49533448281b264e2df",
      "new_mode": 33188,
      "new_path": "http2/adapter/oghttp2_adapter_test.cc"
    },
    {
      "type": "modify",
      "old_id": "cc37780fc480db8c7980381497e147fdaa352b2a",
      "old_mode": 33188,
      "old_path": "http2/adapter/oghttp2_session.cc",
      "new_id": "ad1fd9de65f73f45d939d4a38f670ed4000146f0",
      "new_mode": 33188,
      "new_path": "http2/adapter/oghttp2_session.cc"
    },
    {
      "type": "modify",
      "old_id": "3cdcd127515c720005d2d40e4e43d81ca4a4c357",
      "old_mode": 33188,
      "old_path": "http2/adapter/oghttp2_session.h",
      "new_id": "aac268897efcffd2dd4e7bdecdfab9054b0505e3",
      "new_mode": 33188,
      "new_path": "http2/adapter/oghttp2_session.h"
    }
  ]
}
