@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
@@ -174,32 +174,23 @@ std::unique_ptr<QuicBackendResponse> MasqueServerSession::HandleMasqueRequest(
174
174
  << "\"";
175
175
  return CreateBackendErrorResponse("400", "Bad protocol");
176
176
  }
177
- absl::optional<QuicDatagramStreamId> flow_id;
178
- if (http_datagram_support() == HttpDatagramSupport::kDraft00) {
179
- flow_id = SpdyUtils::ParseDatagramFlowIdHeader(request_headers);
180
- if (!flow_id.has_value()) {
181
- QUIC_DLOG(ERROR)
182
- << "MASQUE request with bad or missing DatagramFlowId header";
183
- return CreateBackendErrorResponse("400",
184
- "Bad or missing DatagramFlowId header");
185
- }
186
- }
187
177
  // Extract target host and port from path using default template.
188
178
  std::vector<absl::string_view> path_split = absl::StrSplit(path, '/');
189
- if (path_split.size() != 4 || !path_split[0].empty() ||
190
- path_split[1].empty() || path_split[2].empty() ||
191
- !path_split[3].empty()) {
179
+ if (path_split.size() != 7 || !path_split[0].empty() ||
180
+ path_split[1] != ".well-known" || path_split[2] != "masque" ||
181
+ path_split[3] != "udp" || path_split[4].empty() ||
182
+ path_split[5].empty() || !path_split[6].empty()) {
192
183
  QUIC_DLOG(ERROR) << "MASQUE request with bad path \"" << path << "\"";
193
184
  return CreateBackendErrorResponse("400", "Bad path");
194
185
  }
195
- absl::optional<std::string> host = quiche::AsciiUrlDecode(path_split[1]);
186
+ absl::optional<std::string> host = quiche::AsciiUrlDecode(path_split[4]);
196
187
  if (!host.has_value()) {
197
- QUIC_DLOG(ERROR) << "Failed to decode host \"" << path_split[1] << "\"";
188
+ QUIC_DLOG(ERROR) << "Failed to decode host \"" << path_split[4] << "\"";
198
189
  return CreateBackendErrorResponse("500", "Failed to decode host");
199
190
  }
200
- absl::optional<std::string> port = quiche::AsciiUrlDecode(path_split[2]);
191
+ absl::optional<std::string> port = quiche::AsciiUrlDecode(path_split[5]);
201
192
  if (!port.has_value()) {
202
- QUIC_DLOG(ERROR) << "Failed to decode port \"" << path_split[2] << "\"";
193
+ QUIC_DLOG(ERROR) << "Failed to decode port \"" << path_split[5] << "\"";
203
194
  return CreateBackendErrorResponse("500", "Failed to decode port");
204
195
  }
205
196
 
@@ -221,10 +212,8 @@ std::unique_ptr<QuicBackendResponse> MasqueServerSession::HandleMasqueRequest(
221
212
  QuicSocketAddress target_server_address(info_list->ai_addr,
222
213
  info_list->ai_addrlen);
223
214
  QUIC_DLOG(INFO) << "Got CONNECT_UDP request on stream ID "
224
- << request_handler->stream_id() << " flow_id="
225
- << (flow_id.has_value() ? absl::StrCat(*flow_id) : "none")
226
- << " target_server_address=\"" << target_server_address
227
- << "\"";
215
+ << request_handler->stream_id() << " target_server_address=\""
216
+ << target_server_address << "\"";
228
217
 
229
218
  FdWrapper fd_wrapper(target_server_address.host().AddressFamilyToInt());
230
219
  if (fd_wrapper.fd() == kQuicInvalidSocketFd) {
@@ -250,23 +239,11 @@ std::unique_ptr<QuicBackendResponse> MasqueServerSession::HandleMasqueRequest(
250
239
  << request_handler->stream_id();
251
240
  return CreateBackendErrorResponse("500", "Bad stream type");
252
241
  }
253
- if (flow_id.has_value()) {
254
- stream->RegisterHttp3DatagramFlowId(*flow_id);
255
- }
256
242
  connect_udp_server_states_.push_back(ConnectUdpServerState(
257
243
  stream, target_server_address, fd_wrapper.extract_fd(), this));
258
244
 
259
- if (http_datagram_support() == HttpDatagramSupport::kDraft00) {
260
- // TODO(b/181256914) remove this when we drop support for
261
- // draft-ietf-masque-h3-datagram-00 in favor of later drafts.
262
- stream->RegisterHttp3DatagramVisitor(&connect_udp_server_states_.back());
263
- }
264
-
265
245
  spdy::Http2HeaderBlock response_headers;
266
246
  response_headers[":status"] = "200";
267
- if (flow_id.has_value()) {
268
- SpdyUtils::AddDatagramFlowIdHeader(&response_headers, *flow_id);
269
- }
270
247
  auto response = std::make_unique<QuicBackendResponse>();
271
248
  response->set_response_type(QuicBackendResponse::INCOMPLETE_RESPONSE);
272
249
  response->set_headers(std::move(response_headers));
@@ -307,11 +284,12 @@ void MasqueServerSession::OnEvent(QuicUdpSocketFd fd, QuicEpollEvent* event) {
307
284
  << " server " << expected_target_server_address;
308
285
  QuicUdpSocketApi socket_api;
309
286
  BitMask64 packet_info_interested(QuicUdpPacketInfoBit::PEER_ADDRESS);
310
- char packet_buffer[kMaxIncomingPacketSize];
287
+ char packet_buffer[1 + kMaxIncomingPacketSize];
288
+ packet_buffer[0] = 0; // context ID.
311
289
  char control_buffer[kDefaultUdpPacketControlBufferSize];
312
290
  while (true) {
313
291
  QuicUdpSocketApi::ReadPacketResult read_result;
314
- read_result.packet_buffer = {packet_buffer, sizeof(packet_buffer)};
292
+ read_result.packet_buffer = {packet_buffer + 1, sizeof(packet_buffer) - 1};
315
293
  read_result.control_buffer = {control_buffer, sizeof(control_buffer)};
316
294
  socket_api.ReadPacket(fd, packet_info_interested, &read_result);
317
295
  if (!read_result.ok) {
@@ -340,9 +318,9 @@ void MasqueServerSession::OnEvent(QuicUdpSocketFd fd, QuicEpollEvent* event) {
340
318
  return;
341
319
  }
342
320
  // The packet is valid, send it to the client in a DATAGRAM frame.
343
- MessageStatus message_status = it->stream()->SendHttp3Datagram(
344
- absl::string_view(read_result.packet_buffer.buffer,
345
- read_result.packet_buffer.buffer_len));
321
+ MessageStatus message_status =
322
+ it->stream()->SendHttp3Datagram(absl::string_view(
323
+ packet_buffer, read_result.packet_buffer.buffer_len + 1));
346
324
  QUIC_DVLOG(1) << "Sent UDP packet from " << expected_target_server_address
347
325
  << " of length " << read_result.packet_buffer.buffer_len
348
326
  << " with stream ID " << it->stream()->id()
@@ -433,12 +411,24 @@ MasqueServerSession::ConnectUdpServerState::operator=(
433
411
  void MasqueServerSession::ConnectUdpServerState::OnHttp3Datagram(
434
412
  QuicStreamId stream_id, absl::string_view payload) {
435
413
  QUICHE_DCHECK_EQ(stream_id, stream()->id());
414
+ QuicDataReader reader(payload);
415
+ uint64_t context_id;
416
+ if (!reader.ReadVarInt62(&context_id)) {
417
+ QUIC_DLOG(ERROR) << "Failed to read context ID";
418
+ return;
419
+ }
420
+ if (context_id != 0) {
421
+ QUIC_DLOG(ERROR) << "Ignoring HTTP Datagram with unexpected context ID "
422
+ << context_id;
423
+ return;
424
+ }
425
+ absl::string_view http_payload = reader.ReadRemainingPayload();
436
426
  QuicUdpSocketApi socket_api;
437
427
  QuicUdpPacketInfo packet_info;
438
428
  packet_info.SetPeerAddress(target_server_address_);
439
429
  WriteResult write_result = socket_api.WritePacket(
440
- fd_, payload.data(), payload.length(), packet_info);
441
- QUIC_DVLOG(1) << "Wrote packet of length " << payload.length() << " to "
430
+ fd_, http_payload.data(), http_payload.length(), packet_info);
431
+ QUIC_DVLOG(1) << "Wrote packet of length " << http_payload.length() << " to "
442
432
  << target_server_address_ << " with result " << write_result;
443
433
  }
444
434
 
@@ -97,7 +97,7 @@ class QUIC_NO_EXPORT MasqueServerSession
97
97
  // From QuicSpdySession.
98
98
  bool OnSettingsFrame(const SettingsFrame& frame) override;
99
99
  HttpDatagramSupport LocalHttpDatagramSupport() override {
100
- return HttpDatagramSupport::kDraft00And04;
100
+ return HttpDatagramSupport::kDraft09;
101
101
  }
102
102
 
103
103
  MasqueServerBackend* masque_server_backend_; // Unowned.
@@ -5,17 +5,17 @@
5
5
  #ifndef QUICHE_QUIC_PLATFORM_API_QUIC_EXPORT_H_
6
6
  #define QUICHE_QUIC_PLATFORM_API_QUIC_EXPORT_H_
7
7
 
8
- #include "quiche_platform_impl/quiche_export_impl.h"
8
+ #include "quiche/common/platform/api/quiche_export.h"
9
9
 
10
10
  // QUIC_EXPORT is not meant to be used.
11
- #define QUIC_EXPORT QUICHE_EXPORT_IMPL
11
+ #define QUIC_EXPORT QUICHE_EXPORT
12
12
 
13
13
  // QUIC_EXPORT_PRIVATE is meant for QUIC functionality that is built in Chromium
14
14
  // as part of //net, and not fully contained in headers.
15
- #define QUIC_EXPORT_PRIVATE QUICHE_EXPORT_PRIVATE_IMPL
15
+ #define QUIC_EXPORT_PRIVATE QUICHE_EXPORT_PRIVATE
16
16
 
17
17
  // QUIC_NO_EXPORT is meant for QUIC functionality that is either fully defined
18
18
  // in a header, or is built in Chromium as part of tests or tools.
19
- #define QUIC_NO_EXPORT QUICHE_NO_EXPORT_IMPL
19
+ #define QUIC_NO_EXPORT QUICHE_NO_EXPORT
20
20
 
21
21
  #endif // QUICHE_QUIC_PLATFORM_API_QUIC_EXPORT_H_
@@ -8,7 +8,6 @@
8
8
  #include <string>
9
9
  #include <vector>
10
10
 
11
- #include "quiche_platform_impl/quic_flags_impl.h"
12
11
  #include "quiche/common/platform/api/quiche_flags.h"
13
12
 
14
13
  #define GetQuicReloadableFlag(flag) GetQuicheReloadableFlag(quic, flag)
@@ -22,12 +22,6 @@
22
22
  #define QUIC_LOG_EVERY_N_SEC QUICHE_LOG_EVERY_N_SEC
23
23
  #define QUIC_LOG_IF QUICHE_LOG_IF
24
24
 
25
- #define QUIC_PREDICT_FALSE QUICHE_PREDICT_FALSE
26
- #define QUIC_PREDICT_TRUE QUICHE_PREDICT_TRUE
27
-
28
- // This is a noop in release build.
29
- #define QUIC_NOTREACHED QUICHE_NOTREACHED
30
-
31
25
  #define QUIC_PLOG QUICHE_PLOG
32
26
 
33
27
  #define QUIC_DLOG_INFO_IS_ON QUICHE_DLOG_INFO_IS_ON
@@ -8,15 +8,16 @@
8
8
  #include "quiche/quic/platform/api/quic_logging.h"
9
9
  #include "quiche/common/platform/api/quiche_test.h"
10
10
 
11
- using QuicFlagSaver = QuicheFlagSaver;
11
+ namespace quic::test {
12
+
13
+ using QuicFlagSaver = quiche::test::QuicheFlagSaver;
12
14
 
13
15
  // Defines the base classes to be used in QUIC tests.
14
- using QuicTest = QuicheTest;
16
+ using QuicTest = quiche::test::QuicheTest;
15
17
  template <class T>
16
- using QuicTestWithParam = QuicheTestWithParam<T>;
18
+ using QuicTestWithParam = quiche::test::QuicheTestWithParam<T>;
17
19
 
18
- // Class which needs to be instantiated in tests which use threads.
19
- using ScopedEnvironmentForThreads = ScopedEnvironmentForThreadsImpl;
20
+ } // namespace quic::test
20
21
 
21
22
  #define QUIC_TEST_DISABLED_IN_CHROME(name) QUICHE_TEST_DISABLED_IN_CHROME(name)
22
23
 
@@ -12,7 +12,7 @@
12
12
  #include "quiche/quic/platform/api/quic_test.h"
13
13
  #include "quiche/quic/qbone/platform/mock_kernel.h"
14
14
 
15
- namespace quic {
15
+ namespace quic::test {
16
16
  namespace {
17
17
 
18
18
  using ::testing::_;
@@ -263,4 +263,4 @@ TEST_F(IcmpReachableTest, HandlesReadErrors) {
263
263
  }
264
264
 
265
265
  } // namespace
266
- } // namespace quic
266
+ } // namespace quic::test
@@ -36,6 +36,8 @@ class MockQboneTunnel : public QboneTunnelInterface {
36
36
  MOCK_METHOD(State, state, ());
37
37
 
38
38
  MOCK_METHOD(std::string, HealthString, ());
39
+
40
+ MOCK_METHOD(std::string, ServerRegionString, ());
39
41
  };
40
42
 
41
43
  } // namespace quic
@@ -61,6 +61,8 @@ class QboneTunnelInterface : public quic::QboneClientControlStream::Handler {
61
61
  virtual State state() = 0;
62
62
 
63
63
  virtual std::string HealthString() = 0;
64
+
65
+ virtual std::string ServerRegionString() = 0;
64
66
  };
65
67
 
66
68
  } // namespace quic
@@ -14,7 +14,7 @@
14
14
 
15
15
  ABSL_DECLARE_FLAG(bool, qbone_tun_device_replace_default_routing_rules);
16
16
 
17
- namespace quic {
17
+ namespace quic::test {
18
18
  namespace {
19
19
  using ::testing::Eq;
20
20
 
@@ -255,4 +255,4 @@ TEST_F(DisabledTunDeviceControllerTest, UpdateAddressIsNop) {
255
255
  }
256
256
 
257
257
  } // namespace
258
- } // namespace quic
258
+ } // namespace quic::test
@@ -9,7 +9,7 @@
9
9
  #include "quiche/quic/qbone/mock_qbone_client.h"
10
10
  #include "quiche/quic/qbone/platform/mock_kernel.h"
11
11
 
12
- namespace quic {
12
+ namespace quic::test {
13
13
  namespace {
14
14
 
15
15
  const size_t kMtu = 1000;
@@ -116,4 +116,4 @@ TEST_F(TunDevicePacketExchangerTest,
116
116
  }
117
117
 
118
118
  } // namespace
119
- } // namespace quic
119
+ } // namespace quic::test
@@ -11,7 +11,7 @@
11
11
  #include "quiche/quic/platform/api/quic_test.h"
12
12
  #include "quiche/quic/qbone/platform/mock_kernel.h"
13
13
 
14
- namespace quic {
14
+ namespace quic::test {
15
15
  namespace {
16
16
 
17
17
  using ::testing::_;
@@ -208,4 +208,4 @@ TEST_F(TunDeviceTest, FailToUp) {
208
208
  }
209
209
 
210
210
  } // namespace
211
- } // namespace quic
211
+ } // namespace quic::test
@@ -12,7 +12,7 @@
12
12
  #include "quiche/quic/qbone/platform/mock_kernel.h"
13
13
  #include "quiche/quic/qbone/qbone_constants.h"
14
14
 
15
- namespace quic {
15
+ namespace quic::test {
16
16
  namespace {
17
17
 
18
18
  using ::testing::_;
@@ -761,4 +761,4 @@ TEST_F(NetlinkTest, ChangeRouteReplace) {
761
761
  }
762
762
 
763
763
  } // namespace
764
- } // namespace quic
764
+ } // namespace quic::test
@@ -6,6 +6,7 @@
6
6
 
7
7
  #include <netinet/ip6.h>
8
8
 
9
+ #include "absl/base/optimization.h"
9
10
  #include "absl/strings/string_view.h"
10
11
  #include "quiche/quic/platform/api/quic_logging.h"
11
12
  #include "quiche/quic/qbone/platform/internet_checksum.h"
@@ -35,17 +36,17 @@ void CreateTcpResetPacket(absl::string_view original_packet,
35
36
  // By the time this method is called, original_packet should be fairly
36
37
  // strongly validated. However, it's better to be more paranoid than not, so
37
38
  // here are a bunch of very obvious checks.
38
- if (QUIC_PREDICT_FALSE(original_packet.size() < sizeof(ip6_hdr))) {
39
+ if (ABSL_PREDICT_FALSE(original_packet.size() < sizeof(ip6_hdr))) {
39
40
  return;
40
41
  }
41
42
  auto* ip6_header = reinterpret_cast<const ip6_hdr*>(original_packet.data());
42
- if (QUIC_PREDICT_FALSE(ip6_header->ip6_vfc >> 4 != 6)) {
43
+ if (ABSL_PREDICT_FALSE(ip6_header->ip6_vfc >> 4 != 6)) {
43
44
  return;
44
45
  }
45
- if (QUIC_PREDICT_FALSE(ip6_header->ip6_nxt != IPPROTO_TCP)) {
46
+ if (ABSL_PREDICT_FALSE(ip6_header->ip6_nxt != IPPROTO_TCP)) {
46
47
  return;
47
48
  }
48
- if (QUIC_PREDICT_FALSE(quiche::QuicheEndian::NetToHost16(
49
+ if (ABSL_PREDICT_FALSE(quiche::QuicheEndian::NetToHost16(
49
50
  ip6_header->ip6_plen) < sizeof(tcphdr))) {
50
51
  return;
51
52
  }
@@ -58,7 +58,8 @@ void QboneClientSession::Initialize() {
58
58
  QboneSessionBase::Initialize();
59
59
  static_cast<QuicCryptoClientStreamBase*>(GetMutableCryptoStream())
60
60
  ->CryptoConnect();
61
- if (!GetQuicFlag(FLAGS_qbone_client_defer_control_stream_creation)) {
61
+ if (!quiche::GetQuicheCommandLineFlag(
62
+ FLAGS_qbone_client_defer_control_stream_creation)) {
62
63
  CreateControlStream();
63
64
  }
64
65
  }
@@ -66,7 +67,8 @@ void QboneClientSession::Initialize() {
66
67
  void QboneClientSession::SetDefaultEncryptionLevel(
67
68
  quic::EncryptionLevel level) {
68
69
  QboneSessionBase::SetDefaultEncryptionLevel(level);
69
- if (GetQuicFlag(FLAGS_qbone_client_defer_control_stream_creation) &&
70
+ if (quiche::GetQuicheCommandLineFlag(
71
+ FLAGS_qbone_client_defer_control_stream_creation) &&
70
72
  level == quic::ENCRYPTION_FORWARD_SECURE) {
71
73
  CreateControlStream();
72
74
  }
@@ -6,6 +6,7 @@
6
6
 
7
7
  #include <cstring>
8
8
 
9
+ #include "absl/base/optimization.h"
9
10
  #include "absl/strings/string_view.h"
10
11
  #include "quiche/quic/platform/api/quic_bug_tracker.h"
11
12
  #include "quiche/quic/platform/api/quic_ip_address_family.h"
@@ -62,7 +63,7 @@ QbonePacketProcessor::Filter::FilterPacket(Direction direction,
62
63
 
63
64
  void QbonePacketProcessor::ProcessPacket(std::string* packet,
64
65
  Direction direction) {
65
- if (QUIC_PREDICT_FALSE(!IsValid())) {
66
+ if (ABSL_PREDICT_FALSE(!IsValid())) {
66
67
  QUIC_BUG(quic_bug_11024_1)
67
68
  << "QuicPacketProcessor is invoked in an invalid state.";
68
69
  stats_->OnPacketDroppedSilently(direction);
@@ -10,7 +10,7 @@
10
10
  #include "quiche/quic/platform/api/quic_test.h"
11
11
  #include "quiche/quic/qbone/qbone_packet_processor_test_tools.h"
12
12
 
13
- namespace quic {
13
+ namespace quic::test {
14
14
  namespace {
15
15
 
16
16
  using Direction = QbonePacketProcessor::Direction;
@@ -277,4 +277,4 @@ TEST_F(QbonePacketProcessorTest, FilterHelperFunctions) {
277
277
  }
278
278
 
279
279
  } // namespace
280
- } // namespace quic
280
+ } // namespace quic::test
@@ -79,7 +79,8 @@ QuicStream* QboneServerSession::CreateControlStreamFromPendingStream(
79
79
 
80
80
  void QboneServerSession::Initialize() {
81
81
  QboneSessionBase::Initialize();
82
- if (!GetQuicFlag(FLAGS_qbone_server_defer_control_stream_creation)) {
82
+ if (!quiche::GetQuicheCommandLineFlag(
83
+ FLAGS_qbone_server_defer_control_stream_creation)) {
83
84
  CreateControlStream();
84
85
  }
85
86
  }
@@ -87,7 +88,8 @@ void QboneServerSession::Initialize() {
87
88
  void QboneServerSession::SetDefaultEncryptionLevel(
88
89
  quic::EncryptionLevel level) {
89
90
  QboneSessionBase::SetDefaultEncryptionLevel(level);
90
- if (GetQuicFlag(FLAGS_qbone_server_defer_control_stream_creation) &&
91
+ if (quiche::GetQuicheCommandLineFlag(
92
+ FLAGS_qbone_server_defer_control_stream_creation) &&
91
93
  level == quic::ENCRYPTION_FORWARD_SECURE) {
92
94
  CreateControlStream();
93
95
  }
@@ -18,6 +18,7 @@
18
18
  #include "quiche/quic/qbone/platform/icmp_packet.h"
19
19
  #include "quiche/quic/qbone/qbone_constants.h"
20
20
  #include "quiche/common/platform/api/quiche_command_line_flags.h"
21
+ #include "quiche/common/platform/api/quiche_logging.h"
21
22
  #include "quiche/common/platform/api/quiche_mem_slice.h"
22
23
  #include "quiche/common/quiche_buffer_allocator.h"
23
24
 
@@ -74,7 +75,7 @@ void QboneSessionBase::OnStreamFrame(const QuicStreamFrame& frame) {
74
75
  flow_controller()->AddBytesConsumed(frame.data_length);
75
76
  // TODO(b/147817422): Add a counter for how many streams were actually
76
77
  // closed here.
77
- if (GetQuicFlag(FLAGS_qbone_close_ephemeral_frames)) {
78
+ if (quiche::GetQuicheCommandLineFlag(FLAGS_qbone_close_ephemeral_frames)) {
78
79
  ResetStream(frame.stream_id, QUIC_STREAM_CANCELLED);
79
80
  }
80
81
  return;
@@ -92,7 +93,7 @@ QuicStream* QboneSessionBase::CreateIncomingStream(QuicStreamId id) {
92
93
  }
93
94
 
94
95
  QuicStream* QboneSessionBase::CreateIncomingStream(PendingStream* /*pending*/) {
95
- QUIC_NOTREACHED();
96
+ QUICHE_NOTREACHED();
96
97
  return nullptr;
97
98
  }
98
99
 
@@ -22,8 +22,8 @@ QboneWriteOnlyStream::QboneWriteOnlyStream(QuicStreamId id,
22
22
  : QuicStream(id, session, /*is_static=*/false, WRITE_UNIDIRECTIONAL) {
23
23
  // QBONE uses a LIFO queue to try to always make progress. An individual
24
24
  // packet may persist for upto to qbone_stream_ttl_secs seconds in memory.
25
- MaybeSetTtl(
26
- QuicTime::Delta::FromSeconds(GetQuicFlag(FLAGS_qbone_stream_ttl_secs)));
25
+ MaybeSetTtl(QuicTime::Delta::FromSeconds(
26
+ quiche::GetQuicheCommandLineFlag(FLAGS_qbone_stream_ttl_secs)));
27
27
  }
28
28
 
29
29
  void QboneWriteOnlyStream::WritePacketToQuicStream(absl::string_view packet) {
@@ -39,8 +39,8 @@ QboneReadOnlyStream::QboneReadOnlyStream(QuicStreamId id,
39
39
  session_(session) {
40
40
  // QBONE uses a LIFO queue to try to always make progress. An individual
41
41
  // packet may persist for upto to qbone_stream_ttl_secs seconds in memory.
42
- MaybeSetTtl(
43
- QuicTime::Delta::FromSeconds(GetQuicFlag(FLAGS_qbone_stream_ttl_secs)));
42
+ MaybeSetTtl(QuicTime::Delta::FromSeconds(
43
+ quiche::GetQuicheCommandLineFlag(FLAGS_qbone_stream_ttl_secs)));
44
44
  }
45
45
 
46
46
  void QboneReadOnlyStream::OnDataAvailable() {
@@ -146,7 +146,7 @@ QuicAlarm* QuicConnectionPeer::GetAckAlarm(QuicConnection* connection) {
146
146
 
147
147
  // static
148
148
  QuicAlarm* QuicConnectionPeer::GetPingAlarm(QuicConnection* connection) {
149
- if (GetQuicReloadableFlag(quic_use_ping_manager)) {
149
+ if (GetQuicReloadableFlag(quic_use_ping_manager2)) {
150
150
  return connection->ping_manager_.alarm_.get();
151
151
  }
152
152
  return connection->ping_alarm_.get();
@@ -0,0 +1,63 @@
1
+ HTTP/1.1 200 OK
2
+ Date: Tue, 28 Aug 2012 15:08:56 GMT
3
+ Server: Apache/2.2.3 (CentOS)
4
+ X-Powered-By: PHP/5.1.6
5
+ Set-Cookie: bblastvisit=1346166536; expires=Wed, 28-Aug-2013 15:08:56 GMT; path=/; domain=.nasioc.com
6
+ Set-Cookie: bblastactivity=0; expires=Wed, 28-Aug-2013 15:08:56 GMT; path=/; domain=.nasioc.com
7
+ Expires: 0
8
+ Cache-Control: private, post-check=0, pre-check=0, max-age=0
9
+ Pragma: no-cache
10
+ X-UA-Compatible: IE=7
11
+ Connection: close
12
+ Content-Type: text/html; charset=ISO-8859-1
13
+
14
+ <!doctype html>
15
+ <html>
16
+ <head>
17
+ <title>Example Domain</title>
18
+
19
+ <meta charset="utf-8" />
20
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
21
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
22
+ <style type="text/css">
23
+ body {
24
+ background-color: #f0f0f2;
25
+ margin: 0;
26
+ padding: 0;
27
+ font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
28
+
29
+ }
30
+ div {
31
+ width: 600px;
32
+ margin: 5em auto;
33
+ padding: 50px;
34
+ background-color: #fff;
35
+ border-radius: 1em;
36
+ }
37
+ a:link, a:visited {
38
+ color: #38488f;
39
+ text-decoration: none;
40
+ }
41
+ @media (max-width: 700px) {
42
+ body {
43
+ background-color: #fff;
44
+ }
45
+ div {
46
+ width: auto;
47
+ margin: 0 auto;
48
+ border-radius: 0;
49
+ padding: 1em;
50
+ }
51
+ }
52
+ </style>
53
+ </head>
54
+
55
+ <body>
56
+ <div>
57
+ <h1>Example Domain</h1>
58
+ <p>This domain is established to be used for illustrative examples in documents. You may use this
59
+ domain in examples without prior coordination or asking for permission.</p>
60
+ <p><a href="http://www.iana.org/domains/example">More information...</a></p>
61
+ </div>
62
+ </body>
63
+ </html>
@@ -0,0 +1,65 @@
1
+ HTTP/1.1 200 OK
2
+ Date: Tue, 28 Aug 2012 15:08:56 GMT
3
+ Server: Apache/2.2.3 (CentOS)
4
+ X-Powered-By: PHP/5.1.6
5
+ Set-Cookie: bblastvisit=1346166536; expires=Wed, 28-Aug-2013 15:08:56 GMT; path=/; domain=.nasioc.com
6
+ Set-Cookie: bblastactivity=0; expires=Wed, 28-Aug-2013 15:08:56 GMT; path=/; domain=.nasioc.com
7
+ Expires: 0
8
+ Cache-Control: private, post-check=0, pre-check=0, max-age=0
9
+ Pragma: no-cache
10
+ X-UA-Compatible: IE=7
11
+ Connection: close
12
+ Content-Type: text/html; charset=ISO-8859-1
13
+ X-Original-Url: http://test.example.com/site_map.html
14
+
15
+
16
+ <!doctype html>
17
+ <html>
18
+ <head>
19
+ <title>Example Domain</title>
20
+
21
+ <meta charset="utf-8" />
22
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
23
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
24
+ <style type="text/css">
25
+ body {
26
+ background-color: #f0f0f2;
27
+ margin: 0;
28
+ padding: 0;
29
+ font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
30
+
31
+ }
32
+ div {
33
+ width: 600px;
34
+ margin: 5em auto;
35
+ padding: 50px;
36
+ background-color: #fff;
37
+ border-radius: 1em;
38
+ }
39
+ a:link, a:visited {
40
+ color: #38488f;
41
+ text-decoration: none;
42
+ }
43
+ @media (max-width: 700px) {
44
+ body {
45
+ background-color: #fff;
46
+ }
47
+ div {
48
+ width: auto;
49
+ margin: 0 auto;
50
+ border-radius: 0;
51
+ padding: 1em;
52
+ }
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <div>
59
+ <h1>Example Domain</h1>
60
+ <p>This domain is established to be used for illustrative examples in documents. You may use this
61
+ domain in examples without prior coordination or asking for permission.</p>
62
+ <p><a href="http://www.iana.org/domains/example">More information...</a></p>
63
+ </div>
64
+ </body>
65
+ </html>
@@ -657,9 +657,10 @@ MockQuicSpdySession::MockQuicSpdySession(QuicConnection* connection,
657
657
  return QuicSpdySession::SendWindowUpdate(id, byte_offset);
658
658
  });
659
659
 
660
- ON_CALL(*this, SendBlocked(_)).WillByDefault([this](QuicStreamId id) {
661
- return QuicSpdySession::SendBlocked(id);
662
- });
660
+ ON_CALL(*this, SendBlocked(_, _))
661
+ .WillByDefault([this](QuicStreamId id, QuicStreamOffset byte_offset) {
662
+ return QuicSpdySession::SendBlocked(id, byte_offset);
663
+ });
663
664
 
664
665
  ON_CALL(*this, OnCongestionWindowChange(_)).WillByDefault(testing::Return());
665
666
  }
@@ -779,6 +779,8 @@ class MockQuicSession : public QuicSession {
779
779
  (override));
780
780
  MOCK_METHOD(void, MaybeSendStopSendingFrame,
781
781
  (QuicStreamId stream_id, QuicResetStreamError error), (override));
782
+ MOCK_METHOD(void, SendBlocked,
783
+ (QuicStreamId stream_id, QuicStreamOffset offset), (override));
782
784
 
783
785
  MOCK_METHOD(bool, ShouldKeepConnectionAlive, (), (const, override));
784
786
  MOCK_METHOD(std::vector<std::string>, GetAlpnsToOffer, (), (const, override));
@@ -859,6 +861,20 @@ class MockQuicCryptoStream : public QuicCryptoStream {
859
861
  quic::EncryptionLevel level) const override {
860
862
  return level != ENCRYPTION_ZERO_RTT;
861
863
  }
864
+ EncryptionLevel GetEncryptionLevelToSendCryptoDataOfSpace(
865
+ PacketNumberSpace space) const override {
866
+ switch (space) {
867
+ case INITIAL_DATA:
868
+ return ENCRYPTION_INITIAL;
869
+ case HANDSHAKE_DATA:
870
+ return ENCRYPTION_HANDSHAKE;
871
+ case APPLICATION_DATA:
872
+ return ENCRYPTION_FORWARD_SECURE;
873
+ default:
874
+ QUICHE_DCHECK(false);
875
+ return NUM_ENCRYPTION_LEVELS;
876
+ }
877
+ }
862
878
 
863
879
  private:
864
880
  quiche::QuicheReferenceCountedPointer<QuicCryptoNegotiatedParameters> params_;
@@ -914,7 +930,8 @@ class MockQuicSpdySession : public QuicSpdySession {
914
930
  (QuicStreamId stream_id, QuicResetStreamError error), (override));
915
931
  MOCK_METHOD(void, SendWindowUpdate,
916
932
  (QuicStreamId id, QuicStreamOffset byte_offset), (override));
917
- MOCK_METHOD(void, SendBlocked, (QuicStreamId id), (override));
933
+ MOCK_METHOD(void, SendBlocked,
934
+ (QuicStreamId id, QuicStreamOffset byte_offset), (override));
918
935
  MOCK_METHOD(void, OnStreamHeadersPriority,
919
936
  (QuicStreamId stream_id,
920
937
  const spdy::SpdyStreamPrecedence& precedence),