@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
@@ -8,7 +8,7 @@
8
8
 
9
9
  #include "quiche/quic/platform/api/quic_test.h"
10
10
 
11
- namespace quic {
11
+ namespace quic::test {
12
12
 
13
13
  namespace {
14
14
 
@@ -121,4 +121,4 @@ TEST_F(QuicServerIdTest, Equals) {
121
121
 
122
122
  } // namespace
123
123
 
124
- } // namespace quic
124
+ } // namespace quic::test
@@ -543,7 +543,7 @@ void QuicSession::OnBlockedFrame(const QuicBlockedFrame& frame) {
543
543
  // streams: if we have a large window then maybe something
544
544
  // had gone wrong with the flow control accounting.
545
545
  QUIC_DLOG(INFO) << ENDPOINT << "Received BLOCKED frame with stream id: "
546
- << frame.stream_id;
546
+ << frame.stream_id << ", offset: " << frame.offset;
547
547
  }
548
548
 
549
549
  bool QuicSession::CheckStreamNotBusyLooping(QuicStream* stream,
@@ -939,8 +939,8 @@ void QuicSession::SendGoAway(QuicErrorCode error_code,
939
939
  reason);
940
940
  }
941
941
 
942
- void QuicSession::SendBlocked(QuicStreamId id) {
943
- control_frame_manager_.WriteOrBufferBlocked(id);
942
+ void QuicSession::SendBlocked(QuicStreamId id, QuicStreamOffset byte_offset) {
943
+ control_frame_manager_.WriteOrBufferBlocked(id, byte_offset);
944
944
  }
945
945
 
946
946
  void QuicSession::SendWindowUpdate(QuicStreamId id,
@@ -1558,7 +1558,7 @@ bool QuicSession::OnNewDecryptionKeyAvailable(
1558
1558
  bool set_alternative_decrypter, bool latch_once_used) {
1559
1559
  if (connection_->version().handshake_protocol == PROTOCOL_TLS1_3 &&
1560
1560
  !connection()->framer().HasEncrypterOfEncryptionLevel(
1561
- QuicUtils::GetEncryptionLevel(
1561
+ QuicUtils::GetEncryptionLevelToSendAckofSpace(
1562
1562
  QuicUtils::GetPacketNumberSpace(level)))) {
1563
1563
  // This should never happen because connection should never decrypt a packet
1564
1564
  // while an ACK for it cannot be encrypted.
@@ -266,7 +266,7 @@ class QUIC_EXPORT_PRIVATE QuicSession
266
266
  virtual void SendGoAway(QuicErrorCode error_code, const std::string& reason);
267
267
 
268
268
  // Sends a BLOCKED frame.
269
- virtual void SendBlocked(QuicStreamId id);
269
+ virtual void SendBlocked(QuicStreamId id, QuicStreamOffset byte_offset);
270
270
 
271
271
  // Sends a WINDOW_UPDATE frame.
272
272
  virtual void SendWindowUpdate(QuicStreamId id, QuicStreamOffset byte_offset);
@@ -38,6 +38,7 @@
38
38
  #include "quiche/quic/test_tools/quic_stream_peer.h"
39
39
  #include "quiche/quic/test_tools/quic_stream_send_buffer_peer.h"
40
40
  #include "quiche/quic/test_tools/quic_test_utils.h"
41
+ #include "quiche/common/platform/api/quiche_logging.h"
41
42
  #include "quiche/common/quiche_mem_slice_storage.h"
42
43
 
43
44
  using spdy::kV3HighestPriority;
@@ -186,6 +187,21 @@ class TestCryptoStream : public QuicCryptoStream, public QuicCryptoHandshaker {
186
187
  return level != ENCRYPTION_ZERO_RTT;
187
188
  }
188
189
 
190
+ EncryptionLevel GetEncryptionLevelToSendCryptoDataOfSpace(
191
+ PacketNumberSpace space) const override {
192
+ switch (space) {
193
+ case INITIAL_DATA:
194
+ return ENCRYPTION_INITIAL;
195
+ case HANDSHAKE_DATA:
196
+ return ENCRYPTION_HANDSHAKE;
197
+ case APPLICATION_DATA:
198
+ return ENCRYPTION_FORWARD_SECURE;
199
+ default:
200
+ QUICHE_DCHECK(false);
201
+ return NUM_ENCRYPTION_LEVELS;
202
+ }
203
+ }
204
+
189
205
  private:
190
206
  using QuicCryptoStream::session;
191
207
 
@@ -2959,7 +2975,11 @@ TEST_P(QuicSessionTestServer, WriteBufferedCryptoFrames) {
2959
2975
 
2960
2976
  EXPECT_CALL(*connection_, SendCryptoData(ENCRYPTION_INITIAL, 350, 1000))
2961
2977
  .WillOnce(Return(350));
2962
- EXPECT_CALL(*connection_, SendCryptoData(ENCRYPTION_ZERO_RTT, 1350, 0))
2978
+ EXPECT_CALL(
2979
+ *connection_,
2980
+ SendCryptoData(crypto_stream->GetEncryptionLevelToSendCryptoDataOfSpace(
2981
+ QuicUtils::GetPacketNumberSpace(ENCRYPTION_ZERO_RTT)),
2982
+ 1350, 0))
2963
2983
  .WillOnce(Return(1350));
2964
2984
  session_.OnCanWrite();
2965
2985
  EXPECT_FALSE(session_.HasPendingHandshake());
@@ -150,7 +150,7 @@ void PendingStream::AddBytesConsumed(QuicByteCount bytes) {
150
150
  void PendingStream::ResetWithError(QuicResetStreamError /*error*/) {
151
151
  // Currently PendingStream is only read-unidirectional. It shouldn't send
152
152
  // Reset.
153
- QUIC_NOTREACHED();
153
+ QUICHE_NOTREACHED();
154
154
  }
155
155
 
156
156
  void PendingStream::OnUnrecoverableError(QuicErrorCode error,
@@ -741,15 +741,12 @@ void QuicStream::MaybeSendBlocked() {
741
741
  << ENDPOINT << "MaybeSendBlocked called on stream without flow control";
742
742
  return;
743
743
  }
744
- if (flow_controller_->ShouldSendBlocked()) {
745
- session_->SendBlocked(id_);
746
- }
744
+ flow_controller_->MaybeSendBlocked();
747
745
  if (!stream_contributes_to_connection_flow_control_) {
748
746
  return;
749
747
  }
750
- if (connection_flow_controller_->ShouldSendBlocked()) {
751
- session_->SendBlocked(QuicUtils::GetInvalidStreamId(transport_version()));
752
- }
748
+ connection_flow_controller_->MaybeSendBlocked();
749
+
753
750
  // If the stream is blocked by connection-level flow control but not by
754
751
  // stream-level flow control, add the stream to the write blocked list so that
755
752
  // the stream will be given a chance to write when a connection-level
@@ -1510,8 +1510,7 @@ TEST_P(QuicStreamTest, MarkConnectionLevelWriteBlockedOnWindowUpdateFrame) {
1510
1510
 
1511
1511
  EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _))
1512
1512
  .WillRepeatedly(Invoke(session_.get(), &MockQuicSession::ConsumeData));
1513
- EXPECT_CALL(*session_, WriteControlFrame(_, _))
1514
- .WillOnce(Invoke(&ClearControlFrameWithTransmissionType));
1513
+ EXPECT_CALL(*session_, SendBlocked(_, _)).Times(1);
1515
1514
  std::string data(1024, '.');
1516
1515
  stream->WriteOrBufferData(data, false, nullptr);
1517
1516
  EXPECT_FALSE(HasWriteBlockedStreams());
@@ -1544,8 +1543,7 @@ TEST_P(QuicStreamTest,
1544
1543
  std::string data(100, '.');
1545
1544
  EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _))
1546
1545
  .WillRepeatedly(Invoke(session_.get(), &MockQuicSession::ConsumeData));
1547
- EXPECT_CALL(*session_, WriteControlFrame(_, _))
1548
- .WillOnce(Invoke(&ClearControlFrameWithTransmissionType));
1546
+ EXPECT_CALL(*session_, SendBlocked(_, _)).Times(1);
1549
1547
  stream->WriteOrBufferData(data, false, nullptr);
1550
1548
  EXPECT_FALSE(HasWriteBlockedStreams());
1551
1549
 
@@ -11,7 +11,7 @@
11
11
  #include "quiche/quic/test_tools/simulator/simulator.h"
12
12
  #include "quiche/quic/test_tools/simulator/switch.h"
13
13
 
14
- namespace quic {
14
+ namespace quic::test {
15
15
  namespace {
16
16
 
17
17
  const QuicByteCount kTransferSize = 1000 * kMaxOutgoingPacketSize;
@@ -181,4 +181,4 @@ TEST_F(QuicTraceVisitorTest, EncryptionLevels) {
181
181
  }
182
182
 
183
183
  } // namespace
184
- } // namespace quic
184
+ } // namespace quic::test
@@ -28,13 +28,6 @@ using QuicPacketLength = uint16_t;
28
28
  using QuicControlFrameId = uint32_t;
29
29
  using QuicMessageId = uint32_t;
30
30
 
31
- // TODO(b/181256914) replace QuicDatagramStreamId with QuicStreamId once we
32
- // remove support for draft-ietf-masque-h3-datagram-00 in favor of later drafts.
33
- using QuicDatagramStreamId = uint64_t;
34
- using QuicDatagramContextId = uint64_t;
35
- // Note that for draft-ietf-masque-h3-datagram-00, we represent the flow ID as a
36
- // QuicDatagramStreamId.
37
-
38
31
  // IMPORTANT: IETF QUIC defines stream IDs and stream counts as being unsigned
39
32
  // 62-bit numbers. However, we have decided to only support up to 2^32-1 streams
40
33
  // in order to reduce the size of data structures such as QuicStreamFrame
@@ -836,6 +829,8 @@ QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
836
829
 
837
830
  QUIC_EXPORT_PRIVATE std::string KeyUpdateReasonString(KeyUpdateReason reason);
838
831
 
832
+ using QuicSignatureAlgorithmVector = absl::InlinedVector<uint16_t, 8>;
833
+
839
834
  // QuicSSLConfig contains configurations to be applied on a SSL object, which
840
835
  // overrides the configurations in SSL_CTX.
841
836
  struct QUIC_NO_EXPORT QuicSSLConfig {
@@ -846,7 +841,7 @@ struct QUIC_NO_EXPORT QuicSSLConfig {
846
841
  absl::optional<bool> disable_ticket_support;
847
842
  // If set, used to configure the SSL object with
848
843
  // SSL_set_signing_algorithm_prefs.
849
- absl::optional<absl::InlinedVector<uint16_t, 8>> signing_algorithm_prefs;
844
+ absl::optional<QuicSignatureAlgorithmVector> signing_algorithm_prefs;
850
845
  // Client certificate mode for mTLS support. Only used at server side.
851
846
  ClientCertMode client_cert_mode = ClientCertMode::kNone;
852
847
  };
@@ -9,6 +9,7 @@
9
9
  #include <sys/socket.h>
10
10
  #include <sys/types.h>
11
11
 
12
+ #include "absl/base/optimization.h"
12
13
  #include "quiche/quic/core/quic_udp_socket.h"
13
14
  #include "quiche/quic/platform/api/quic_bug_tracker.h"
14
15
  #include "quiche/quic/platform/api/quic_udp_socket_platform_api.h"
@@ -413,13 +414,13 @@ void QuicUdpSocketApi::ReadPacket(QuicUdpSocketFd fd,
413
414
  return;
414
415
  }
415
416
 
416
- if (QUIC_PREDICT_FALSE(hdr.msg_flags & MSG_CTRUNC)) {
417
+ if (ABSL_PREDICT_FALSE(hdr.msg_flags & MSG_CTRUNC)) {
417
418
  QUIC_BUG(quic_bug_10751_3)
418
419
  << "Control buffer too small. size:" << control_buffer.buffer_len;
419
420
  return;
420
421
  }
421
422
 
422
- if (QUIC_PREDICT_FALSE(hdr.msg_flags & MSG_TRUNC) ||
423
+ if (ABSL_PREDICT_FALSE(hdr.msg_flags & MSG_TRUNC) ||
423
424
  // Normally "bytes_read > packet_buffer.buffer_len" implies the MSG_TRUNC
424
425
  // bit is set, but it is not the case if tested with config=android_arm64.
425
426
  static_cast<size_t>(bytes_read) > packet_buffer.buffer_len) {
@@ -502,14 +503,14 @@ size_t QuicUdpSocketApi::ReadMultiplePackets(QuicUdpSocketFd fd,
502
503
  }
503
504
 
504
505
  msghdr& hdr = hdrs[i].msg_hdr;
505
- if (QUIC_PREDICT_FALSE(hdr.msg_flags & MSG_CTRUNC)) {
506
+ if (ABSL_PREDICT_FALSE(hdr.msg_flags & MSG_CTRUNC)) {
506
507
  QUIC_BUG(quic_bug_10751_4) << "Control buffer too small. size:"
507
508
  << (*results)[i].control_buffer.buffer_len
508
509
  << ", need:" << hdr.msg_controllen;
509
510
  continue;
510
511
  }
511
512
 
512
- if (QUIC_PREDICT_FALSE(hdr.msg_flags & MSG_TRUNC)) {
513
+ if (ABSL_PREDICT_FALSE(hdr.msg_flags & MSG_TRUNC)) {
513
514
  QUIC_LOG_FIRST_N(WARNING, 100)
514
515
  << "Received truncated QUIC packet: buffer size:"
515
516
  << (*results)[i].packet_buffer.buffer_len
@@ -551,7 +551,7 @@ TEST_P(QuicUnackedPacketMapTest, CannotAggregateAckedControlFrames) {
551
551
  QuicWindowUpdateFrame window_update(1, 5, 100);
552
552
  QuicStreamFrame stream_frame1(3, false, 0, 100);
553
553
  QuicStreamFrame stream_frame2(3, false, 100, 100);
554
- QuicBlockedFrame blocked(2, 5);
554
+ QuicBlockedFrame blocked(2, 5, 0);
555
555
  QuicGoAwayFrame go_away(3, QUIC_PEER_GOING_AWAY, 5, "Going away.");
556
556
 
557
557
  QuicTransmissionInfo info1;
@@ -595,7 +595,7 @@ PacketNumberSpace QuicUtils::GetPacketNumberSpace(
595
595
  }
596
596
 
597
597
  // static
598
- EncryptionLevel QuicUtils::GetEncryptionLevel(
598
+ EncryptionLevel QuicUtils::GetEncryptionLevelToSendAckofSpace(
599
599
  PacketNumberSpace packet_number_space) {
600
600
  switch (packet_number_space) {
601
601
  case INITIAL_DATA:
@@ -209,8 +209,8 @@ class QUIC_EXPORT_PRIVATE QuicUtils {
209
209
  static PacketNumberSpace GetPacketNumberSpace(
210
210
  EncryptionLevel encryption_level);
211
211
 
212
- // Determines encryption level to send packets in |packet_number_space|.
213
- static EncryptionLevel GetEncryptionLevel(
212
+ // Determines encryption level to send ACK in |packet_number_space|.
213
+ static EncryptionLevel GetEncryptionLevelToSendAckofSpace(
214
214
  PacketNumberSpace packet_number_space);
215
215
 
216
216
  // Get the maximum value for a V99/IETF QUIC stream count. If a count
@@ -8,7 +8,6 @@
8
8
  #include "quiche/quic/platform/api/quic_expect_bug.h"
9
9
  #include "quiche/quic/platform/api/quic_flags.h"
10
10
  #include "quiche/quic/platform/api/quic_logging.h"
11
- #include "quiche/quic/platform/api/quic_mock_log.h"
12
11
  #include "quiche/quic/platform/api/quic_test.h"
13
12
 
14
13
  namespace quic {
@@ -361,6 +361,19 @@ bool TlsClientHandshaker::IsCryptoFrameExpectedForEncryptionLevel(
361
361
  return level != ENCRYPTION_ZERO_RTT;
362
362
  }
363
363
 
364
+ EncryptionLevel TlsClientHandshaker::GetEncryptionLevelToSendCryptoDataOfSpace(
365
+ PacketNumberSpace space) const {
366
+ switch (space) {
367
+ case INITIAL_DATA:
368
+ return ENCRYPTION_INITIAL;
369
+ case HANDSHAKE_DATA:
370
+ return ENCRYPTION_HANDSHAKE;
371
+ default:
372
+ QUICHE_DCHECK(false);
373
+ return NUM_ENCRYPTION_LEVELS;
374
+ }
375
+ }
376
+
364
377
  bool TlsClientHandshaker::one_rtt_keys_available() const {
365
378
  return state_ >= HANDSHAKE_COMPLETE;
366
379
  }
@@ -56,6 +56,8 @@ class QUIC_EXPORT_PRIVATE TlsClientHandshaker
56
56
  bool encryption_established() const override;
57
57
  bool IsCryptoFrameExpectedForEncryptionLevel(
58
58
  EncryptionLevel level) const override;
59
+ EncryptionLevel GetEncryptionLevelToSendCryptoDataOfSpace(
60
+ PacketNumberSpace space) const override;
59
61
  bool one_rtt_keys_available() const override;
60
62
  const QuicCryptoNegotiatedParameters& crypto_negotiated_params()
61
63
  const override;
@@ -742,9 +742,8 @@ ssl_ticket_aead_result_t TlsServerHandshaker::SessionTicketOpen(
742
742
  }
743
743
 
744
744
  if (!ticket_decryption_callback_) {
745
- ticket_decryption_callback_ = new DecryptCallback(this);
746
- proof_source_->GetTicketCrypter()->Decrypt(
747
- in, std::unique_ptr<DecryptCallback>(ticket_decryption_callback_));
745
+ ticket_decryption_callback_ = std::make_shared<DecryptCallback>(this);
746
+ proof_source_->GetTicketCrypter()->Decrypt(in, ticket_decryption_callback_);
748
747
 
749
748
  // Decrypt can run the callback synchronously. In that case, the callback
750
749
  // will clear the ticket_decryption_callback_ pointer, and instead of
@@ -1130,4 +1129,19 @@ bool TlsServerHandshaker::IsCryptoFrameExpectedForEncryptionLevel(
1130
1129
  return level != ENCRYPTION_ZERO_RTT;
1131
1130
  }
1132
1131
 
1132
+ EncryptionLevel TlsServerHandshaker::GetEncryptionLevelToSendCryptoDataOfSpace(
1133
+ PacketNumberSpace space) const {
1134
+ switch (space) {
1135
+ case INITIAL_DATA:
1136
+ return ENCRYPTION_INITIAL;
1137
+ case HANDSHAKE_DATA:
1138
+ return ENCRYPTION_HANDSHAKE;
1139
+ case APPLICATION_DATA:
1140
+ return ENCRYPTION_FORWARD_SECURE;
1141
+ default:
1142
+ QUICHE_DCHECK(false);
1143
+ return NUM_ENCRYPTION_LEVELS;
1144
+ }
1145
+ }
1146
+
1133
1147
  } // namespace quic
@@ -73,6 +73,8 @@ class QUIC_EXPORT_PRIVATE TlsServerHandshaker
73
73
  SSL* GetSsl() const override;
74
74
  bool IsCryptoFrameExpectedForEncryptionLevel(
75
75
  EncryptionLevel level) const override;
76
+ EncryptionLevel GetEncryptionLevelToSendCryptoDataOfSpace(
77
+ PacketNumberSpace space) const override;
76
78
 
77
79
  // From QuicCryptoServerStreamBase and TlsHandshaker
78
80
  ssl_early_data_reason_t EarlyDataReason() const override;
@@ -323,7 +325,7 @@ class QUIC_EXPORT_PRIVATE TlsServerHandshaker
323
325
  // |ticket_decryption_callback_| points to the non-owned callback that was
324
326
  // passed to ProofSource::TicketCrypter::Decrypt but hasn't finished running
325
327
  // yet.
326
- DecryptCallback* ticket_decryption_callback_ = nullptr;
328
+ std::shared_ptr<DecryptCallback> ticket_decryption_callback_;
327
329
  // |decrypted_session_ticket_| contains the decrypted session ticket after the
328
330
  // callback has run but before it is passed to BoringSSL.
329
331
  std::vector<uint8_t> decrypted_session_ticket_;
@@ -33,6 +33,20 @@ const QuicTime::Delta kMinRttMs = QuicTime::Delta::FromMilliseconds(40);
33
33
  const QuicTime::Delta kDelayedAckTime =
34
34
  QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
35
35
 
36
+ EncryptionLevel GetEncryptionLevel(PacketNumberSpace packet_number_space) {
37
+ switch (packet_number_space) {
38
+ case INITIAL_DATA:
39
+ return ENCRYPTION_INITIAL;
40
+ case HANDSHAKE_DATA:
41
+ return ENCRYPTION_HANDSHAKE;
42
+ case APPLICATION_DATA:
43
+ return ENCRYPTION_FORWARD_SECURE;
44
+ default:
45
+ QUICHE_DCHECK(false);
46
+ return NUM_ENCRYPTION_LEVELS;
47
+ }
48
+ }
49
+
36
50
  class UberReceivedPacketManagerTest : public QuicTest {
37
51
  protected:
38
52
  UberReceivedPacketManagerTest() {
@@ -108,7 +122,7 @@ class UberReceivedPacketManagerTest : public QuicTest {
108
122
  continue;
109
123
  }
110
124
  manager_->ResetAckStates(
111
- QuicUtils::GetEncryptionLevel(static_cast<PacketNumberSpace>(i)));
125
+ GetEncryptionLevel(static_cast<PacketNumberSpace>(i)));
112
126
  }
113
127
  }
114
128
 
@@ -544,15 +558,9 @@ TEST_F(UberReceivedPacketManagerTest,
544
558
  CheckAckTimeout(clock_.ApproximateNow());
545
559
 
546
560
  EXPECT_TRUE(HasPendingAck());
547
- if (GetQuicReloadableFlag(quic_update_ack_timeout_on_receipt_time)) {
548
- // Verify ACK delay is based on packet receipt time.
549
- CheckAckTimeout(clock_.ApproximateNow() -
550
- QuicTime::Delta::FromMilliseconds(11) + kDelayedAckTime);
551
- } else {
552
- // Delayed ack is scheduled.
553
- CheckAckTimeout(clock_.ApproximateNow() -
554
- QuicTime::Delta::FromMilliseconds(1) + kDelayedAckTime);
555
- }
561
+ // Verify ACK delay is based on packet receipt time.
562
+ CheckAckTimeout(clock_.ApproximateNow() -
563
+ QuicTime::Delta::FromMilliseconds(11) + kDelayedAckTime);
556
564
  }
557
565
 
558
566
  } // namespace
@@ -54,14 +54,16 @@ int RunMasqueClient(int argc, char* argv[]) {
54
54
  }
55
55
 
56
56
  const bool disable_certificate_verification =
57
- GetQuicFlag(FLAGS_disable_certificate_verification);
57
+ quiche::GetQuicheCommandLineFlag(FLAGS_disable_certificate_verification);
58
58
  QuicEpollServer epoll_server;
59
59
 
60
60
  std::string uri_template = urls[0];
61
61
  if (!absl::StrContains(uri_template, '/')) {
62
- // Allow passing in authority instead of URI template.
62
+ // If an authority is passed in instead of a URI template, use the default
63
+ // URI template.
63
64
  uri_template =
64
- absl::StrCat("https://", uri_template, "/{target_host}/{target_port}/");
65
+ absl::StrCat("https://", uri_template,
66
+ "/.well-known/masque/udp/{target_host}/{target_port}/");
65
67
  }
66
68
  url::Parsed parsed_uri_template;
67
69
  url::ParseStandardURL(uri_template.c_str(), uri_template.length(),
@@ -82,7 +84,7 @@ int RunMasqueClient(int argc, char* argv[]) {
82
84
  proof_verifier = CreateDefaultProofVerifier(host);
83
85
  }
84
86
  MasqueMode masque_mode = MasqueMode::kOpen;
85
- std::string mode_string = GetQuicFlag(FLAGS_masque_mode);
87
+ std::string mode_string = quiche::GetQuicheCommandLineFlag(FLAGS_masque_mode);
86
88
  if (!mode_string.empty() && mode_string != "open") {
87
89
  std::cerr << "Invalid masque_mode \"" << mode_string << "\"" << std::endl;
88
90
  return 1;
@@ -4,12 +4,14 @@
4
4
 
5
5
  #include "quiche/quic/masque/masque_client_session.h"
6
6
 
7
+ #include <cstring>
7
8
  #include <string>
8
9
 
9
10
  #include "absl/algorithm/container.h"
10
11
  #include "absl/container/flat_hash_map.h"
11
12
  #include "absl/container/flat_hash_set.h"
12
13
  #include "absl/strings/str_cat.h"
14
+ #include "absl/strings/string_view.h"
13
15
  #include "url/url_canon.h"
14
16
  #include "quiche/quic/core/http/spdy_utils.h"
15
17
  #include "quiche/quic/core/quic_data_reader.h"
@@ -122,10 +124,7 @@ MasqueClientSession::GetOrCreateConnectUdpClientState(
122
124
  headers[":scheme"] = scheme;
123
125
  headers[":authority"] = authority;
124
126
  headers[":path"] = canonicalized_path;
125
- headers["connect-udp-version"] = "6";
126
- if (http_datagram_support() == HttpDatagramSupport::kDraft00) {
127
- SpdyUtils::AddDatagramFlowIdHeader(&headers, stream->id());
128
- }
127
+ headers["connect-udp-version"] = "12";
129
128
  size_t bytes_sent =
130
129
  stream->SendRequest(std::move(headers), /*body=*/"", /*fin=*/false);
131
130
  if (bytes_sent == 0) {
@@ -148,8 +147,12 @@ void MasqueClientSession::SendPacket(
148
147
  return;
149
148
  }
150
149
 
150
+ std::string http_payload;
151
+ http_payload.resize(1 + packet.size());
152
+ http_payload[0] = 0;
153
+ memcpy(&http_payload[1], packet.data(), packet.size());
151
154
  MessageStatus message_status =
152
- SendHttp3Datagram(connect_udp->stream()->id(), packet);
155
+ SendHttp3Datagram(connect_udp->stream()->id(), http_payload);
153
156
 
154
157
  QUIC_DVLOG(1) << "Sent packet to " << target_server_address
155
158
  << " compressed with stream ID " << connect_udp->stream()->id()
@@ -271,8 +274,21 @@ MasqueClientSession::ConnectUdpClientState::operator=(
271
274
  void MasqueClientSession::ConnectUdpClientState::OnHttp3Datagram(
272
275
  QuicStreamId stream_id, absl::string_view payload) {
273
276
  QUICHE_DCHECK_EQ(stream_id, stream()->id());
274
- encapsulated_client_session_->ProcessPacket(payload, target_server_address_);
275
- QUIC_DVLOG(1) << "Sent " << payload.size()
277
+ QuicDataReader reader(payload);
278
+ uint64_t context_id;
279
+ if (!reader.ReadVarInt62(&context_id)) {
280
+ QUIC_DLOG(ERROR) << "Failed to read context ID";
281
+ return;
282
+ }
283
+ if (context_id != 0) {
284
+ QUIC_DLOG(ERROR) << "Ignoring HTTP Datagram with unexpected context ID "
285
+ << context_id;
286
+ return;
287
+ }
288
+ absl::string_view http_payload = reader.ReadRemainingPayload();
289
+ encapsulated_client_session_->ProcessPacket(http_payload,
290
+ target_server_address_);
291
+ QUIC_DVLOG(1) << "Sent " << http_payload.size()
276
292
  << " bytes to connection for stream ID " << stream_id;
277
293
  }
278
294
 
@@ -125,7 +125,7 @@ class QUIC_NO_EXPORT MasqueClientSession : public QuicSpdyClientSession {
125
125
  };
126
126
 
127
127
  HttpDatagramSupport LocalHttpDatagramSupport() override {
128
- return HttpDatagramSupport::kDraft00And04;
128
+ return HttpDatagramSupport::kDraft09;
129
129
  }
130
130
 
131
131
  const ConnectUdpClientState* GetOrCreateConnectUdpClientState(
@@ -88,6 +88,19 @@ void MasqueServerBackend::FetchResponseFromBackend(
88
88
  request_headers, request_body, request_handler);
89
89
  }
90
90
 
91
+ void MasqueServerBackend::HandleConnectHeaders(
92
+ const spdy::Http2HeaderBlock& request_headers,
93
+ RequestHandler* request_handler) {
94
+ if (MaybeHandleMasqueRequest(request_headers, request_handler)) {
95
+ // Request was handled as a MASQUE request.
96
+ return;
97
+ }
98
+ QUIC_DLOG(INFO) << "Fetching non-MASQUE CONNECT response for "
99
+ << request_headers.DebugString();
100
+ QuicMemoryCacheBackend::HandleConnectHeaders(request_headers,
101
+ request_handler);
102
+ }
103
+
91
104
  void MasqueServerBackend::CloseBackendResponseStream(
92
105
  QuicSimpleServerBackend::RequestHandler* request_handler) {
93
106
  QUIC_DLOG(INFO) << "Closing response stream";
@@ -39,6 +39,8 @@ class QUIC_NO_EXPORT MasqueServerBackend : public QuicMemoryCacheBackend {
39
39
  const spdy::Http2HeaderBlock& request_headers,
40
40
  const std::string& request_body,
41
41
  QuicSimpleServerBackend::RequestHandler* request_handler) override;
42
+ void HandleConnectHeaders(const spdy::Http2HeaderBlock& request_headers,
43
+ RequestHandler* request_handler) override;
42
44
 
43
45
  void CloseBackendResponseStream(
44
46
  QuicSimpleServerBackend::RequestHandler* request_handler) override;
@@ -46,21 +46,22 @@ int main(int argc, char* argv[]) {
46
46
  }
47
47
 
48
48
  quic::MasqueMode masque_mode = quic::MasqueMode::kOpen;
49
- std::string mode_string = GetQuicFlag(FLAGS_masque_mode);
49
+ std::string mode_string = quiche::GetQuicheCommandLineFlag(FLAGS_masque_mode);
50
50
  if (!mode_string.empty() && mode_string != "open") {
51
51
  std::cerr << "Invalid masque_mode \"" << mode_string << "\"" << std::endl;
52
52
  return 1;
53
53
  }
54
54
 
55
55
  auto backend = std::make_unique<quic::MasqueServerBackend>(
56
- masque_mode, GetQuicFlag(FLAGS_server_authority),
57
- GetQuicFlag(FLAGS_cache_dir));
56
+ masque_mode, quiche::GetQuicheCommandLineFlag(FLAGS_server_authority),
57
+ quiche::GetQuicheCommandLineFlag(FLAGS_cache_dir));
58
58
 
59
59
  auto server =
60
60
  std::make_unique<quic::MasqueEpollServer>(masque_mode, backend.get());
61
61
 
62
62
  if (!server->CreateUDPSocketAndListen(quic::QuicSocketAddress(
63
- quic::QuicIpAddress::Any6(), GetQuicFlag(FLAGS_port)))) {
63
+ quic::QuicIpAddress::Any6(),
64
+ quiche::GetQuicheCommandLineFlag(FLAGS_port)))) {
64
65
  return 1;
65
66
  }
66
67