)]}'
{
  "commit": "fcfa32ac6bf60258bcbdbc164dd76c73b1f1c9e9",
  "tree": "29948684c1810b802da6319ffba3e0bc730c7600",
  "parents": [
    "462209849f4c144a14ba1233b01ca7ea4d9b3382"
  ],
  "author": {
    "name": "martinduke",
    "email": "martinduke@google.com",
    "time": "Thu Jan 12 10:04:44 2023 -0800"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu Jan 12 10:05:35 2023 -0800"
  },
  "message": "Receive ECN marks on inbound packets and report counts in ACK_ECN frames.\nIt does not support marking outbound packets except for a minimal capability for test.\n\nQuicPacketReader receives ECN marks from the socket API via QuicUdpPacketInfo.. QuicPacketReader then stores this in a new member of QuicReceivedPacket. This arrives at QuicConnection, which adds to the last_received_packet_info_. When the framer calls QuicConnection::OnPacketHeader(), QuicConnection updates the pending ack frame with the new ECN count via QuicReceivedPacketManager, which updates the counts in the ack frame.\n\nTo enable an end-to-end test, this CL also includes minimal changes to mark outbound packets and report the contents of ACK_ECN frames.\n\nQuicConnection::per_packet_options_ is extended to include an ECN codepoint, which QuicDefaultPacketWriter reads, and passes the instruction to the QuicUdpSocketApi via QuicUdpPacketInfo. The test explicitly sets per_packet_options_ to mark ECT(0) after the handshake.\n\nWhen receiving ACK_ECN, the results are reported to QuicConnection in OnAckFrameEnd(), which then just stores them in a new data structure QuicEcnCounts.\n\nProtected by FLAGS_quic_reloadable_flag_quic_receive_ecn.\n\nPiperOrigin-RevId: 501596181\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c3dc584ce967d5b5e60ccd0ae91ebd254b1ba234",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/chlo_extractor.cc",
      "new_id": "267823e7e544330608a99533d96393f4e12c77de",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/chlo_extractor.cc"
    },
    {
      "type": "modify",
      "old_id": "cd14d9d4b36f8c8b7dfb3e4ca3c3c0e5c9e1581b",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/frames/quic_ack_frame.cc",
      "new_id": "1e42b7dfcd65e7289d8de9583a9bda16f1cd8fe6",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/frames/quic_ack_frame.cc"
    },
    {
      "type": "modify",
      "old_id": "4a20e665a54190b101542367b93dc11def549f10",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/frames/quic_ack_frame.h",
      "new_id": "6828a8c6e9ceebdbd40edf45c27a50615591823c",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/frames/quic_ack_frame.h"
    },
    {
      "type": "modify",
      "old_id": "a6e97f9ff617a35ea1820c2fc7df217f97bfe6aa",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/http/end_to_end_test.cc",
      "new_id": "2524521ddb79f64e4ad1dfd1827f34df0733f21a",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/http/end_to_end_test.cc"
    },
    {
      "type": "modify",
      "old_id": "f22d8ed4c2dc16f61b8f6fda85b8758ae9b074a0",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_connection.cc",
      "new_id": "053e33b1d73784777294d77e587900cda80f97ee",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_connection.cc"
    },
    {
      "type": "modify",
      "old_id": "b71904d54ea2e54f1b94ac1a16e6431a0627c17a",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_connection.h",
      "new_id": "9fb1aaa1bef8cca7227bb13d7e4fa1047f43dc77",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_connection.h"
    },
    {
      "type": "modify",
      "old_id": "b5675879916f26a12cf9ac74d682c64e1f2273e7",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_connection_test.cc",
      "new_id": "a3a4144737b80a6a48319fe34e33ee86d7d4a9c1",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_connection_test.cc"
    },
    {
      "type": "modify",
      "old_id": "3ba64b0880922cd236cb27c1baff4a083fb6a160",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_default_packet_writer.cc",
      "new_id": "78feee512c5d5029da60e41a058a8ac6ed1fa313",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_default_packet_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "b205e3e5456a0069d5b879674d2c3ff1e48f4b4c",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_flags_list.h",
      "new_id": "d9333b21728cc30aa169c1ceeea2ca276a7a3555",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_flags_list.h"
    },
    {
      "type": "modify",
      "old_id": "b362c51efc400e6d66b2cfb3f00d2dbdbc93ec80",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_framer.cc",
      "new_id": "8a506fdf4fa5f2eab48c114eb84f092b8c76fe93",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_framer.cc"
    },
    {
      "type": "modify",
      "old_id": "3f1d01172b47cb30285b6eed274722ac8744464f",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_framer.h",
      "new_id": "5b0e8e26c99bbd307b182fc97c3ba2aff339f036",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_framer.h"
    },
    {
      "type": "modify",
      "old_id": "d2eae7711b31e3597ab6728fe0b91c047496835b",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_framer_test.cc",
      "new_id": "2c82bcb63385785473c2649952e2c1cc357e2b74",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_framer_test.cc"
    },
    {
      "type": "modify",
      "old_id": "ec72824c064acf74d7ca358d1d18f9a9ca065b01",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_packet_reader.cc",
      "new_id": "eaa3441b3d8b1d228f15f78636c5f3275ffe8c16",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_packet_reader.cc"
    },
    {
      "type": "modify",
      "old_id": "95d167b340fd4bd1a808136aa29a9842d7a83b8a",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_packet_writer.h",
      "new_id": "5ebbfe0e7f8217349ae69701ad01c6ebdc2206c5",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_packet_writer.h"
    },
    {
      "type": "modify",
      "old_id": "b0f7535d93383910bb95cb151d335d2a83203859",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_packets.cc",
      "new_id": "d884adf1c686db5dc82c2a6326e7cd3ea34317bb",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_packets.cc"
    },
    {
      "type": "modify",
      "old_id": "263bdb9ae35b73a84f60efc4bac8323955c616aa",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_packets.h",
      "new_id": "a1c743a0e567edd34c82bffbb5064234f4d9e7e2",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_packets.h"
    },
    {
      "type": "modify",
      "old_id": "bb7b87d349e62a93b3721ebb1ebb8fabff01b788",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_received_packet_manager.cc",
      "new_id": "048661821a03f2f83e0f242dc0193380d6598d79",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_received_packet_manager.cc"
    },
    {
      "type": "modify",
      "old_id": "d13e09b4a7470b5d7c0a484d8b704c3f30cd3d2f",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_received_packet_manager.h",
      "new_id": "ab298d424db715bf04998ae4bc4d37c6a7d10bb6",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_received_packet_manager.h"
    },
    {
      "type": "modify",
      "old_id": "c4537076a19c838bf30a939a4715ced1f371fe99",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_received_packet_manager_test.cc",
      "new_id": "143654e61b791c870ad9b0d39a81b407bdffcc7a",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_received_packet_manager_test.cc"
    },
    {
      "type": "modify",
      "old_id": "f4a2394be85130a6c75e9ad47eda719a139fcfc9",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/quic_types.h",
      "new_id": "fac4f38139c532820e356381973a65bccc0408e3",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/quic_types.h"
    },
    {
      "type": "modify",
      "old_id": "b48065f9e1d4107d7daf1e0650cb4c4f172c5e30",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/tls_chlo_extractor.h",
      "new_id": "417395342b4b73a9b850aa709b853f66132c94fe",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/tls_chlo_extractor.h"
    },
    {
      "type": "modify",
      "old_id": "24567956ff35293282125e9cba29c75706a9ca77",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/uber_received_packet_manager.cc",
      "new_id": "4efe7885b719c1c1aeeba79f54d8ceb19b2bc94d",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/uber_received_packet_manager.cc"
    },
    {
      "type": "modify",
      "old_id": "1eb15d9fb4ad23ee2c2cf7e7decc240ab920f17e",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/uber_received_packet_manager.h",
      "new_id": "0e436c033c378af984eca777e971f744b18d779c",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/uber_received_packet_manager.h"
    },
    {
      "type": "modify",
      "old_id": "ad62d8fe2a80d3096252b631bb53576b746890bd",
      "old_mode": 33188,
      "old_path": "quiche/quic/core/uber_received_packet_manager_test.cc",
      "new_id": "97b2a80d7a766656cd5ed10444274539f57263f8",
      "new_mode": 33188,
      "new_path": "quiche/quic/core/uber_received_packet_manager_test.cc"
    },
    {
      "type": "modify",
      "old_id": "b33bc2905cb91f1b55d47f07b3637c809298d2ea",
      "old_mode": 33188,
      "old_path": "quiche/quic/test_tools/quic_connection_peer.cc",
      "new_id": "ad58d9c47f8617b50649850e05c336ed844efbc1",
      "new_mode": 33188,
      "new_path": "quiche/quic/test_tools/quic_connection_peer.cc"
    },
    {
      "type": "modify",
      "old_id": "794e99137dc944cdc78fee2351372dae97db9809",
      "old_mode": 33188,
      "old_path": "quiche/quic/test_tools/quic_connection_peer.h",
      "new_id": "fbdedb3700fc567596bb060f2c51e9f5a8a21921",
      "new_mode": 33188,
      "new_path": "quiche/quic/test_tools/quic_connection_peer.h"
    },
    {
      "type": "modify",
      "old_id": "1a63557e8af0831861c78986a3e835078f11813a",
      "old_mode": 33188,
      "old_path": "quiche/quic/test_tools/quic_test_utils.cc",
      "new_id": "bc1cf2ff20cbd4da4be3f812d81945894167a0ce",
      "new_mode": 33188,
      "new_path": "quiche/quic/test_tools/quic_test_utils.cc"
    },
    {
      "type": "modify",
      "old_id": "d8271e1abe8213c8abf22d60799ca3c0ea3ca61a",
      "old_mode": 33188,
      "old_path": "quiche/quic/test_tools/quic_test_utils.h",
      "new_id": "8609d5f0ad63510f5babc460d7778019222f8c66",
      "new_mode": 33188,
      "new_path": "quiche/quic/test_tools/quic_test_utils.h"
    },
    {
      "type": "modify",
      "old_id": "793afc470cf250226def8c893d50eae54c92fd3b",
      "old_mode": 33188,
      "old_path": "quiche/quic/test_tools/simple_quic_framer.cc",
      "new_id": "da9f232fa038ae6feaab050736fd5b91914eecd9",
      "new_mode": 33188,
      "new_path": "quiche/quic/test_tools/simple_quic_framer.cc"
    },
    {
      "type": "modify",
      "old_id": "740971c078cd7704c39cb74f338fd24af762cbf9",
      "old_mode": 33188,
      "old_path": "quiche/quic/tools/quic_packet_printer_bin.cc",
      "new_id": "3e8b07b83b7b531215e2780ec9e8e3e4248cd308",
      "new_mode": 33188,
      "new_path": "quiche/quic/tools/quic_packet_printer_bin.cc"
    }
  ]
}
