)]}'
{
  "commit": "8a27a1a8da14c38da5139869893555f42878d882",
  "tree": "aaa71b135f2b02acdf0f1f9f266f9cf6735ffd71",
  "parents": [
    "edf934d71e960173dcb1f257b8d228ff6c4f9607"
  ],
  "author": {
    "name": "danzh",
    "email": "danzh@google.com",
    "time": "Wed Sep 02 10:26:28 2020 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Sep 02 10:27:06 2020 -0700"
  },
  "message": "Make QUIC connections send PATH_RESPONSE upon receiving PATH_CHALLENGE according to IETF QUIC draft v29.\n\nSwitch to use peer_address in the packet creator to write packet instead of the connection\u0027s peer address for both gQUIC and iQUIC.\n\nIn iQUIC, change the peer_address in packet creator temporarily to send PATH_RESPONSE to the source address of the current incoming packet.\n\nDiff with old IETF impl:\nThe old behavior is that only server responds to PATH_CHALLENGE. V29 path validation section says both sides should be able to send and respond to PATH_CHALLENGE.\n\nThe old behavior sends PATH_RESPONSE after parsing the whole packet via a callback to QuicSession::OnPacketReceived() which is the same behavior as gQUIC response padded PING. IETF path validation doesn\u0027t need to notify session about receiving PATH_CHALLENGE. Connection itself is able to respond right away at OnPathChallenge().\n\nThe old behavior sends PATH_RESPONSE in a different code path which doesn\u0027t retry if socket is blocked. This CL changes to send PATH_RESPONSE on normal packet writing logic and buffer it if the write attempt fails.\nThe old behavior sample RTT from probing packets, but as they are sent on different path, they shouldn\u0027t contribute to RTT measurement on current path.\n\nCode cleanup:\nSince QuicConnection::SendConnectivityProbingResponsePacket() no longer sends PATH_RESPONSE, but only padded PING. Deprecate it with calling SendConnectivityProbingPacket() at the call sites. And update GFE stats accordingly.\n\nProtected by FLAGS_quic_reloadable_flag_quic_send_path_response and existing flag --quic_reloadable_flag_quic_start_peer_migration_earlier.\n\nPiperOrigin-RevId: 329738854\nChange-Id: I45345611ff31011f76c72c406a9431cde031db96\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fa6aec904f878e441a9899a180a9672e6394b842",
      "old_mode": 33188,
      "old_path": "quic/core/http/quic_spdy_session_test.cc",
      "new_id": "32fc3f1f77999bbd06a70c1c7f2e3710570ef390",
      "new_mode": 33188,
      "new_path": "quic/core/http/quic_spdy_session_test.cc"
    },
    {
      "type": "modify",
      "old_id": "d89639fe03908f702c489f7f360ac59473f33ddb",
      "old_mode": 33188,
      "old_path": "quic/core/quic_connection.cc",
      "new_id": "0a7430bfcb2b335391a26f6a61bab65fa09d21bb",
      "new_mode": 33188,
      "new_path": "quic/core/quic_connection.cc"
    },
    {
      "type": "modify",
      "old_id": "4d9be1aba9ca295e8aadb9e26bca42ae9835816f",
      "old_mode": 33188,
      "old_path": "quic/core/quic_connection.h",
      "new_id": "f9ff508ea26e33482b46c62d2f30b8c2e4d5ae4f",
      "new_mode": 33188,
      "new_path": "quic/core/quic_connection.h"
    },
    {
      "type": "modify",
      "old_id": "1cc23296c8fcd50dfe36981152905cdce2c161a9",
      "old_mode": 33188,
      "old_path": "quic/core/quic_connection_test.cc",
      "new_id": "280094f9aa3729fd2c38cc356f3979e1f0b98474",
      "new_mode": 33188,
      "new_path": "quic/core/quic_connection_test.cc"
    },
    {
      "type": "modify",
      "old_id": "c06d16715e41fd24f4f39176b41587477b5de8f7",
      "old_mode": 33188,
      "old_path": "quic/core/quic_packet_creator.cc",
      "new_id": "74c96ac523f73987e6b6f12596a25535367ebd95",
      "new_mode": 33188,
      "new_path": "quic/core/quic_packet_creator.cc"
    },
    {
      "type": "modify",
      "old_id": "a82cec4fc9d43dce5d213190661840c91d51de38",
      "old_mode": 33188,
      "old_path": "quic/core/quic_packet_creator.h",
      "new_id": "edb428b4a74828d81f681a5ddfa8ef979ecc9665",
      "new_mode": 33188,
      "new_path": "quic/core/quic_packet_creator.h"
    },
    {
      "type": "modify",
      "old_id": "aa7c4916e7de9987efd561a7413723bdc443819a",
      "old_mode": 33188,
      "old_path": "quic/core/quic_session.cc",
      "new_id": "cce8fa5112bcce940c8e025703a48453ab6a7bdc",
      "new_mode": 33188,
      "new_path": "quic/core/quic_session.cc"
    },
    {
      "type": "modify",
      "old_id": "62c012c78124afda0eb2281582db7161faccc6d3",
      "old_mode": 33188,
      "old_path": "quic/core/quic_session_test.cc",
      "new_id": "38457d6c219471988db319beefe9834ae7b3002c",
      "new_mode": 33188,
      "new_path": "quic/core/quic_session_test.cc"
    },
    {
      "type": "modify",
      "old_id": "13f6a2a34955a0d6f0c9bd449a1cdda3b4dc7b85",
      "old_mode": 33188,
      "old_path": "quic/core/quic_utils.cc",
      "new_id": "b6619d4398e967b50a290a9d7e811bb6336ef688",
      "new_mode": 33188,
      "new_path": "quic/core/quic_utils.cc"
    },
    {
      "type": "modify",
      "old_id": "6f9c8c6e83744623ca67ce6e6b615cbfa0717d59",
      "old_mode": 33188,
      "old_path": "quic/test_tools/quic_connection_peer.cc",
      "new_id": "2e8ca59d94bb324ee3d8cc12943a5c63dd973d76",
      "new_mode": 33188,
      "new_path": "quic/test_tools/quic_connection_peer.cc"
    },
    {
      "type": "modify",
      "old_id": "01d16f2ca681d113d7285a9c0924cd02e7fddc79",
      "old_mode": 33188,
      "old_path": "quic/test_tools/quic_connection_peer.h",
      "new_id": "8a285e98db72bac3cbb454eda30784f3a843c4b6",
      "new_mode": 33188,
      "new_path": "quic/test_tools/quic_connection_peer.h"
    }
  ]
}
