)]}' { "commit": "bbce25d4e4d7be512d7ffe70916043c6491df955", "tree": "da83e4e100607a750706e7b5f6dc4a6a15344a34", "parents": [ "2061ddf0e52339e2d4ed6d9c52ce6f3ad1920ceb" ], "author": { "name": "QUICHE team", "email": "quiche-dev@google.com", "time": "Mon Dec 20 14:05:00 2021 -0800" }, "committer": { "name": "Copybara-Service", "email": "copybara-worker@google.com", "time": "Mon Dec 20 14:06:03 2021 -0800" }, "message": "Avoid sending frames after sending an immediate GOAWAY in OgHttp2Session.\n\nThis CL makes the following related changes to OgHttp2Session:\n - Add a queued_immediate_goaway_ field, set if the enqueued GOAWAY is the\n result of a connection-level error (i.e., if latched_error_ is true).\n - Make EnqueueFrame() a no-op if queued_immediate_goaway_ is true.\n - Avoid writing for streams if queued_immediate_goaway_ is true.\n\nThese changes allow OgHttp2Session to avoid sending either control frames or\nDATA frames once a GOAWAY is sent.\n\nThis CL also fixes a potential memory leak in NgHttp2Adapter with submitted\nMETADATA that is now also not sent after an immediate GOAWAY. In particular,\nMetadataSource now has a new interface method OnFailure() that\nSelfDeletingMetadataSource() can override to self-delete.\nMetadataSource::OnFailure() is now called in\nnghttp2_on_frame_not_send_callback() (newly set to call new OnFrameNotSent()).\n\nThis CL marks the triumphant passing of codec_impl_test\nLargeServerBodyFlushTimeoutAfterGoaway\n(http://sponge2/cc0358b2-2881-4502-aa95-6cf2cd9b6de5).\n\nPiperOrigin-RevId: 417475633\n", "tree_diff": [ { "type": "modify", "old_id": "63448b3e56ef746adafae0eb0596746406bd50cf", "old_mode": 33188, "old_path": "http2/adapter/data_source.h", "new_id": "dd4601f48d9b1c5ed8962c8affd8ffabe8dc8256", "new_mode": 33188, "new_path": "http2/adapter/data_source.h" }, { "type": "modify", "old_id": "821eb8cc748517cd77e24fca8d1be7e60bcf584d", "old_mode": 33188, "old_path": "http2/adapter/nghttp2_adapter.cc", "new_id": "a6ba0b279576afd0bb4944062f2ba6029dbcd272", "new_mode": 33188, "new_path": "http2/adapter/nghttp2_adapter.cc" }, { "type": "modify", "old_id": "b5bb2a3533bf6f1007a0d624ec84cbc491ecb315", "old_mode": 33188, "old_path": "http2/adapter/nghttp2_adapter_test.cc", "new_id": "4e0400a83379c7a6b35ede9b63d77bc77a95a955", "new_mode": 33188, "new_path": "http2/adapter/nghttp2_adapter_test.cc" }, { "type": "modify", "old_id": "dc6df1d908195be6494ebb5fcc9fdb6c21e82ce3", "old_mode": 33188, "old_path": "http2/adapter/nghttp2_callbacks.cc", "new_id": "2d05beef73196ebaf831e37e38a05402c99c79eb", "new_mode": 33188, "new_path": "http2/adapter/nghttp2_callbacks.cc" }, { "type": "modify", "old_id": "293c6d6e2e8f849fb054c3067de56662e3ca6402", "old_mode": 33188, "old_path": "http2/adapter/nghttp2_callbacks.h", "new_id": "82b7cf1a806649eafd794bd2a3fcfcab0ea3f6b6", "new_mode": 33188, "new_path": "http2/adapter/nghttp2_callbacks.h" }, { "type": "modify", "old_id": "ae277b675883044f21f66884a8843e0be4e5f5ed", "old_mode": 33188, "old_path": "http2/adapter/oghttp2_adapter_test.cc", "new_id": "15d1e3a7bd9c14c33f1f340db84345df17927dd5", "new_mode": 33188, "new_path": "http2/adapter/oghttp2_adapter_test.cc" }, { "type": "modify", "old_id": "028eb731bb80c26648d13592ed4e56e4db5d41b1", "old_mode": 33188, "old_path": "http2/adapter/oghttp2_session.cc", "new_id": "af843e8312372cb605f8f18f7755f253996ac784", "new_mode": 33188, "new_path": "http2/adapter/oghttp2_session.cc" }, { "type": "modify", "old_id": "7bd23852d9dda399928d32663a17f7a24d3e1cfa", "old_mode": 33188, "old_path": "http2/adapter/oghttp2_session.h", "new_id": "d9f00dfa881583b933bb9bc1a89101bc59d4e853", "new_mode": 33188, "new_path": "http2/adapter/oghttp2_session.h" }, { "type": "modify", "old_id": "886d0bf9167258c13851865455fe71c3e2fbd940", "old_mode": 33188, "old_path": "http2/adapter/test_utils.h", "new_id": "be53ba8cab568f52501c5efaa07c048a2fa328cb", "new_mode": 33188, "new_path": "http2/adapter/test_utils.h" } ] }