)]}' { "commit": "2061ddf0e52339e2d4ed6d9c52ce6f3ad1920ceb", "tree": "8962ed70982c558299ecfe784a28d73387fb78cc", "parents": [ "96a9f6bd7f8c1c256e0a59008a84522b95cec3cc" ], "author": { "name": "QUICHE team", "email": "quiche-dev@google.com", "time": "Mon Dec 20 10:20:23 2021 -0800" }, "committer": { "name": "Copybara-Service", "email": "copybara-worker@google.com", "time": "Mon Dec 20 10:21:05 2021 -0800" }, "message": "Allow OgHttp2Session to blackhole data on connection errors.\n\nThis CL adds an option to OgHttp2Session::Options that will cause\nOgHttp2Session to behave more similarly to nghttp2 when encountering\nconnection-level errors while processing data. Specifically:\n 1. When encountering connection errors, send a GOAWAY but mark the entire\n input as consumed [1], i.e., be a sink.\n 2. When a connection-error GOAWAY is sent, be a sink for subsequent\n ProcessBytes() calls [2].\n 3. Return errors only for bad client magic or user callback failures [3].\n\nEach of the pre-existing affected oghttp2 tests in this CL with nghttp2\nanalogues now have aligned ProcessBytes() return values.\n\nHaving this option enabled in Envoy is a prerequisite for codec_impl_test\nLargeServerBodyFlushTimeoutAfterGoaway to pass.\n\n[1] e.g., http://google3/third_party/nghttp2/src/lib/nghttp2_session.c;l\u003d5428-5435;rcl\u003d314948637.\n There are more examples of this pattern throughout nghttp2_session_mem_recv().\n[2] http://google3/third_party/nghttp2/src/lib/nghttp2_session.c;l\u003d5382-5384;rcl\u003d314948637\n[3] https://nghttp2.org/documentation/nghttp2_session_mem_recv.html. There are technically two other possible negative return values, but I don\u0027t think Envoy considers NGHTTP2_ERR_NOMEM, and Envoy is also skeptical about NGHTTP2_ERR_FLOODED: http://google3/third_party/envoy/src/source/common/http/http2/codec_impl.cc;l\u003d844-851;rcl\u003d415656746, http://google3/third_party/envoy/src/source/common/http/http2/codec_impl.cc;l\u003d1726-1732;rcl\u003d415656746.\n\nPiperOrigin-RevId: 417432491\n", "tree_diff": [ { "type": "modify", "old_id": "b2494e54de89b1494b9d85e0324bc6fe11d5fd81", "old_mode": 33188, "old_path": "http2/adapter/nghttp2_adapter_test.cc", "new_id": "b5bb2a3533bf6f1007a0d624ec84cbc491ecb315", "new_mode": 33188, "new_path": "http2/adapter/nghttp2_adapter_test.cc" }, { "type": "modify", "old_id": "adc46c0f337ff029d40bcaa1ee05014874992f30", "old_mode": 33188, "old_path": "http2/adapter/oghttp2_adapter_test.cc", "new_id": "ae277b675883044f21f66884a8843e0be4e5f5ed", "new_mode": 33188, "new_path": "http2/adapter/oghttp2_adapter_test.cc" }, { "type": "modify", "old_id": "781c49f8c72c5a540cfd74caf1499dd16d18884a", "old_mode": 33188, "old_path": "http2/adapter/oghttp2_session.cc", "new_id": "028eb731bb80c26648d13592ed4e56e4db5d41b1", "new_mode": 33188, "new_path": "http2/adapter/oghttp2_session.cc" }, { "type": "modify", "old_id": "f7c7779206d73669555b4fb37013f324df8f219f", "old_mode": 33188, "old_path": "http2/adapter/oghttp2_session.h", "new_id": "7bd23852d9dda399928d32663a17f7a24d3e1cfa", "new_mode": 33188, "new_path": "http2/adapter/oghttp2_session.h" } ] }