@fails-components/webtransport 0.0.1-rc.0 → 0.0.1-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/.github/workflows/npm-publish-packages.yml +0 -0
  2. package/CMakeLists.txt +2 -0
  3. package/package.json +1 -1
  4. package/readme.md +0 -0
  5. package/src/http3serversession.h +1 -1
  6. package/src/webtransport.js +4 -2
  7. package/third_party/boringssl/src/CMakeLists.txt +9 -12
  8. package/third_party/boringssl/src/crypto/CMakeLists.txt +2 -3
  9. package/third_party/boringssl/src/crypto/asn1/time_support.c +206 -206
  10. package/third_party/boringssl/src/crypto/bio/socket_helper.c +124 -122
  11. package/third_party/boringssl/src/crypto/evp/digestsign.c +268 -231
  12. package/third_party/boringssl/src/crypto/evp/p_ec.c +286 -286
  13. package/third_party/boringssl/src/crypto/fipsmodule/aes/key_wrap.c +246 -236
  14. package/third_party/boringssl/src/crypto/fipsmodule/aes/mode_wrappers.c +124 -122
  15. package/third_party/boringssl/src/crypto/fipsmodule/bcm.c +3 -0
  16. package/third_party/boringssl/src/crypto/fipsmodule/bn/bytes.c +246 -230
  17. package/third_party/boringssl/src/crypto/fipsmodule/bn/internal.h +734 -715
  18. package/third_party/boringssl/src/crypto/fipsmodule/bn/random.c +349 -341
  19. package/third_party/boringssl/src/crypto/fipsmodule/cipher/cipher.c +670 -648
  20. package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +1504 -1472
  21. package/third_party/boringssl/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +435 -446
  22. package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_3des_cmac_tests.txt +0 -0
  23. package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes128_cmac_tests.txt +0 -0
  24. package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes192_cmac_tests.txt +0 -0
  25. package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes256_cmac_tests.txt +0 -0
  26. package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +318 -278
  27. package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cmac_test.cc +268 -267
  28. package/third_party/boringssl/src/crypto/fipsmodule/dh/dh.c +5 -1
  29. package/third_party/boringssl/src/crypto/fipsmodule/ec/ec.c +11 -17
  30. package/third_party/boringssl/src/crypto/fipsmodule/ec/ec_key.c +15 -4
  31. package/third_party/boringssl/src/crypto/fipsmodule/ec/internal.h +2 -6
  32. package/third_party/boringssl/src/crypto/fipsmodule/ec/p224-64.c +1164 -1180
  33. package/third_party/boringssl/src/crypto/fipsmodule/ec/p256-nistz.c +3 -3
  34. package/third_party/boringssl/src/crypto/fipsmodule/ec/p256-nistz_test.cc +2 -2
  35. package/third_party/boringssl/src/crypto/fipsmodule/ec/p256.c +44 -33
  36. package/third_party/boringssl/src/crypto/fipsmodule/ec/scalar.c +169 -175
  37. package/third_party/boringssl/src/crypto/fipsmodule/ec/simple.c +352 -357
  38. package/third_party/boringssl/src/crypto/fipsmodule/ecdh/ecdh.c +4 -0
  39. package/third_party/boringssl/src/crypto/fipsmodule/ecdsa/ecdsa.c +14 -9
  40. package/third_party/boringssl/src/crypto/fipsmodule/hmac/hmac.c +256 -235
  41. package/third_party/boringssl/src/crypto/fipsmodule/rand/ctrdrbg.c +204 -202
  42. package/third_party/boringssl/src/crypto/fipsmodule/rsa/padding.c +702 -695
  43. package/third_party/boringssl/src/crypto/fipsmodule/rsa/rsa_impl.c +7 -2
  44. package/third_party/boringssl/src/crypto/fipsmodule/self_check/self_check.c +7 -0
  45. package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
  46. package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator.c +333 -0
  47. package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator_test.cc +2410 -0
  48. package/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c +359 -357
  49. package/third_party/boringssl/src/crypto/fipsmodule/sha/sha256.c +325 -321
  50. package/third_party/boringssl/src/crypto/fipsmodule/sha/sha512.c +510 -508
  51. package/third_party/boringssl/src/crypto/fipsmodule/tls/kdf.c +177 -165
  52. package/third_party/boringssl/src/crypto/internal.h +13 -0
  53. package/third_party/boringssl/src/crypto/trust_token/trust_token_test.cc +884 -884
  54. package/third_party/boringssl/src/crypto/x509/internal.h +0 -2
  55. package/third_party/boringssl/src/crypto/x509/t_crl.c +148 -148
  56. package/third_party/boringssl/src/crypto/x509/t_req.c +249 -250
  57. package/third_party/boringssl/src/crypto/x509/t_x509.c +2 -3
  58. package/third_party/boringssl/src/crypto/x509/x509_req.c +262 -304
  59. package/third_party/boringssl/src/crypto/x509/x509_set.c +250 -240
  60. package/third_party/boringssl/src/crypto/x509/x509_test.cc +466 -4
  61. package/third_party/boringssl/src/crypto/x509/x509cset.c +292 -279
  62. package/third_party/boringssl/src/crypto/x509/x509rset.c +89 -86
  63. package/third_party/boringssl/src/crypto/x509/x_crl.c +37 -125
  64. package/third_party/boringssl/src/crypto/x509/x_req.c +114 -109
  65. package/third_party/boringssl/src/crypto/x509/x_x509.c +394 -394
  66. package/third_party/boringssl/src/crypto/x509v3/v3_akey.c +11 -16
  67. package/third_party/boringssl/src/crypto/x509v3/v3_alt.c +644 -642
  68. package/third_party/boringssl/src/crypto/x509v3/v3_bcons.c +130 -133
  69. package/third_party/boringssl/src/crypto/x509v3/v3_bitst.c +149 -144
  70. package/third_party/boringssl/src/crypto/x509v3/v3_cpols.c +496 -500
  71. package/third_party/boringssl/src/crypto/x509v3/v3_enum.c +105 -106
  72. package/third_party/boringssl/src/crypto/x509v3/v3_ia5.c +126 -121
  73. package/third_party/boringssl/src/crypto/x509v3/v3_info.c +206 -218
  74. package/third_party/boringssl/src/crypto/x509v3/v3_int.c +97 -91
  75. package/third_party/boringssl/src/crypto/x509v3/v3_pci.c +290 -289
  76. package/third_party/boringssl/src/crypto/x509v3/v3_skey.c +161 -156
  77. package/third_party/boringssl/src/crypto/x509v3/v3_utl.c +5 -3
  78. package/third_party/boringssl/src/include/openssl/aead.h +480 -480
  79. package/third_party/boringssl/src/include/openssl/asn1.h +2 -0
  80. package/third_party/boringssl/src/include/openssl/base.h +1 -1
  81. package/third_party/boringssl/src/include/openssl/service_indicator.h +96 -0
  82. package/third_party/boringssl/src/include/openssl/ssl.h +7 -0
  83. package/third_party/boringssl/src/include/openssl/x509.h +11 -33
  84. package/third_party/boringssl/src/include/openssl/x509v3.h +990 -1018
  85. package/third_party/boringssl/src/sources.cmake +4 -4
  86. package/third_party/boringssl/src/ssl/internal.h +10 -0
  87. package/third_party/boringssl/src/ssl/ssl_lib.cc +3081 -3072
  88. package/third_party/boringssl/src/ssl/ssl_test.cc +46 -0
  89. package/third_party/boringssl/src/ssl/tls13_server.cc +4 -6
  90. package/third_party/boringssl/src/util/bot/DEPS +14 -27
  91. package/third_party/boringssl/src/util/bot/UPDATING +3 -9
  92. package/third_party/boringssl/src/util/bot/update_clang.py +172 -172
  93. package/third_party/boringssl/src/util/bot/vs_toolchain.py +3 -3
  94. package/third_party/quiche/.bazelrc +8 -0
  95. package/third_party/quiche/BUILD.bazel +7 -0
  96. package/third_party/quiche/WHITESPACE +3 -1
  97. package/third_party/quiche/WORKSPACE.bazel +87 -0
  98. package/third_party/quiche/build/BUILD.bazel +7 -0
  99. package/third_party/quiche/build/source_list.bzl +1511 -0
  100. package/third_party/quiche/build/source_list.gni +1511 -0
  101. package/third_party/quiche/build/source_list.json +1511 -0
  102. package/third_party/quiche/build/test.bzl +26 -0
  103. package/third_party/quiche/build/zlib.BUILD +25 -0
  104. package/third_party/quiche/quiche/BUILD.bazel +270 -0
  105. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_enums.cc +3 -3
  106. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_enums.h +7 -7
  107. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame.cc +39 -18
  108. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame.h +11 -10
  109. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame_test.cc +67 -63
  110. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers.cc +13 -12
  111. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers.h +16 -8
  112. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers_test.cc +9 -9
  113. package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_visitor_interface.h +4 -4
  114. package/third_party/quiche/quiche/{common/balsa → balsa}/framer_interface.h +3 -3
  115. package/third_party/quiche/quiche/{common/balsa → balsa}/header_api.h +3 -3
  116. package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties.cc +1 -1
  117. package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties.h +3 -3
  118. package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties_test.cc +1 -1
  119. package/third_party/quiche/quiche/{common/balsa → balsa}/http_validation_policy.cc +1 -1
  120. package/third_party/quiche/quiche/{common/balsa → balsa}/http_validation_policy.h +3 -3
  121. package/third_party/quiche/quiche/{common/balsa → balsa}/noop_balsa_visitor.h +4 -4
  122. package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer.cc +22 -29
  123. package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer.h +18 -16
  124. package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer_test.cc +79 -32
  125. package/third_party/quiche/quiche/{common/balsa → balsa}/standard_header_map.cc +1 -1
  126. package/third_party/quiche/quiche/{common/balsa → balsa}/standard_header_map.h +3 -3
  127. package/third_party/quiche/quiche/common/platform/api/quiche_command_line_flags.h +6 -1
  128. package/third_party/quiche/quiche/common/platform/api/quiche_flags.h +8 -0
  129. package/third_party/quiche/quiche/common/platform/api/quiche_logging.h +0 -3
  130. package/third_party/quiche/quiche/common/platform/api/quiche_lower_case_string_test.cc +29 -0
  131. package/third_party/quiche/quiche/common/platform/api/quiche_test.h +5 -7
  132. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quic_flags_impl.h +1 -1
  133. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_bug_tracker_impl.h +3 -2
  134. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.cc +41 -0
  135. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.h +33 -0
  136. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_expect_bug_impl.h +15 -0
  137. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h +84 -50
  138. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_lower_case_string_impl.h +25 -0
  139. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.cc +1 -1
  140. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.cc +25 -0
  141. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.h +56 -0
  142. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_output_impl.h +27 -0
  143. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_thread_impl.h +26 -0
  144. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_url_utils_impl.cc +1 -0
  145. package/third_party/quiche/quiche/common/quiche_buffer_allocator_test.cc +1 -1
  146. package/third_party/quiche/quiche/common/quiche_mem_slice_storage.h +2 -3
  147. package/third_party/quiche/quiche/common/structured_headers.cc +14 -12
  148. package/third_party/quiche/quiche/http2/adapter/event_forwarder.cc +7 -5
  149. package/third_party/quiche/quiche/http2/adapter/event_forwarder.h +4 -2
  150. package/third_party/quiche/quiche/http2/adapter/event_forwarder_test.cc +14 -9
  151. package/third_party/quiche/quiche/http2/adapter/header_validator.cc +43 -19
  152. package/third_party/quiche/quiche/http2/adapter/header_validator.h +11 -40
  153. package/third_party/quiche/quiche/http2/adapter/header_validator_base.h +69 -0
  154. package/third_party/quiche/quiche/http2/adapter/header_validator_test.cc +73 -1
  155. package/third_party/quiche/quiche/http2/adapter/nghttp2_adapter_test.cc +66 -0
  156. package/third_party/quiche/quiche/http2/adapter/nghttp2_session_test.cc +8 -5
  157. package/third_party/quiche/quiche/http2/adapter/nghttp2_test.cc +1 -1
  158. package/third_party/quiche/quiche/http2/adapter/noop_header_validator.cc +22 -0
  159. package/third_party/quiche/quiche/http2/adapter/noop_header_validator.h +25 -0
  160. package/third_party/quiche/quiche/http2/adapter/noop_header_validator_test.cc +523 -0
  161. package/third_party/quiche/quiche/http2/adapter/oghttp2_adapter_test.cc +186 -5
  162. package/third_party/quiche/quiche/http2/adapter/oghttp2_session.cc +37 -43
  163. package/third_party/quiche/quiche/http2/adapter/oghttp2_session.h +22 -23
  164. package/third_party/quiche/quiche/http2/adapter/test_utils.cc +1 -1
  165. package/third_party/quiche/quiche/http2/adapter/window_manager_test.cc +11 -5
  166. package/third_party/quiche/quiche/http2/core/http2_trace_logging.cc +13 -11
  167. package/third_party/quiche/quiche/http2/core/http2_trace_logging.h +5 -4
  168. package/third_party/quiche/quiche/http2/core/priority_write_scheduler.h +42 -36
  169. package/third_party/quiche/quiche/http2/core/priority_write_scheduler_test.cc +2 -2
  170. package/third_party/quiche/quiche/http2/decoder/decode_buffer_test.cc +9 -9
  171. package/third_party/quiche/quiche/http2/decoder/decode_http2_structures_test.cc +1 -1
  172. package/third_party/quiche/quiche/http2/decoder/http2_frame_decoder_test.cc +14 -14
  173. package/third_party/quiche/quiche/http2/decoder/http2_structure_decoder_test.cc +17 -17
  174. package/third_party/quiche/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder_test.cc +1 -1
  175. package/third_party/quiche/quiche/http2/decoder/payload_decoders/continuation_payload_decoder_test.cc +1 -1
  176. package/third_party/quiche/quiche/http2/decoder/payload_decoders/data_payload_decoder_test.cc +2 -2
  177. package/third_party/quiche/quiche/http2/decoder/payload_decoders/goaway_payload_decoder_test.cc +1 -1
  178. package/third_party/quiche/quiche/http2/decoder/payload_decoders/headers_payload_decoder_test.cc +1 -1
  179. package/third_party/quiche/quiche/http2/decoder/payload_decoders/ping_payload_decoder_test.cc +1 -1
  180. package/third_party/quiche/quiche/http2/decoder/payload_decoders/priority_payload_decoder_test.cc +1 -1
  181. package/third_party/quiche/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder_test.cc +1 -1
  182. package/third_party/quiche/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder_test.cc +1 -1
  183. package/third_party/quiche/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder_test.cc +1 -1
  184. package/third_party/quiche/quiche/http2/decoder/payload_decoders/settings_payload_decoder_test.cc +1 -1
  185. package/third_party/quiche/quiche/http2/decoder/payload_decoders/unknown_payload_decoder_test.cc +1 -1
  186. package/third_party/quiche/quiche/http2/decoder/payload_decoders/window_update_payload_decoder_test.cc +1 -1
  187. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_block_decoder_test.cc +2 -2
  188. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_state_test.cc +8 -8
  189. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_string_buffer_test.cc +4 -3
  190. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_tables_test.cc +17 -17
  191. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_test.cc +25 -25
  192. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_entry_decoder_test.cc +2 -2
  193. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_entry_type_decoder_test.cc +7 -6
  194. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_string_decoder_test.cc +6 -6
  195. package/third_party/quiche/quiche/http2/hpack/decoder/hpack_whole_entry_buffer_test.cc +1 -1
  196. package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_decoder_test.cc +2 -2
  197. package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_encoder_test.cc +1 -1
  198. package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_transcoder_test.cc +5 -5
  199. package/third_party/quiche/quiche/http2/hpack/varint/hpack_varint_decoder_test.cc +4 -4
  200. package/third_party/quiche/quiche/http2/hpack/varint/hpack_varint_round_trip_test.cc +1 -1
  201. package/third_party/quiche/quiche/http2/http2_constants_test.cc +1 -1
  202. package/third_party/quiche/quiche/http2/http2_structures_test.cc +23 -22
  203. package/third_party/quiche/quiche/http2/test_tools/frame_decoder_state_test_util.cc +1 -1
  204. package/third_party/quiche/quiche/http2/test_tools/frame_decoder_state_test_util.h +1 -1
  205. package/third_party/quiche/quiche/http2/test_tools/frame_parts.cc +38 -38
  206. package/third_party/quiche/quiche/http2/test_tools/hpack_block_collector.cc +15 -15
  207. package/third_party/quiche/quiche/http2/test_tools/hpack_entry_collector.cc +24 -22
  208. package/third_party/quiche/quiche/http2/test_tools/hpack_string_collector.cc +5 -5
  209. package/third_party/quiche/quiche/http2/test_tools/http2_frame_builder_test.cc +70 -89
  210. package/third_party/quiche/quiche/http2/test_tools/payload_decoder_base_test_util.cc +1 -1
  211. package/third_party/quiche/quiche/http2/test_tools/payload_decoder_base_test_util.h +29 -26
  212. package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test.cc → random_decoder_test_base.cc} +13 -10
  213. package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test.h → random_decoder_test_base.h} +15 -17
  214. package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test_test.cc → random_decoder_test_base_test.cc} +1 -1
  215. package/third_party/quiche/quiche/http2/test_tools/verify_macros.h +32 -0
  216. package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.cc +2 -1
  217. package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_simulator_test.cc +3 -2
  218. package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender_test.cc +3 -2
  219. package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats.cc +3 -2
  220. package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats.h +2 -1
  221. package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats_test.cc +2 -13
  222. package/third_party/quiche/quiche/quic/core/crypto/certificate_view.cc +15 -0
  223. package/third_party/quiche/quiche/quic/core/crypto/certificate_view.h +7 -0
  224. package/third_party/quiche/quiche/quic/core/crypto/certificate_view_test.cc +16 -0
  225. package/third_party/quiche/quiche/quic/core/crypto/crypto_protocol.h +1 -0
  226. package/third_party/quiche/quiche/quic/core/crypto/proof_source.h +2 -2
  227. package/third_party/quiche/quiche/quic/core/crypto/proof_source_x509.cc +3 -5
  228. package/third_party/quiche/quiche/quic/core/crypto/proof_source_x509.h +1 -2
  229. package/third_party/quiche/quiche/quic/core/crypto/quic_crypto_server_config.cc +1 -1
  230. package/third_party/quiche/quiche/quic/core/crypto/quic_crypto_server_config.h +3 -3
  231. package/third_party/quiche/quiche/quic/core/frames/quic_blocked_frame.cc +2 -8
  232. package/third_party/quiche/quiche/quic/core/frames/quic_blocked_frame.h +0 -1
  233. package/third_party/quiche/quiche/quic/core/frames/quic_crypto_frame.h +2 -0
  234. package/third_party/quiche/quiche/quic/core/frames/quic_frames_test.cc +2 -1
  235. package/third_party/quiche/quiche/quic/core/http/capsule.cc +2 -22
  236. package/third_party/quiche/quiche/quic/core/http/capsule.h +0 -2
  237. package/third_party/quiche/quiche/quic/core/http/capsule_test.cc +1 -2
  238. package/third_party/quiche/quiche/quic/core/http/end_to_end_test.cc +148 -57
  239. package/third_party/quiche/quiche/quic/core/http/http_constants.cc +1 -1
  240. package/third_party/quiche/quiche/quic/core/http/http_constants.h +2 -2
  241. package/third_party/quiche/quiche/quic/core/http/quic_header_list_test.cc +2 -2
  242. package/third_party/quiche/quiche/quic/core/http/quic_headers_stream_test.cc +18 -14
  243. package/third_party/quiche/quiche/quic/core/http/quic_send_control_stream.h +2 -1
  244. package/third_party/quiche/quiche/quic/core/http/quic_send_control_stream_test.cc +3 -7
  245. package/third_party/quiche/quiche/quic/core/http/quic_server_session_base.h +4 -0
  246. package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.cc +47 -65
  247. package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.h +5 -17
  248. package/third_party/quiche/quiche/quic/core/http/quic_spdy_session_test.cc +63 -54
  249. package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.cc +34 -91
  250. package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.h +1 -9
  251. package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream_test.cc +27 -134
  252. package/third_party/quiche/quiche/quic/core/http/spdy_utils.cc +0 -41
  253. package/third_party/quiche/quiche/quic/core/http/spdy_utils.h +0 -9
  254. package/third_party/quiche/quiche/quic/core/http/spdy_utils_test.cc +0 -32
  255. package/third_party/quiche/quiche/quic/core/http/web_transport_http3.cc +0 -1
  256. package/third_party/quiche/quiche/quic/core/packet_number_indexed_queue_test.cc +2 -2
  257. package/third_party/quiche/quiche/quic/core/qpack/qpack_header_table.cc +2 -1
  258. package/third_party/quiche/quiche/quic/core/qpack/qpack_send_stream.h +2 -1
  259. package/third_party/quiche/quiche/quic/core/quic_arena_scoped_ptr_test.cc +2 -2
  260. package/third_party/quiche/quiche/quic/core/quic_connection.cc +68 -46
  261. package/third_party/quiche/quiche/quic/core/quic_connection.h +7 -6
  262. package/third_party/quiche/quiche/quic/core/quic_connection_context_test.cc +2 -2
  263. package/third_party/quiche/quiche/quic/core/quic_connection_id_manager_test.cc +2 -2
  264. package/third_party/quiche/quiche/quic/core/quic_connection_id_test.cc +2 -2
  265. package/third_party/quiche/quiche/quic/core/quic_connection_test.cc +45 -132
  266. package/third_party/quiche/quiche/quic/core/quic_constants.h +0 -7
  267. package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.cc +11 -3
  268. package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.h +1 -1
  269. package/third_party/quiche/quiche/quic/core/quic_control_frame_manager_test.cc +2 -2
  270. package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker.cc +13 -1
  271. package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker.h +3 -0
  272. package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker_test.cc +2 -2
  273. package/third_party/quiche/quiche/quic/core/quic_crypto_client_stream.cc +6 -0
  274. package/third_party/quiche/quiche/quic/core/quic_crypto_client_stream.h +8 -0
  275. package/third_party/quiche/quiche/quic/core/quic_crypto_server_stream.cc +26 -13
  276. package/third_party/quiche/quiche/quic/core/quic_crypto_server_stream.h +5 -2
  277. package/third_party/quiche/quiche/quic/core/quic_crypto_stream.cc +55 -47
  278. package/third_party/quiche/quiche/quic/core/quic_crypto_stream.h +15 -10
  279. package/third_party/quiche/quiche/quic/core/quic_crypto_stream_test.cc +34 -5
  280. package/third_party/quiche/quiche/quic/core/quic_dispatcher.cc +20 -11
  281. package/third_party/quiche/quiche/quic/core/quic_dispatcher_test.cc +37 -13
  282. package/third_party/quiche/quiche/quic/core/quic_flags_list.h +6 -10
  283. package/third_party/quiche/quiche/quic/core/quic_flow_controller.cc +3 -3
  284. package/third_party/quiche/quiche/quic/core/quic_flow_controller.h +2 -2
  285. package/third_party/quiche/quiche/quic/core/quic_flow_controller_test.cc +15 -10
  286. package/third_party/quiche/quiche/quic/core/quic_framer.cc +1 -1
  287. package/third_party/quiche/quiche/quic/core/quic_one_block_arena.h +3 -2
  288. package/third_party/quiche/quiche/quic/core/quic_one_block_arena_test.cc +2 -2
  289. package/third_party/quiche/quiche/quic/core/quic_packet_creator.cc +3 -11
  290. package/third_party/quiche/quiche/quic/core/quic_packet_creator.h +0 -8
  291. package/third_party/quiche/quiche/quic/core/quic_ping_manager.cc +14 -14
  292. package/third_party/quiche/quiche/quic/core/quic_ping_manager_test.cc +48 -0
  293. package/third_party/quiche/quiche/quic/core/quic_received_packet_manager.cc +3 -18
  294. package/third_party/quiche/quiche/quic/core/quic_received_packet_manager_test.cc +4 -14
  295. package/third_party/quiche/quiche/quic/core/quic_server_id_test.cc +2 -2
  296. package/third_party/quiche/quiche/quic/core/quic_session.cc +4 -4
  297. package/third_party/quiche/quiche/quic/core/quic_session.h +1 -1
  298. package/third_party/quiche/quiche/quic/core/quic_session_test.cc +21 -1
  299. package/third_party/quiche/quiche/quic/core/quic_stream.cc +4 -7
  300. package/third_party/quiche/quiche/quic/core/quic_stream_test.cc +2 -4
  301. package/third_party/quiche/quiche/quic/core/quic_trace_visitor_test.cc +2 -2
  302. package/third_party/quiche/quiche/quic/core/quic_types.h +3 -8
  303. package/third_party/quiche/quiche/quic/core/quic_udp_socket_posix.cc +5 -4
  304. package/third_party/quiche/quiche/quic/core/quic_unacked_packet_map_test.cc +1 -1
  305. package/third_party/quiche/quiche/quic/core/quic_utils.cc +1 -1
  306. package/third_party/quiche/quiche/quic/core/quic_utils.h +2 -2
  307. package/third_party/quiche/quiche/quic/core/quic_versions_test.cc +0 -1
  308. package/third_party/quiche/quiche/quic/core/tls_client_handshaker.cc +13 -0
  309. package/third_party/quiche/quiche/quic/core/tls_client_handshaker.h +2 -0
  310. package/third_party/quiche/quiche/quic/core/tls_server_handshaker.cc +17 -3
  311. package/third_party/quiche/quiche/quic/core/tls_server_handshaker.h +3 -1
  312. package/third_party/quiche/quiche/quic/core/uber_received_packet_manager_test.cc +18 -10
  313. package/third_party/quiche/quiche/quic/masque/masque_client_bin.cc +6 -4
  314. package/third_party/quiche/quiche/quic/masque/masque_client_session.cc +23 -7
  315. package/third_party/quiche/quiche/quic/masque/masque_client_session.h +1 -1
  316. package/third_party/quiche/quiche/quic/masque/masque_server_backend.cc +13 -0
  317. package/third_party/quiche/quiche/quic/masque/masque_server_backend.h +2 -0
  318. package/third_party/quiche/quiche/quic/masque/masque_server_bin.cc +5 -4
  319. package/third_party/quiche/quiche/quic/masque/masque_server_session.cc +30 -40
  320. package/third_party/quiche/quiche/quic/masque/masque_server_session.h +1 -1
  321. package/third_party/quiche/quiche/quic/platform/api/quic_export.h +4 -4
  322. package/third_party/quiche/quiche/quic/platform/api/quic_flags.h +0 -1
  323. package/third_party/quiche/quiche/quic/platform/api/quic_logging.h +0 -6
  324. package/third_party/quiche/quiche/quic/platform/api/quic_test.h +6 -5
  325. package/third_party/quiche/quiche/quic/qbone/bonnet/icmp_reachable_test.cc +2 -2
  326. package/third_party/quiche/quiche/quic/qbone/bonnet/mock_qbone_tunnel.h +2 -0
  327. package/third_party/quiche/quiche/quic/qbone/bonnet/qbone_tunnel_interface.h +2 -0
  328. package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_controller_test.cc +2 -2
  329. package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_packet_exchanger_test.cc +2 -2
  330. package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_test.cc +2 -2
  331. package/third_party/quiche/quiche/quic/qbone/platform/netlink_test.cc +2 -2
  332. package/third_party/quiche/quiche/quic/qbone/platform/tcp_packet.cc +5 -4
  333. package/third_party/quiche/quiche/quic/qbone/qbone_client_session.cc +4 -2
  334. package/third_party/quiche/quiche/quic/qbone/qbone_packet_processor.cc +2 -1
  335. package/third_party/quiche/quiche/quic/qbone/qbone_packet_processor_test.cc +2 -2
  336. package/third_party/quiche/quiche/quic/qbone/qbone_server_session.cc +4 -2
  337. package/third_party/quiche/quiche/quic/qbone/qbone_session_base.cc +3 -2
  338. package/third_party/quiche/quiche/quic/qbone/qbone_stream.cc +4 -4
  339. package/third_party/quiche/quiche/quic/test_tools/quic_connection_peer.cc +1 -1
  340. package/third_party/quiche/quiche/quic/test_tools/quic_http_response_cache_data/test.example.com/index.html +63 -0
  341. package/third_party/quiche/quiche/quic/test_tools/quic_http_response_cache_data/test.example.com/map.html +65 -0
  342. package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.cc +4 -3
  343. package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.h +18 -1
  344. package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint_test.cc +1 -1
  345. package/third_party/quiche/quiche/quic/test_tools/simulator/simulator_test.cc +1 -1
  346. package/third_party/quiche/quiche/quic/test_tools/test_ticket_crypter.cc +1 -1
  347. package/third_party/quiche/quiche/quic/test_tools/test_ticket_crypter.h +2 -2
  348. package/third_party/quiche/quiche/quic/{core/crypto → tools}/crypto_message_printer_bin.cc +0 -0
  349. package/third_party/quiche/quiche/quic/{core/qpack → tools}/qpack_offline_decoder_bin.cc +0 -0
  350. package/third_party/quiche/quiche/quic/tools/quic_client_interop_test_bin.cc +4 -3
  351. package/third_party/quiche/quiche/quic/tools/quic_memory_cache_backend_test.cc +3 -31
  352. package/third_party/quiche/quiche/quic/tools/quic_packet_printer_bin.cc +2 -2
  353. package/third_party/quiche/quiche/quic/tools/quic_simple_server_session.h +1 -1
  354. package/third_party/quiche/quiche/quic/tools/quic_simple_server_session_test.cc +1 -1
  355. package/third_party/quiche/quiche/quic/tools/quic_toy_client.cc +52 -38
  356. package/third_party/quiche/quiche/quic/tools/quic_toy_server.cc +10 -7
  357. package/third_party/quiche/quiche/quic/tools/simple_ticket_crypter.cc +1 -1
  358. package/third_party/quiche/quiche/quic/tools/simple_ticket_crypter.h +1 -1
  359. package/third_party/quiche/quiche/quic/tools/web_transport_test_visitors.h +3 -2
  360. package/third_party/quiche/quiche/spdy/core/array_output_buffer.h +1 -1
  361. package/third_party/quiche/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc +1 -1
  362. package/third_party/quiche/quiche/spdy/core/hpack/hpack_encoder_test.cc +2 -1
  363. package/third_party/quiche/quiche/spdy/core/hpack/hpack_header_table_test.cc +1 -1
  364. package/third_party/quiche/quiche/spdy/core/hpack/hpack_round_trip_test.cc +2 -1
  365. package/third_party/quiche/quiche/spdy/core/hpack/hpack_static_table_test.cc +1 -1
  366. package/third_party/quiche/quiche/spdy/core/http2_frame_decoder_adapter.cc +8 -6
  367. package/third_party/quiche/quiche/spdy/core/http2_frame_decoder_adapter.h +17 -6
  368. package/third_party/quiche/quiche/spdy/core/metadata_extension.cc +1 -1
  369. package/third_party/quiche/quiche/spdy/core/metadata_extension_test.cc +1 -1
  370. package/third_party/quiche/quiche/spdy/core/spdy_framer_test.cc +21 -17
  371. package/third_party/quiche/quiche/spdy/core/spdy_intrusive_list_test.cc +3 -3
  372. package/third_party/quiche/quiche/spdy/core/spdy_no_op_visitor.h +6 -4
  373. package/third_party/quiche/quiche/spdy/core/spdy_pinnable_buffer_piece_test.cc +1 -1
  374. package/third_party/quiche/quiche/spdy/core/spdy_prefixed_buffer_reader_test.cc +1 -1
  375. package/third_party/quiche/quiche/spdy/core/spdy_protocol_test.cc +1 -1
  376. package/third_party/quiche/quiche/spdy/test_tools/mock_spdy_framer_visitor.h +5 -4
  377. package/third_party/boringssl/src/util/bot/cmake-win32.zip.sha1 +0 -1
  378. package/third_party/quiche/quiche/common/platform/api/quiche_mock_log.h +0 -18
  379. package/third_party/quiche/quiche/common/platform/api/quiche_test_helpers.h +0 -8
  380. package/third_party/quiche/quiche/quic/platform/api/quic_mock_log.h +0 -19
  381. package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_dispatcher.cc +0 -51
  382. package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_dispatcher.h +0 -41
  383. package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_session.cc +0 -168
  384. package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_session.h +0 -78
@@ -128,7 +128,7 @@ class PingAlarmDelegate : public QuicConnectionAlarmDelegate {
128
128
 
129
129
  void OnAlarm() override {
130
130
  QUICHE_DCHECK(connection_->connected());
131
- QUICHE_DCHECK(!GetQuicReloadableFlag(quic_use_ping_manager));
131
+ QUICHE_DCHECK(!GetQuicReloadableFlag(quic_use_ping_manager2));
132
132
  connection_->OnPingTimeout();
133
133
  }
134
134
  };
@@ -3014,15 +3014,8 @@ bool QuicConnection::ProcessValidatedPacket(const QuicPacketHeader& header) {
3014
3014
  ", encryption level: ",
3015
3015
  EncryptionLevelToString(
3016
3016
  last_received_packet_info_.decrypted_level));
3017
- if (GetQuicReloadableFlag(
3018
- quic_drop_packets_with_changed_server_address)) {
3019
- QUIC_LOG_EVERY_N_SEC(INFO, 100) << error_details;
3020
- QUIC_CODE_COUNT(quic_dropped_packets_with_changed_server_address);
3021
- return false;
3022
- }
3023
- QUIC_PEER_BUG(Server self address change) << error_details;
3024
- CloseConnection(QUIC_ERROR_MIGRATING_ADDRESS, error_details,
3025
- ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
3017
+ QUIC_LOG_EVERY_N_SEC(INFO, 100) << error_details;
3018
+ QUIC_CODE_COUNT(quic_dropped_packets_with_changed_server_address);
3026
3019
  return false;
3027
3020
  }
3028
3021
  }
@@ -4120,6 +4113,21 @@ void QuicConnection::SendAck() {
4120
4113
  visitor_->OnAckNeedsRetransmittableFrame();
4121
4114
  }
4122
4115
 
4116
+ EncryptionLevel QuicConnection::GetEncryptionLevelToSendPingForSpace(
4117
+ PacketNumberSpace space) const {
4118
+ switch (space) {
4119
+ case INITIAL_DATA:
4120
+ return ENCRYPTION_INITIAL;
4121
+ case HANDSHAKE_DATA:
4122
+ return ENCRYPTION_HANDSHAKE;
4123
+ case APPLICATION_DATA:
4124
+ return framer_.GetEncryptionLevelToSendApplicationData();
4125
+ default:
4126
+ QUICHE_DCHECK(false);
4127
+ return NUM_ENCRYPTION_LEVELS;
4128
+ }
4129
+ }
4130
+
4123
4131
  void QuicConnection::OnRetransmissionTimeout() {
4124
4132
  ScopedRetransmissionTimeoutIndicator indicator(this);
4125
4133
  #ifndef NDEBUG
@@ -4182,7 +4190,8 @@ void QuicConnection::OnRetransmissionTimeout() {
4182
4190
  if (sent_packet_manager_
4183
4191
  .GetEarliestPacketSentTimeForPto(&packet_number_space)
4184
4192
  .IsInitialized()) {
4185
- SendPingAtLevel(QuicUtils::GetEncryptionLevel(packet_number_space));
4193
+ SendPingAtLevel(
4194
+ GetEncryptionLevelToSendPingForSpace(packet_number_space));
4186
4195
  } else {
4187
4196
  // The client must PTO when there is nothing in flight if the server
4188
4197
  // could be blocked from sending by the amplification limit
@@ -4686,7 +4695,7 @@ void QuicConnection::SetPingAlarm() {
4686
4695
  return;
4687
4696
  }
4688
4697
  if (use_ping_manager_) {
4689
- QUIC_RELOADABLE_FLAG_COUNT(quic_use_ping_manager);
4698
+ QUIC_RELOADABLE_FLAG_COUNT(quic_use_ping_manager2);
4690
4699
  ping_manager_.SetAlarm(clock_->ApproximateNow(),
4691
4700
  visitor_->ShouldKeepConnectionAlive(),
4692
4701
  sent_packet_manager_.HasInFlightPackets());
@@ -4865,29 +4874,19 @@ QuicConnection::ScopedPacketFlusher::~ScopedPacketFlusher() {
4865
4874
  }
4866
4875
  }
4867
4876
 
4868
- if (connection_->flush_after_coalesce_higher_space_packets_) {
4869
- // INITIAL or HANDSHAKE retransmission could cause peer to derive new
4870
- // keys, such that the buffered undecryptable packets may be processed.
4871
- // This endpoint would derive an inflated RTT sample when receiving ACKs
4872
- // of those undecryptable packets. To mitigate this, tries to coalesce as
4873
- // many higher space packets as possible (via for loop inside
4874
- // MaybeCoalescePacketOfHigherSpace) to fill the remaining space in the
4875
- // coalescer.
4876
- QUIC_RELOADABLE_FLAG_COUNT(
4877
- quic_flush_after_coalesce_higher_space_packets);
4878
- if (connection_->version().CanSendCoalescedPackets()) {
4879
- connection_->MaybeCoalescePacketOfHigherSpace();
4880
- }
4881
- connection_->packet_creator_.Flush();
4882
- if (connection_->version().CanSendCoalescedPackets()) {
4883
- connection_->FlushCoalescedPacket();
4884
- }
4885
- } else {
4886
- connection_->packet_creator_.Flush();
4887
- if (connection_->version().CanSendCoalescedPackets()) {
4888
- connection_->MaybeCoalescePacketOfHigherSpace();
4889
- connection_->FlushCoalescedPacket();
4890
- }
4877
+ // INITIAL or HANDSHAKE retransmission could cause peer to derive new
4878
+ // keys, such that the buffered undecryptable packets may be processed.
4879
+ // This endpoint would derive an inflated RTT sample when receiving ACKs
4880
+ // of those undecryptable packets. To mitigate this, tries to coalesce as
4881
+ // many higher space packets as possible (via for loop inside
4882
+ // MaybeCoalescePacketOfHigherSpace) to fill the remaining space in the
4883
+ // coalescer.
4884
+ if (connection_->version().CanSendCoalescedPackets()) {
4885
+ connection_->MaybeCoalescePacketOfHigherSpace();
4886
+ }
4887
+ connection_->packet_creator_.Flush();
4888
+ if (connection_->version().CanSendCoalescedPackets()) {
4889
+ connection_->FlushCoalescedPacket();
4891
4890
  }
4892
4891
  connection_->FlushPackets();
4893
4892
  if (!handshake_packet_sent_ && connection_->handshake_packet_sent_) {
@@ -5911,7 +5910,8 @@ void QuicConnection::SendAllPendingAcks() {
5911
5910
  << PacketNumberSpaceToString(
5912
5911
  static_cast<PacketNumberSpace>(i));
5913
5912
  ScopedEncryptionLevelContext context(
5914
- this, QuicUtils::GetEncryptionLevel(static_cast<PacketNumberSpace>(i)));
5913
+ this, QuicUtils::GetEncryptionLevelToSendAckofSpace(
5914
+ static_cast<PacketNumberSpace>(i)));
5915
5915
  QuicFrames frames;
5916
5916
  frames.push_back(uber_received_packet_manager_.GetUpdatedAckFrame(
5917
5917
  static_cast<PacketNumberSpace>(i), clock_->ApproximateNow()));
@@ -5970,8 +5970,7 @@ void QuicConnection::MaybeCoalescePacketOfHigherSpace() {
5970
5970
  }
5971
5971
  if (fill_coalesced_packet_) {
5972
5972
  // Make sure MaybeCoalescePacketOfHigherSpace is not re-entrant.
5973
- QUIC_BUG_IF(quic_coalesce_packet_reentrant,
5974
- flush_after_coalesce_higher_space_packets_);
5973
+ QUIC_BUG(quic_coalesce_packet_reentrant);
5975
5974
  return;
5976
5975
  }
5977
5976
  for (EncryptionLevel retransmission_level :
@@ -6025,11 +6024,7 @@ bool QuicConnection::FlushCoalescedPacket() {
6025
6024
  const size_t length = packet_creator_.SerializeCoalescedPacket(
6026
6025
  coalesced_packet_, buffer, coalesced_packet_.max_packet_length());
6027
6026
  if (length == 0) {
6028
- if (packet_creator_
6029
- .close_connection_if_fail_to_serialzie_coalesced_packet() &&
6030
- connected_) {
6031
- QUIC_RELOADABLE_FLAG_COUNT_N(
6032
- quic_close_connection_if_fail_to_serialzie_coalesced_packet2, 2, 2);
6027
+ if (connected_) {
6033
6028
  CloseConnection(QUIC_FAILED_TO_SERIALIZE_PACKET,
6034
6029
  "Failed to serialize coalesced packet.",
6035
6030
  ConnectionCloseBehavior::SILENT_CLOSE);
@@ -6927,11 +6922,38 @@ QuicConnectionId QuicConnection::GetOneActiveServerConnectionId() const {
6927
6922
 
6928
6923
  std::vector<QuicConnectionId> QuicConnection::GetActiveServerConnectionIds()
6929
6924
  const {
6925
+ QUICHE_DCHECK_EQ(Perspective::IS_SERVER, perspective_);
6926
+ std::vector<QuicConnectionId> result;
6930
6927
  if (self_issued_cid_manager_ == nullptr) {
6931
- return {default_path_.server_connection_id};
6928
+ result.push_back(default_path_.server_connection_id);
6929
+ } else {
6930
+ QUICHE_DCHECK(version().HasIetfQuicFrames());
6931
+ result = self_issued_cid_manager_->GetUnretiredConnectionIds();
6932
6932
  }
6933
- QUICHE_DCHECK(version().HasIetfQuicFrames());
6934
- return self_issued_cid_manager_->GetUnretiredConnectionIds();
6933
+ if (GetQuicReloadableFlag(
6934
+ quic_consider_original_connection_id_as_active_pre_handshake)) {
6935
+ QUIC_RELOADABLE_FLAG_COUNT(
6936
+ quic_consider_original_connection_id_as_active_pre_handshake);
6937
+ if (!IsHandshakeComplete() &&
6938
+ original_destination_connection_id_.has_value()) {
6939
+ // Consider original_destination_connection_id_ as active before handshake
6940
+ // completes.
6941
+ if (std::find(result.begin(), result.end(),
6942
+ original_destination_connection_id_.value()) !=
6943
+ result.end()) {
6944
+ QUIC_BUG(quic_unexpected_original_destination_connection_id)
6945
+ << "original_destination_connection_id: "
6946
+ << original_destination_connection_id_.value()
6947
+ << " is unexpectedly in active "
6948
+ "list";
6949
+ } else {
6950
+ result.insert(result.end(),
6951
+ original_destination_connection_id_.value());
6952
+ }
6953
+ QUIC_CODE_COUNT(quic_active_original_connection_id_pre_handshake);
6954
+ }
6955
+ }
6956
+ return result;
6935
6957
  }
6936
6958
 
6937
6959
  void QuicConnection::CreateConnectionIdManager() {
@@ -1863,6 +1863,10 @@ class QUIC_EXPORT_PRIVATE QuicConnection
1863
1863
  bool ShouldSetRetransmissionAlarmOnPacketSent(bool in_flight,
1864
1864
  EncryptionLevel level) const;
1865
1865
 
1866
+ // Determines encryption level to send ping in `packet_number_space`.
1867
+ EncryptionLevel GetEncryptionLevelToSendPingForSpace(
1868
+ PacketNumberSpace space) const;
1869
+
1866
1870
  QuicConnectionContext context_;
1867
1871
 
1868
1872
  QuicFramer framer_;
@@ -1991,7 +1995,7 @@ class QUIC_EXPORT_PRIVATE QuicConnection
1991
1995
  bool defer_send_in_response_to_packets_;
1992
1996
 
1993
1997
  // TODO(fayang): remove PING related fields below when deprecating
1994
- // quic_use_ping_manager.
1998
+ // quic_use_ping_manager2.
1995
1999
  // The timeout for keep-alive PING.
1996
2000
  QuicTime::Delta keep_alive_ping_timeout_;
1997
2001
 
@@ -2015,7 +2019,7 @@ class QUIC_EXPORT_PRIVATE QuicConnection
2015
2019
  // An alarm that is scheduled when the SentPacketManager requires a delay
2016
2020
  // before sending packets and fires when the packet may be sent.
2017
2021
  QuicArenaScopedPtr<QuicAlarm> send_alarm_;
2018
- // TODO(fayang): remove ping_alarm_ when deprecating quic_use_ping_manager.
2022
+ // TODO(fayang): remove ping_alarm_ when deprecating quic_use_ping_manager2.
2019
2023
  // An alarm that fires when a ping should be sent.
2020
2024
  QuicArenaScopedPtr<QuicAlarm> ping_alarm_;
2021
2025
  // An alarm that fires when an MTU probe should be sent.
@@ -2246,13 +2250,10 @@ class QUIC_EXPORT_PRIVATE QuicConnection
2246
2250
  // Enable this via reloadable flag once this feature is complete.
2247
2251
  bool connection_migration_use_new_cid_ = false;
2248
2252
 
2249
- const bool flush_after_coalesce_higher_space_packets_ =
2250
- GetQuicReloadableFlag(quic_flush_after_coalesce_higher_space_packets);
2251
-
2252
2253
  // If true, send connection close packet on INVALID_VERSION.
2253
2254
  bool send_connection_close_for_invalid_version_ = false;
2254
2255
 
2255
- const bool use_ping_manager_ = GetQuicReloadableFlag(quic_use_ping_manager);
2256
+ const bool use_ping_manager_ = GetQuicReloadableFlag(quic_use_ping_manager2);
2256
2257
 
2257
2258
  QuicPingManager ping_manager_;
2258
2259
 
@@ -9,7 +9,7 @@
9
9
 
10
10
  using testing::ElementsAre;
11
11
 
12
- namespace quic {
12
+ namespace quic::test {
13
13
  namespace {
14
14
 
15
15
  class TraceCollector : public QuicConnectionTracer {
@@ -170,4 +170,4 @@ TEST_F(QuicConnectionContextTest, TestAlternatingSwitch) {
170
170
  }
171
171
 
172
172
  } // namespace
173
- } // namespace quic
173
+ } // namespace quic::test
@@ -13,7 +13,7 @@
13
13
  #include "quiche/quic/test_tools/quic_connection_id_manager_peer.h"
14
14
  #include "quiche/quic/test_tools/quic_test_utils.h"
15
15
 
16
- namespace quic {
16
+ namespace quic::test {
17
17
  namespace {
18
18
 
19
19
  using ::quic::test::IsError;
@@ -953,4 +953,4 @@ TEST_F(QuicSelfIssuedConnectionIdManagerTest,
953
953
  }
954
954
 
955
955
  } // namespace
956
- } // namespace quic
956
+ } // namespace quic::test
@@ -13,7 +13,7 @@
13
13
  #include "quiche/quic/platform/api/quic_test.h"
14
14
  #include "quiche/quic/test_tools/quic_test_utils.h"
15
15
 
16
- namespace quic {
16
+ namespace quic::test {
17
17
 
18
18
  namespace {
19
19
 
@@ -178,4 +178,4 @@ TEST_F(QuicConnectionIdTest, ChangeLength) {
178
178
 
179
179
  } // namespace
180
180
 
181
- } // namespace quic
181
+ } // namespace quic::test
@@ -1563,23 +1563,9 @@ TEST_P(QuicConnectionTest, SelfAddressChangeAtServer) {
1563
1563
  QuicSocketAddress self_address(host, 123);
1564
1564
  EXPECT_EQ(0u, connection_.GetStats().packets_dropped);
1565
1565
  EXPECT_CALL(visitor_, AllowSelfAddressChange()).WillOnce(Return(false));
1566
- if (GetQuicReloadableFlag(quic_drop_packets_with_changed_server_address)) {
1567
- ProcessFramePacketWithAddresses(MakeCryptoFrame(), self_address,
1568
- kPeerAddress, ENCRYPTION_INITIAL);
1569
- EXPECT_TRUE(connection_.connected());
1570
- EXPECT_EQ(1u, connection_.GetStats().packets_dropped);
1571
- return;
1572
- }
1573
- if (version().handshake_protocol == PROTOCOL_TLS1_3) {
1574
- EXPECT_CALL(visitor_, BeforeConnectionCloseSent());
1575
- }
1576
- EXPECT_CALL(visitor_, OnConnectionClosed(_, _));
1577
- EXPECT_QUIC_PEER_BUG(
1578
- ProcessFramePacketWithAddresses(MakeCryptoFrame(), self_address,
1579
- kPeerAddress, ENCRYPTION_INITIAL),
1580
- "Self address migration is not supported at the server");
1581
- EXPECT_FALSE(connection_.connected());
1582
- TestConnectionCloseQuicErrorCode(QUIC_ERROR_MIGRATING_ADDRESS);
1566
+ ProcessFramePacketWithAddresses(MakeCryptoFrame(), self_address, kPeerAddress,
1567
+ ENCRYPTION_INITIAL);
1568
+ EXPECT_TRUE(connection_.connected());
1583
1569
  EXPECT_EQ(1u, connection_.GetStats().packets_dropped);
1584
1570
  }
1585
1571
 
@@ -6945,7 +6931,7 @@ TEST_P(QuicConnectionTest, SendBlockedImmediately) {
6945
6931
  EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1);
6946
6932
  EXPECT_CALL(debug_visitor, OnPacketSent(_, _, _, _, _, _, _, _)).Times(1);
6947
6933
  EXPECT_EQ(0u, connection_.GetStats().blocked_frames_sent);
6948
- connection_.SendControlFrame(QuicFrame(QuicBlockedFrame(1, 3)));
6934
+ connection_.SendControlFrame(QuicFrame(QuicBlockedFrame(1, 3, 0)));
6949
6935
  EXPECT_EQ(1u, connection_.GetStats().blocked_frames_sent);
6950
6936
  EXPECT_FALSE(connection_.HasQueuedData());
6951
6937
  }
@@ -6956,7 +6942,7 @@ TEST_P(QuicConnectionTest, FailedToSendBlockedFrames) {
6956
6942
  }
6957
6943
  MockQuicConnectionDebugVisitor debug_visitor;
6958
6944
  connection_.set_debug_visitor(&debug_visitor);
6959
- QuicBlockedFrame blocked(1, 3);
6945
+ QuicBlockedFrame blocked(1, 3, 0);
6960
6946
 
6961
6947
  EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0);
6962
6948
  EXPECT_CALL(debug_visitor, OnPacketSent(_, _, _, _, _, _, _, _)).Times(0);
@@ -7185,7 +7171,7 @@ TEST_P(QuicConnectionTest, ServerRetransmittableOnWire) {
7185
7171
  }
7186
7172
 
7187
7173
  TEST_P(QuicConnectionTest, RetransmittableOnWireSendFirstPacket) {
7188
- if (!GetQuicReloadableFlag(quic_use_ping_manager) ||
7174
+ if (!GetQuicReloadableFlag(quic_use_ping_manager2) ||
7189
7175
  !VersionHasIetfQuicFrames(connection_.version().transport_version)) {
7190
7176
  return;
7191
7177
  }
@@ -7231,7 +7217,7 @@ TEST_P(QuicConnectionTest, RetransmittableOnWireSendFirstPacket) {
7231
7217
  }
7232
7218
 
7233
7219
  TEST_P(QuicConnectionTest, RetransmittableOnWireSendRandomBytes) {
7234
- if (!GetQuicReloadableFlag(quic_use_ping_manager) ||
7220
+ if (!GetQuicReloadableFlag(quic_use_ping_manager2) ||
7235
7221
  !VersionHasIetfQuicFrames(connection_.version().transport_version)) {
7236
7222
  return;
7237
7223
  }
@@ -7280,7 +7266,7 @@ TEST_P(QuicConnectionTest, RetransmittableOnWireSendRandomBytes) {
7280
7266
 
7281
7267
  TEST_P(QuicConnectionTest,
7282
7268
  RetransmittableOnWireSendRandomBytesWithWriterBlocked) {
7283
- if (!GetQuicReloadableFlag(quic_use_ping_manager) ||
7269
+ if (!GetQuicReloadableFlag(quic_use_ping_manager2) ||
7284
7270
  !VersionHasIetfQuicFrames(connection_.version().transport_version)) {
7285
7271
  return;
7286
7272
  }
@@ -8250,6 +8236,8 @@ TEST_P(QuicConnectionTest, ResetBackOffRetransmitableOnWireTimeout) {
8250
8236
  peer_creator_.packet_number() + 1);
8251
8237
  EXPECT_EQ(initial_retransmittable_on_wire_timeout,
8252
8238
  connection_.GetPingAlarm()->deadline() - clock_.ApproximateNow());
8239
+ clock_.AdvanceTime(initial_retransmittable_on_wire_timeout);
8240
+ connection_.GetPingAlarm()->Fire();
8253
8241
 
8254
8242
  // Verify the count of consecutive aggressive pings is reset.
8255
8243
  for (int i = 0; i < max_aggressive_retransmittable_on_wire_ping_count; i++) {
@@ -9276,14 +9264,14 @@ TEST_P(QuicConnectionTest, CoalescedPacketThatSavesFrames) {
9276
9264
  .Times(3)
9277
9265
  .WillRepeatedly([this](const QuicCryptoFrame& /*frame*/) {
9278
9266
  // QuicFrame takes ownership of the QuicBlockedFrame.
9279
- connection_.SendControlFrame(QuicFrame(QuicBlockedFrame(1, 3)));
9267
+ connection_.SendControlFrame(QuicFrame(QuicBlockedFrame(1, 3, 0)));
9280
9268
  });
9281
9269
  } else {
9282
9270
  EXPECT_CALL(visitor_, OnStreamFrame(_))
9283
9271
  .Times(3)
9284
9272
  .WillRepeatedly([this](const QuicStreamFrame& /*frame*/) {
9285
9273
  // QuicFrame takes ownership of the QuicBlockedFrame.
9286
- connection_.SendControlFrame(QuicFrame(QuicBlockedFrame(1, 3)));
9274
+ connection_.SendControlFrame(QuicFrame(QuicBlockedFrame(1, 3, 0)));
9287
9275
  });
9288
9276
  }
9289
9277
 
@@ -9919,12 +9907,8 @@ TEST_P(QuicConnectionTest, FailToCoalescePacket) {
9919
9907
 
9920
9908
  EXPECT_CALL(visitor_, OnHandshakePacketSent());
9921
9909
 
9922
- if (GetQuicReloadableFlag(
9923
- quic_close_connection_if_fail_to_serialzie_coalesced_packet2)) {
9924
- EXPECT_CALL(visitor_,
9925
- OnConnectionClosed(_, ConnectionCloseSource::FROM_SELF))
9926
- .WillOnce(Invoke(this, &QuicConnectionTest::SaveConnectionCloseFrame));
9927
- }
9910
+ EXPECT_CALL(visitor_, OnConnectionClosed(_, ConnectionCloseSource::FROM_SELF))
9911
+ .WillOnce(Invoke(this, &QuicConnectionTest::SaveConnectionCloseFrame));
9928
9912
 
9929
9913
  ProcessDataPacketAtLevel(1, !kHasStopWaiting, ENCRYPTION_INITIAL);
9930
9914
  auto test_body = [&] {
@@ -9970,16 +9954,11 @@ TEST_P(QuicConnectionTest, FailToCoalescePacket) {
9970
9954
 
9971
9955
  EXPECT_QUIC_BUG(test_body(), "SerializeCoalescedPacket failed.");
9972
9956
 
9973
- if (GetQuicReloadableFlag(
9974
- quic_close_connection_if_fail_to_serialzie_coalesced_packet2)) {
9975
- EXPECT_FALSE(connection_.connected());
9976
- EXPECT_THAT(saved_connection_close_frame_.quic_error_code,
9977
- IsError(QUIC_FAILED_TO_SERIALIZE_PACKET));
9978
- EXPECT_EQ(saved_connection_close_frame_.error_details,
9979
- "Failed to serialize coalesced packet.");
9980
- } else {
9981
- EXPECT_TRUE(connection_.connected());
9982
- }
9957
+ EXPECT_FALSE(connection_.connected());
9958
+ EXPECT_THAT(saved_connection_close_frame_.quic_error_code,
9959
+ IsError(QUIC_FAILED_TO_SERIALIZE_PACKET));
9960
+ EXPECT_EQ(saved_connection_close_frame_.error_details,
9961
+ "Failed to serialize coalesced packet.");
9983
9962
  }
9984
9963
 
9985
9964
  TEST_P(QuicConnectionTest, LegacyVersionEncapsulation) {
@@ -11203,40 +11182,13 @@ TEST_P(QuicConnectionTest, ClientAckDelayForAsyncPacketProcessing) {
11203
11182
  std::make_unique<TaggingEncrypter>(0x01));
11204
11183
  connection_.SetDefaultEncryptionLevel(ENCRYPTION_HANDSHAKE);
11205
11184
  // Verify HANDSHAKE packet gets processed.
11206
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
11207
- EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1);
11208
- } else {
11209
- EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(2);
11210
- }
11185
+ EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1);
11211
11186
  connection_.GetProcessUndecryptablePacketsAlarm()->Fire();
11212
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
11213
- // Verify immediate ACK has been sent out when flush went out of scope.
11214
- ASSERT_FALSE(connection_.HasPendingAcks());
11215
- } else {
11216
- ASSERT_TRUE(connection_.HasPendingAcks());
11217
- // Send ACKs.
11218
- clock_.AdvanceTime(connection_.GetAckAlarm()->deadline() - clock_.Now());
11219
- connection_.GetAckAlarm()->Fire();
11220
- }
11187
+ // Verify immediate ACK has been sent out when flush went out of scope.
11188
+ ASSERT_FALSE(connection_.HasPendingAcks());
11221
11189
  ASSERT_FALSE(writer_->ack_frames().empty());
11222
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
11223
- // Verify the ack_delay_time in the sent HANDSHAKE ACK frame is 100ms.
11224
- EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100),
11225
- writer_->ack_frames()[0].ack_delay_time);
11226
- ASSERT_TRUE(writer_->coalesced_packet() == nullptr);
11227
- return;
11228
- }
11229
- // Verify the ack_delay_time in the INITIAL ACK frame is 1ms.
11230
- EXPECT_EQ(QuicTime::Delta::FromMilliseconds(1),
11231
- writer_->ack_frames()[0].ack_delay_time);
11232
- // Process the coalesced HANDSHAKE packet.
11233
- ASSERT_TRUE(writer_->coalesced_packet() != nullptr);
11234
- auto packet = writer_->coalesced_packet()->Clone();
11235
- writer_->framer()->ProcessPacket(*packet);
11236
- ASSERT_FALSE(writer_->ack_frames().empty());
11237
- // Verify the ack_delay_time in the HANDSHAKE ACK frame includes the
11238
- // buffering time.
11239
- EXPECT_EQ(QuicTime::Delta::FromMilliseconds(101),
11190
+ // Verify the ack_delay_time in the sent HANDSHAKE ACK frame is 100ms.
11191
+ EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100),
11240
11192
  writer_->ack_frames()[0].ack_delay_time);
11241
11193
  ASSERT_TRUE(writer_->coalesced_packet() == nullptr);
11242
11194
  }
@@ -14999,21 +14951,12 @@ TEST_P(QuicConnectionTest, FailedToRetransmitShlo) {
14999
14951
  connection_.GetAckAlarm()->deadline());
15000
14952
  // ACK is not throttled by amplification limit, and SHLO is bundled. Also
15001
14953
  // HANDSHAKE + 1RTT packets get coalesced.
15002
- if (GetQuicReloadableFlag(quic_flush_after_coalesce_higher_space_packets)) {
15003
- EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(3);
15004
- } else {
15005
- EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(2);
15006
- }
14954
+ EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(3);
15007
14955
  // ACK alarm fires.
15008
14956
  clock_.AdvanceTime(kAlarmGranularity);
15009
14957
  connection_.GetAckAlarm()->Fire();
15010
- if (GetQuicReloadableFlag(quic_flush_after_coalesce_higher_space_packets)) {
15011
- // Verify 1-RTT packet is coalesced.
15012
- EXPECT_EQ(0x04040404u, writer_->final_bytes_of_last_packet());
15013
- } else {
15014
- // Verify HANDSHAKE packet is coalesced with INITIAL ACK + SHLO.
15015
- EXPECT_EQ(0x03030303u, writer_->final_bytes_of_last_packet());
15016
- }
14958
+ // Verify 1-RTT packet is coalesced.
14959
+ EXPECT_EQ(0x04040404u, writer_->final_bytes_of_last_packet());
15017
14960
  // Only the first packet in the coalesced packet has been processed,
15018
14961
  // verify SHLO is bundled with INITIAL ACK.
15019
14962
  EXPECT_EQ(1u, writer_->ack_frames().size());
@@ -15024,16 +14967,12 @@ TEST_P(QuicConnectionTest, FailedToRetransmitShlo) {
15024
14967
  writer_->framer()->ProcessPacket(*packet);
15025
14968
  EXPECT_EQ(0u, writer_->ack_frames().size());
15026
14969
  EXPECT_EQ(1u, writer_->crypto_frames().size());
15027
- if (GetQuicReloadableFlag(quic_flush_after_coalesce_higher_space_packets)) {
15028
- // Process the coalesced 1-RTT packet.
15029
- ASSERT_TRUE(writer_->coalesced_packet() != nullptr);
15030
- packet = writer_->coalesced_packet()->Clone();
15031
- writer_->framer()->ProcessPacket(*packet);
15032
- EXPECT_EQ(0u, writer_->crypto_frames().size());
15033
- EXPECT_EQ(1u, writer_->stream_frames().size());
15034
- } else {
15035
- ASSERT_TRUE(writer_->coalesced_packet() == nullptr);
15036
- }
14970
+ // Process the coalesced 1-RTT packet.
14971
+ ASSERT_TRUE(writer_->coalesced_packet() != nullptr);
14972
+ packet = writer_->coalesced_packet()->Clone();
14973
+ writer_->framer()->ProcessPacket(*packet);
14974
+ EXPECT_EQ(0u, writer_->crypto_frames().size());
14975
+ EXPECT_EQ(1u, writer_->stream_frames().size());
15037
14976
 
15038
14977
  // Received INITIAL 3.
15039
14978
  EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(AnyNumber());
@@ -15272,22 +15211,12 @@ TEST_P(QuicConnectionTest, NoExtraPaddingInReserializedInitial) {
15272
15211
  // Server receives INITIAL 3, this will serialzie FS 7 (stream 4, stream 8),
15273
15212
  // which will trigger a flush of a coalesced packet consists of INITIAL 4,
15274
15213
  // HS 5 and FS 6 (stream 4).
15275
- if (GetQuicReloadableFlag(
15276
- quic_close_connection_if_fail_to_serialzie_coalesced_packet2)) {
15277
- // Expect no QUIC_BUG.
15278
- ProcessDataPacketAtLevel(3, !kHasStopWaiting, ENCRYPTION_INITIAL);
15279
- EXPECT_EQ(
15280
- debug_visitor_sent_count,
15281
- connection_.sent_packet_manager().GetLargestSentPacket().ToUint64());
15282
- } else {
15283
- // Expect QUIC_BUG due to extra padding.
15284
- EXPECT_QUIC_BUG(
15285
- { ProcessDataPacketAtLevel(3, !kHasStopWaiting, ENCRYPTION_INITIAL); },
15286
- "Reserialize initial packet in coalescer has unexpected size");
15287
- EXPECT_EQ(
15288
- debug_visitor_sent_count + 1,
15289
- connection_.sent_packet_manager().GetLargestSentPacket().ToUint64());
15290
- }
15214
+
15215
+ // Expect no QUIC_BUG.
15216
+ ProcessDataPacketAtLevel(3, !kHasStopWaiting, ENCRYPTION_INITIAL);
15217
+ EXPECT_EQ(
15218
+ debug_visitor_sent_count,
15219
+ connection_.sent_packet_manager().GetLargestSentPacket().ToUint64());
15291
15220
 
15292
15221
  // The error only happens if after serializing the second 1RTT packet(pkt #7),
15293
15222
  // the pending padding bytes is non zero.
@@ -15339,27 +15268,15 @@ TEST_P(QuicConnectionTest, ReportedAckDelayIncludesQueuingDelay) {
15339
15268
 
15340
15269
  connection_.GetProcessUndecryptablePacketsAlarm()->Fire();
15341
15270
  ASSERT_TRUE(connection_.HasPendingAcks());
15342
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
15343
- EXPECT_EQ(packet_receipt_time + DefaultDelayedAckTime(),
15344
- connection_.GetAckAlarm()->deadline());
15345
- clock_.AdvanceTime(packet_receipt_time + DefaultDelayedAckTime() -
15346
- clock_.Now());
15347
- } else {
15348
- EXPECT_EQ(clock_.Now() + DefaultDelayedAckTime(),
15349
- connection_.GetAckAlarm()->deadline());
15350
- clock_.AdvanceTime(DefaultDelayedAckTime());
15351
- }
15271
+ EXPECT_EQ(packet_receipt_time + DefaultDelayedAckTime(),
15272
+ connection_.GetAckAlarm()->deadline());
15273
+ clock_.AdvanceTime(packet_receipt_time + DefaultDelayedAckTime() -
15274
+ clock_.Now());
15352
15275
  // Fire ACK alarm.
15353
15276
  connection_.GetAckAlarm()->Fire();
15354
15277
  ASSERT_EQ(1u, writer_->ack_frames().size());
15355
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
15356
- // Verify ACK delay time does not include queuing delay.
15357
- EXPECT_EQ(DefaultDelayedAckTime(), writer_->ack_frames()[0].ack_delay_time);
15358
- } else {
15359
- // Verify ACK delay time = queuing delay + ack delay
15360
- EXPECT_EQ(DefaultDelayedAckTime() + kQueuingDelay,
15361
- writer_->ack_frames()[0].ack_delay_time);
15362
- }
15278
+ // Verify ACK delay time does not include queuing delay.
15279
+ EXPECT_EQ(DefaultDelayedAckTime(), writer_->ack_frames()[0].ack_delay_time);
15363
15280
  }
15364
15281
 
15365
15282
  TEST_P(QuicConnectionTest, CoalesceOneRTTPacketWithInitialAndHandshakePackets) {
@@ -15424,10 +15341,6 @@ TEST_P(QuicConnectionTest, CoalesceOneRTTPacketWithInitialAndHandshakePackets) {
15424
15341
  auto packet = writer_->coalesced_packet()->Clone();
15425
15342
  writer_->framer()->ProcessPacket(*packet);
15426
15343
  EXPECT_EQ(1u, writer_->crypto_frames().size());
15427
- if (!GetQuicReloadableFlag(quic_flush_after_coalesce_higher_space_packets)) {
15428
- ASSERT_TRUE(writer_->coalesced_packet() == nullptr);
15429
- return;
15430
- }
15431
15344
  // Process 1-RTT packet.
15432
15345
  ASSERT_TRUE(writer_->coalesced_packet() != nullptr);
15433
15346
  packet = writer_->coalesced_packet()->Clone();
@@ -307,13 +307,6 @@ QUIC_EXPORT_PRIVATE QuicPacketNumber FirstSendingPacketNumber();
307
307
  QUIC_EXPORT_PRIVATE extern const char* const kEPIDGoogleFrontEnd;
308
308
  QUIC_EXPORT_PRIVATE extern const char* const kEPIDGoogleFrontEnd0;
309
309
 
310
- // HTTP/3 Datagrams.
311
- enum : QuicDatagramContextId {
312
- kFirstDatagramContextIdClient = 0,
313
- kFirstDatagramContextIdServer = 1,
314
- kDatagramContextIdIncrement = 2,
315
- };
316
-
317
310
  enum : uint64_t {
318
311
  kHttpDatagramStreamIdDivisor = 4,
319
312
  };
@@ -17,6 +17,7 @@
17
17
  #include "quiche/quic/core/quic_utils.h"
18
18
  #include "quiche/quic/platform/api/quic_bug_tracker.h"
19
19
  #include "quiche/quic/platform/api/quic_flag_utils.h"
20
+ #include "quiche/quic/platform/api/quic_flags.h"
20
21
 
21
22
  namespace quic {
22
23
 
@@ -81,10 +82,17 @@ void QuicControlFrameManager::WriteOrBufferWindowUpdate(
81
82
  QuicWindowUpdateFrame(++last_control_frame_id_, id, byte_offset)));
82
83
  }
83
84
 
84
- void QuicControlFrameManager::WriteOrBufferBlocked(QuicStreamId id) {
85
+ void QuicControlFrameManager::WriteOrBufferBlocked(
86
+ QuicStreamId id, QuicStreamOffset byte_offset) {
85
87
  QUIC_DVLOG(1) << "Writing BLOCKED_FRAME";
86
- WriteOrBufferQuicFrame(
87
- QuicFrame(QuicBlockedFrame(++last_control_frame_id_, id)));
88
+ if (GetQuicReloadableFlag(quic_include_offset_in_blocked_frames)) {
89
+ QUIC_RELOADABLE_FLAG_COUNT(quic_include_offset_in_blocked_frames);
90
+ WriteOrBufferQuicFrame(
91
+ QuicFrame(QuicBlockedFrame(++last_control_frame_id_, id, byte_offset)));
92
+ } else {
93
+ WriteOrBufferQuicFrame(
94
+ QuicFrame(QuicBlockedFrame(++last_control_frame_id_, id, 0)));
95
+ }
88
96
  }
89
97
 
90
98
  void QuicControlFrameManager::WriteOrBufferStreamsBlocked(QuicStreamCount count,
@@ -69,7 +69,7 @@ class QUIC_EXPORT_PRIVATE QuicControlFrameManager {
69
69
 
70
70
  // Tries to send a BLOCKED_FRAME. Buffers the frame if it cannot be sent
71
71
  // immediately.
72
- void WriteOrBufferBlocked(QuicStreamId id);
72
+ void WriteOrBufferBlocked(QuicStreamId id, QuicStreamOffset byte_offset);
73
73
 
74
74
  // Tries to send a STREAMS_BLOCKED Frame. Buffers the frame if it cannot be
75
75
  // sent immediately.
@@ -72,7 +72,7 @@ class QuicControlFrameManagerTest : public QuicTest {
72
72
  manager_->WriteOrBufferGoAway(QUIC_PEER_GOING_AWAY, kTestStreamId,
73
73
  "Going away.");
74
74
  manager_->WriteOrBufferWindowUpdate(kTestStreamId, 100);
75
- manager_->WriteOrBufferBlocked(kTestStreamId);
75
+ manager_->WriteOrBufferBlocked(kTestStreamId, 0);
76
76
  manager_->WriteOrBufferStopSending(
77
77
  QuicResetStreamError::FromInternal(kTestStopSendingCode),
78
78
  kTestStreamId);
@@ -93,7 +93,7 @@ class QuicControlFrameManagerTest : public QuicTest {
93
93
  QuicGoAwayFrame goaway_ = {2, QUIC_PEER_GOING_AWAY, kTestStreamId,
94
94
  "Going away."};
95
95
  QuicWindowUpdateFrame window_update_ = {3, kTestStreamId, 100};
96
- QuicBlockedFrame blocked_ = {4, kTestStreamId};
96
+ QuicBlockedFrame blocked_ = {4, kTestStreamId, 0};
97
97
  QuicStopSendingFrame stop_sending_ = {5, kTestStreamId, kTestStopSendingCode};
98
98
  MockQuicConnectionHelper helper_;
99
99
  MockAlarmFactory alarm_factory_;