@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
@@ -0,0 +1,41 @@
1
+ // Copyright 2022 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ #include "quiche_platform_impl/quiche_command_line_flags_impl.h"
6
+
7
+ #include <iostream>
8
+
9
+ #include "absl/flags/parse.h"
10
+ #include "absl/flags/usage.h"
11
+
12
+ namespace quiche {
13
+
14
+ static void SetUsage(absl::string_view usage) {
15
+ static bool usage_set = false;
16
+ if (!usage_set) {
17
+ absl::SetProgramUsageMessage(usage);
18
+ usage_set = true;
19
+ }
20
+ }
21
+
22
+ std::vector<std::string> QuicheParseCommandLineFlagsImpl(
23
+ const char* usage, int argc, const char* const* argv, bool /*parse_only*/) {
24
+ SetUsage(usage);
25
+ std::vector<char*> parsed =
26
+ absl::ParseCommandLine(argc, const_cast<char**>(argv));
27
+ std::vector<std::string> result;
28
+ result.reserve(parsed.size());
29
+ // Remove the first argument, which is the name of the binary.
30
+ for (size_t i = 1; i < parsed.size(); i++) {
31
+ result.push_back(std::string(parsed[i]));
32
+ }
33
+ return result;
34
+ }
35
+
36
+ void QuichePrintCommandLineFlagHelpImpl(const char* usage) {
37
+ SetUsage(usage);
38
+ std::cerr << absl::ProgramUsageMessage() << std::endl;
39
+ }
40
+
41
+ } // namespace quiche
@@ -0,0 +1,33 @@
1
+ // Copyright 2022 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ #ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_COMMAND_LINE_FLAGS_IMPL_H_
6
+ #define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_COMMAND_LINE_FLAGS_IMPL_H_
7
+
8
+ #include "absl/flags/flag.h"
9
+
10
+ #define DEFINE_QUICHE_COMMAND_LINE_FLAG_IMPL(type, name, default_value, help) \
11
+ ABSL_FLAG(type, name, default_value, help)
12
+
13
+ namespace quiche {
14
+
15
+ template <typename T>
16
+ T GetQuicheCommandLineFlag(const absl::Flag<T>& flag) {
17
+ return absl::GetFlag(flag);
18
+ }
19
+
20
+ std::vector<std::string> QuicheParseCommandLineFlagsImpl(
21
+ const char* usage, int argc, const char* const* argv,
22
+ bool parse_only = false);
23
+
24
+ void QuichePrintCommandLineFlagHelpImpl(const char* usage);
25
+
26
+ } // namespace quiche
27
+
28
+ template <typename T>
29
+ T GetQuicheFlagImpl(const absl::Flag<T>& flag) {
30
+ return absl::GetFlag(flag);
31
+ }
32
+
33
+ #endif // QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_COMMAND_LINE_FLAGS_IMPL_H_
@@ -0,0 +1,15 @@
1
+ // Copyright 2022 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ #ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_EXPECT_BUG_IMPL_H_
6
+ #define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_EXPECT_BUG_IMPL_H_
7
+
8
+ #include "quiche/common/platform/api/quiche_test.h"
9
+
10
+ #define EXPECT_QUICHE_BUG_IMPL(statement, regex) \
11
+ EXPECT_QUICHE_DEBUG_DEATH(statement, regex)
12
+ #define EXPECT_QUICHE_PEER_BUG_IMPL(statement, regex) \
13
+ EXPECT_QUICHE_DEBUG_DEATH(statement, regex)
14
+
15
+ #endif // QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_EXPECT_BUG_IMPL_H_
@@ -3,9 +3,10 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  // This file does not actually implement logging, it merely provides enough of
6
- // logging code for QUICHE to compile. QUICHE embedders are encouraged to
7
- // override this file with their own logic. If at some point logging becomes a
8
- // part of Abseil, this file will likely start using that instead.
6
+ // logging code for QUICHE to compile and pass the unit tests. QUICHE embedders
7
+ // are encouraged to override this file with their own logic. If at some point
8
+ // logging becomes a part of Abseil, this file will likely start using that
9
+ // instead.
9
10
 
10
11
  #ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_LOGGING_IMPL_H_
11
12
  #define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_LOGGING_IMPL_H_
@@ -17,9 +18,17 @@
17
18
 
18
19
  #include "absl/base/attributes.h"
19
20
  #include "quiche/common/platform/api/quiche_export.h"
21
+ #include "quiche_platform_impl/quiche_stack_trace_impl.h"
20
22
 
21
23
  namespace quiche {
22
24
 
25
+ class QUICHE_EXPORT_PRIVATE LogStreamVoidHelper {
26
+ public:
27
+ // This operator has lower precedence than << but higher than ?:, which is
28
+ // useful for implementing QUICHE_DISREGARD_LOG_STREAM below.
29
+ constexpr void operator&(std::ostream&) {}
30
+ };
31
+
23
32
  // NoopLogSink provides a log sink that does not put the data that it logs
24
33
  // anywhere.
25
34
  class QUICHE_EXPORT_PRIVATE NoopLogSink {
@@ -34,9 +43,8 @@ class QUICHE_EXPORT_PRIVATE NoopLogSink {
34
43
 
35
44
  constexpr std::ostream& stream() { return stream_; }
36
45
 
37
- // This operator has lower precedence than << but higher than ?:, which is
38
- // useful for implementing QUICHE_DISREGARD_LOG_STREAM below.
39
- void operator&(std::ostream&) {}
46
+ protected:
47
+ std::string str() { return stream_.str(); }
40
48
 
41
49
  private:
42
50
  std::stringstream stream_;
@@ -46,77 +54,103 @@ class QUICHE_EXPORT_PRIVATE NoopLogSink {
46
54
  // to compile due to the "failed to return value from non-void function" error.
47
55
  class QUICHE_EXPORT_PRIVATE FatalLogSink : public NoopLogSink {
48
56
  public:
49
- ABSL_ATTRIBUTE_NORETURN ~FatalLogSink() { abort(); }
57
+ ABSL_ATTRIBUTE_NORETURN ~FatalLogSink() {
58
+ std::cerr << str() << std::endl;
59
+ std::cerr << quiche::QuicheStackTraceImpl() << std::endl;
60
+ abort();
61
+ }
62
+ };
63
+
64
+ class QUICHE_EXPORT_PRIVATE CheckLogSink : public NoopLogSink {
65
+ public:
66
+ CheckLogSink(bool condition) : condition_(condition) {}
67
+ ~CheckLogSink() {
68
+ if (!condition_) {
69
+ std::cerr << "Check failed: " << str() << std::endl;
70
+ std::cerr << quiche::QuicheStackTraceImpl() << std::endl;
71
+ abort();
72
+ }
73
+ }
74
+
75
+ private:
76
+ const bool condition_;
50
77
  };
51
78
 
52
79
  } // namespace quiche
53
80
 
54
- #define QUICHE_DVLOG_IMPL(verbose_level) \
55
- ::quiche::NoopLogSink(#verbose_level).stream()
81
+ // This is necessary because we sometimes call QUICHE_DCHECK inside constexpr
82
+ // functions, and then write non-constexpr expressions into the resulting log.
83
+ #define QUICHE_CONDITIONAL_LOG_STREAM(stream, condition) \
84
+ !(condition) ? (void)0 : ::quiche::LogStreamVoidHelper() & (stream)
85
+ #define QUICHE_DISREGARD_LOG_STREAM(stream) \
86
+ QUICHE_CONDITIONAL_LOG_STREAM(stream, /*condition=*/false)
87
+ #define QUICHE_NOOP_STREAM() \
88
+ QUICHE_DISREGARD_LOG_STREAM(::quiche::NoopLogSink().stream())
89
+ #define QUICHE_NOOP_STREAM_WITH_CONDITION(condition) \
90
+ QUICHE_DISREGARD_LOG_STREAM(::quiche::NoopLogSink(condition).stream())
91
+
92
+ #define QUICHE_DVLOG_IMPL(verbose_level) QUICHE_NOOP_STREAM()
56
93
  #define QUICHE_DVLOG_IF_IMPL(verbose_level, condition) \
57
- ::quiche::NoopLogSink(#verbose_level, condition).stream()
58
- #define QUICHE_DLOG_IMPL(severity) ::quiche::NoopLogSink(#severity).stream()
59
- #define QUICHE_DLOG_IF_IMPL(severity, condition) \
60
- ::quiche::NoopLogSink(#severity, condition).stream()
61
- #define QUICHE_VLOG_IMPL(verbose_level) \
62
- ::quiche::NoopLogSink(#verbose_level).stream()
63
- #define QUICHE_LOG_FIRST_N_IMPL(severity, n) \
64
- ::quiche::NoopLogSink(#severity, n).stream()
65
- #define QUICHE_LOG_EVERY_N_SEC_IMPL(severity, seconds) \
66
- ::quiche::NoopLogSink(#severity, seconds).stream()
67
- #define QUICHE_LOG_IF_IMPL(severity, condition) \
68
- ::quiche::NoopLogSink(#severity, condition).stream()
94
+ QUICHE_NOOP_STREAM_WITH_CONDITION(condition)
95
+ #define QUICHE_DLOG_IMPL(severity) QUICHE_NOOP_STREAM()
96
+ #define QUICHE_VLOG_IMPL(verbose_level) QUICHE_NOOP_STREAM()
97
+ #define QUICHE_LOG_FIRST_N_IMPL(severity, n) QUICHE_NOOP_STREAM()
98
+ #define QUICHE_LOG_EVERY_N_SEC_IMPL(severity, seconds) QUICHE_NOOP_STREAM()
69
99
 
70
100
  #define QUICHE_LOG_IMPL(severity) QUICHE_LOG_IMPL_##severity()
71
101
  #define QUICHE_LOG_IMPL_FATAL() ::quiche::FatalLogSink().stream()
72
- #define QUICHE_LOG_IMPL_DFATAL() ::quiche::NoopLogSink().stream()
73
102
  #define QUICHE_LOG_IMPL_ERROR() ::quiche::NoopLogSink().stream()
74
103
  #define QUICHE_LOG_IMPL_WARNING() ::quiche::NoopLogSink().stream()
75
104
  #define QUICHE_LOG_IMPL_INFO() ::quiche::NoopLogSink().stream()
76
105
 
77
- #define QUICHE_PREDICT_FALSE_IMPL(x) (x)
78
- #define QUICHE_PREDICT_TRUE_IMPL(x) (x)
106
+ #define QUICHE_LOG_IF_IMPL(severity, condition) \
107
+ QUICHE_CONDITIONAL_LOG_STREAM(QUICHE_LOG_IMPL_##severity(), condition)
79
108
 
80
- #define QUICHE_PLOG_IMPL(severity) ::quiche::NoopLogSink(#severity)
109
+ #ifdef NDEBUG
110
+ #define QUICHE_LOG_IMPL_DFATAL() ::quiche::NoopLogSink().stream()
111
+ #define QUICHE_DLOG_IF_IMPL(severity, condition) \
112
+ QUICHE_NOOP_STREAM_WITH_CONDITION(condition)
113
+ #else
114
+ #define QUICHE_LOG_IMPL_DFATAL() ::quiche::FatalLogSink().stream()
115
+ #define QUICHE_DLOG_IF_IMPL(severity, condition) \
116
+ QUICHE_CONDITIONAL_LOG_STREAM(QUICHE_LOG_IMPL_##severity(), condition)
117
+ #endif
118
+
119
+ #define QUICHE_PLOG_IMPL(severity) QUICHE_NOOP_STREAM()
81
120
 
82
121
  #define QUICHE_DLOG_INFO_IS_ON_IMPL() false
83
122
  #define QUICHE_LOG_INFO_IS_ON_IMPL() false
84
123
  #define QUICHE_LOG_WARNING_IS_ON_IMPL() false
85
124
  #define QUICHE_LOG_ERROR_IS_ON_IMPL() false
86
125
 
87
- // This is necessary because we sometimes call QUICHE_DCHECK inside constexpr
88
- // functions, and then write non-constexpr expressions into the resulting log.
89
- #define QUICHE_DISREGARD_LOG_STREAM(stream) \
90
- true ? (void)0 : ::quiche::NoopLogSink() & (stream)
91
-
92
- #define QUICHE_CHECK_IMPL(condition) ::quiche::NoopLogSink(condition).stream()
126
+ #define QUICHE_CHECK_IMPL(condition) \
127
+ ::quiche::CheckLogSink(static_cast<bool>(condition)).stream()
93
128
  #define QUICHE_CHECK_EQ_IMPL(val1, val2) \
94
- ::quiche::NoopLogSink(val1, val2).stream()
129
+ ::quiche::CheckLogSink((val1) == (val2)).stream()
95
130
  #define QUICHE_CHECK_NE_IMPL(val1, val2) \
96
- ::quiche::NoopLogSink(val1, val2).stream()
131
+ ::quiche::CheckLogSink((val1) != (val2)).stream()
97
132
  #define QUICHE_CHECK_LE_IMPL(val1, val2) \
98
- ::quiche::NoopLogSink(val1, val2).stream()
133
+ ::quiche::CheckLogSink((val1) <= (val2)).stream()
99
134
  #define QUICHE_CHECK_LT_IMPL(val1, val2) \
100
- ::quiche::NoopLogSink(val1, val2).stream()
135
+ ::quiche::CheckLogSink((val1) < (val2)).stream()
101
136
  #define QUICHE_CHECK_GE_IMPL(val1, val2) \
102
- ::quiche::NoopLogSink(val1, val2).stream()
137
+ ::quiche::CheckLogSink((val1) >= (val2)).stream()
103
138
  #define QUICHE_CHECK_GT_IMPL(val1, val2) \
104
- ::quiche::NoopLogSink(val1, val2).stream()
139
+ ::quiche::CheckLogSink((val1) > (val2)).stream()
105
140
 
141
+ #ifdef NDEBUG
106
142
  #define QUICHE_DCHECK_IMPL(condition) \
107
- QUICHE_DISREGARD_LOG_STREAM(::quiche::NoopLogSink(condition).stream())
108
- #define QUICHE_DCHECK_EQ_IMPL(val1, val2) \
109
- ::quiche::NoopLogSink(val1, val2).stream()
110
- #define QUICHE_DCHECK_NE_IMPL(val1, val2) \
111
- ::quiche::NoopLogSink(val1, val2).stream()
112
- #define QUICHE_DCHECK_LE_IMPL(val1, val2) \
113
- ::quiche::NoopLogSink(val1, val2).stream()
114
- #define QUICHE_DCHECK_LT_IMPL(val1, val2) \
115
- ::quiche::NoopLogSink(val1, val2).stream()
116
- #define QUICHE_DCHECK_GE_IMPL(val1, val2) \
117
- ::quiche::NoopLogSink(val1, val2).stream()
118
- #define QUICHE_DCHECK_GT_IMPL(val1, val2) \
119
- ::quiche::NoopLogSink(val1, val2).stream()
143
+ QUICHE_NOOP_STREAM_WITH_CONDITION((condition))
144
+ #else
145
+ #define QUICHE_DCHECK_IMPL(condition) \
146
+ QUICHE_LOG_IF_IMPL(DFATAL, !static_cast<bool>(condition))
147
+ #endif
148
+ #define QUICHE_DCHECK_EQ_IMPL(val1, val2) QUICHE_DCHECK_IMPL((val1) == (val2))
149
+ #define QUICHE_DCHECK_NE_IMPL(val1, val2) QUICHE_DCHECK_IMPL((val1) != (val2))
150
+ #define QUICHE_DCHECK_LE_IMPL(val1, val2) QUICHE_DCHECK_IMPL((val1) <= (val2))
151
+ #define QUICHE_DCHECK_LT_IMPL(val1, val2) QUICHE_DCHECK_IMPL((val1) < (val2))
152
+ #define QUICHE_DCHECK_GE_IMPL(val1, val2) QUICHE_DCHECK_IMPL((val1) >= (val2))
153
+ #define QUICHE_DCHECK_GT_IMPL(val1, val2) QUICHE_DCHECK_IMPL((val1) > (val2))
120
154
 
121
155
  #define QUICHE_NOTREACHED_IMPL() QUICHE_DCHECK_IMPL(false)
122
156
 
@@ -0,0 +1,25 @@
1
+ #ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_LOWER_CASE_STRING_IMPL_H_
2
+ #define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_LOWER_CASE_STRING_IMPL_H_
3
+
4
+ #include <string>
5
+
6
+ #include "absl/strings/ascii.h"
7
+ #include "absl/strings/string_view.h"
8
+ #include "quiche/common/platform/api/quiche_export.h"
9
+
10
+ namespace quiche {
11
+
12
+ class QUICHE_EXPORT_PRIVATE QuicheLowerCaseStringImpl {
13
+ public:
14
+ QuicheLowerCaseStringImpl(absl::string_view str)
15
+ : str_(absl::AsciiStrToLower(str)) {}
16
+
17
+ const std::string& get() const { return str_; }
18
+
19
+ private:
20
+ std::string str_;
21
+ };
22
+
23
+ } // namespace quiche
24
+
25
+ #endif // QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_LOWER_CASE_STRING_IMPL_H_
@@ -23,7 +23,7 @@ constexpr absl::string_view kUnknownSymbol = "(unknown)";
23
23
  std::string QuicheStackTraceImpl() {
24
24
  std::vector<void*> stacktrace(kMaxStackSize, nullptr);
25
25
  int num_frames = absl::GetStackTrace(stacktrace.data(), stacktrace.size(),
26
- /*skip_count=*/1);
26
+ /*skip_count=*/0);
27
27
  if (num_frames <= 0) {
28
28
  return "";
29
29
  }
@@ -0,0 +1,25 @@
1
+ // Copyright 2022 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ #include "quiche_platform_impl/quiche_test_impl.h"
6
+
7
+ #include "quiche/common/platform/api/quiche_flags.h"
8
+
9
+ QuicheFlagSaverImpl::QuicheFlagSaverImpl() {
10
+ #define QUIC_FLAG(flag, value) saved_##flag##_ = flag;
11
+ #include "quiche/quic/core/quic_flags_list.h"
12
+ #undef QUIC_FLAG
13
+ #define QUIC_PROTOCOL_FLAG(type, flag, ...) saved_##flag##_ = FLAGS_##flag;
14
+ #include "quiche/quic/core/quic_protocol_flags_list.h"
15
+ #undef QUIC_PROTOCOL_FLAG
16
+ }
17
+
18
+ QuicheFlagSaverImpl::~QuicheFlagSaverImpl() {
19
+ #define QUIC_FLAG(flag, value) flag = saved_##flag##_;
20
+ #include "quiche/quic/core/quic_flags_list.h" // NOLINT
21
+ #undef QUIC_FLAG
22
+ #define QUIC_PROTOCOL_FLAG(type, flag, ...) FLAGS_##flag = saved_##flag##_;
23
+ #include "quiche/quic/core/quic_protocol_flags_list.h" // NOLINT
24
+ #undef QUIC_PROTOCOL_FLAG
25
+ }
@@ -0,0 +1,56 @@
1
+ // Copyright 2022 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ #ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_TEST_IMPL_H_
6
+ #define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_TEST_IMPL_H_
7
+
8
+ #include "gmock/gmock.h"
9
+ #include "gtest/gtest-spi.h"
10
+ #include "gtest/gtest.h"
11
+
12
+ #define EXPECT_QUICHE_DEBUG_DEATH_IMPL(condition, message) \
13
+ EXPECT_DEBUG_DEATH(condition, message)
14
+
15
+ #define QUICHE_TEST_DISABLED_IN_CHROME_IMPL(name) name
16
+ #define QUICHE_SLOW_TEST_IMPL(test) test
17
+
18
+ class QuicheFlagSaverImpl {
19
+ public:
20
+ QuicheFlagSaverImpl();
21
+ ~QuicheFlagSaverImpl();
22
+
23
+ private:
24
+ #define QUIC_FLAG(flag, value) bool saved_##flag##_;
25
+ #include "quiche/quic/core/quic_flags_list.h"
26
+ #undef QUIC_FLAG
27
+
28
+ #define QUIC_PROTOCOL_FLAG(type, flag, ...) type saved_##flag##_;
29
+ #include "quiche/quic/core/quic_protocol_flags_list.h"
30
+ #undef QUIC_PROTOCOL_FLAG
31
+ };
32
+
33
+ class ScopedEnvironmentForThreadsImpl {};
34
+
35
+ namespace quiche::test {
36
+
37
+ class QuicheTestImpl : public ::testing::Test {
38
+ private:
39
+ QuicheFlagSaverImpl saver_;
40
+ };
41
+
42
+ template <class T>
43
+ class QuicheTestWithParamImpl : public ::testing::TestWithParam<T> {
44
+ private:
45
+ QuicheFlagSaverImpl saver_;
46
+ };
47
+
48
+ inline std::string QuicheGetCommonSourcePathImpl() { return "quiche/common"; }
49
+
50
+ } // namespace quiche::test
51
+
52
+ inline std::string QuicheGetTestMemoryCachePathImpl() {
53
+ return "quiche/quic/test_tools/quic_http_response_cache_data";
54
+ }
55
+
56
+ #endif // QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_TEST_IMPL_H_
@@ -0,0 +1,27 @@
1
+ // Copyright (c) 2022 The Chromium Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ #ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_TEST_OUTPUT_IMPL_H_
6
+ #define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_TEST_OUTPUT_IMPL_H_
7
+
8
+ #include <string>
9
+
10
+ #include "absl/strings/string_view.h"
11
+
12
+ namespace quiche {
13
+
14
+ inline void QuicheSaveTestOutputImpl(absl::string_view /*filename*/,
15
+ absl::string_view /*data*/) {}
16
+
17
+ inline bool QuicheLoadTestOutputImpl(absl::string_view /*filename*/,
18
+ std::string* /*data*/) {
19
+ return false;
20
+ }
21
+
22
+ inline void QuicheRecordTraceImpl(absl::string_view /*identifier*/,
23
+ absl::string_view /*data*/) {}
24
+
25
+ } // namespace quiche
26
+
27
+ #endif // QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_TEST_OUTPUT_IMPL_H_
@@ -0,0 +1,26 @@
1
+ #ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_THREAD_IMPL_H_
2
+ #define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_THREAD_IMPL_H_
3
+
4
+ #include <string>
5
+ #include <thread> // NOLINT: only used outside of google3
6
+
7
+ #include "absl/types/optional.h"
8
+ #include "quiche/common/platform/api/quiche_export.h"
9
+
10
+ class QUICHE_NO_EXPORT QuicheThreadImpl {
11
+ public:
12
+ QuicheThreadImpl(const std::string&) {}
13
+ virtual ~QuicheThreadImpl() {}
14
+
15
+ virtual void Run() = 0;
16
+
17
+ void Start() {
18
+ thread_.emplace([this]() { Run(); });
19
+ }
20
+ void Join() { thread_->join(); }
21
+
22
+ private:
23
+ absl::optional<std::thread> thread_;
24
+ };
25
+
26
+ #endif // QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_THREAD_IMPL_H_
@@ -62,6 +62,7 @@ absl::optional<std::string> AsciiUrlDecodeImpl(absl::string_view input) {
62
62
  std::string input_encoded = std::string(input);
63
63
  url::RawCanonOutputW<1024> canon_output;
64
64
  url::DecodeURLEscapeSequences(input_encoded.c_str(), input_encoded.length(),
65
+ url::DecodeURLMode::kUTF8,
65
66
  &canon_output);
66
67
  std::string output;
67
68
  output.reserve(canon_output.length());
@@ -5,8 +5,8 @@
5
5
  #include "quiche/common/quiche_buffer_allocator.h"
6
6
 
7
7
  #include "absl/strings/string_view.h"
8
+ #include "quiche/common/platform/api/quiche_expect_bug.h"
8
9
  #include "quiche/common/platform/api/quiche_test.h"
9
- #include "quiche/common/platform/api/quiche_test_helpers.h"
10
10
  #include "quiche/common/simple_buffer_allocator.h"
11
11
  #include "quiche/common/test_tools/quiche_test_utils.h"
12
12
 
@@ -24,9 +24,8 @@ class QUICHE_EXPORT_PRIVATE QuicheMemSliceStorage {
24
24
  QuicheBufferAllocator* allocator,
25
25
  const quic::QuicByteCount max_slice_len);
26
26
 
27
- QuicheMemSliceStorage(const QuicheMemSliceStorage& other) = default;
28
- QuicheMemSliceStorage& operator=(const QuicheMemSliceStorage& other) =
29
- default;
27
+ QuicheMemSliceStorage(const QuicheMemSliceStorage& other) = delete;
28
+ QuicheMemSliceStorage& operator=(const QuicheMemSliceStorage& other) = delete;
30
29
  QuicheMemSliceStorage(QuicheMemSliceStorage&& other) = default;
31
30
  QuicheMemSliceStorage& operator=(QuicheMemSliceStorage&& other) = default;
32
31
 
@@ -147,7 +147,7 @@ class StructuredHeaderParser {
147
147
  // for parsing an Item from [SH09] 4.2.7).
148
148
  absl::optional<Item> ReadBareItem() {
149
149
  if (input_.empty()) {
150
- DVLOG(1) << "ReadBareItem: unexpected EOF";
150
+ QUICHE_DVLOG(1) << "ReadBareItem: unexpected EOF";
151
151
  return absl::nullopt;
152
152
  }
153
153
  switch (input_.front()) {
@@ -234,8 +234,8 @@ class StructuredHeaderParser {
234
234
  value = std::move(*item);
235
235
  }
236
236
  if (!parameters.emplace(*name, value).second) {
237
- DVLOG(1) << "ReadParameterisedIdentifier: duplicated parameter: "
238
- << *name;
237
+ QUICHE_DVLOG(1) << "ReadParameterisedIdentifier: duplicated parameter: "
238
+ << *name;
239
239
  return absl::nullopt;
240
240
  }
241
241
  SkipWhitespaces();
@@ -426,24 +426,24 @@ class StructuredHeaderParser {
426
426
  size_t i = 0;
427
427
  for (; i < input_.size(); ++i) {
428
428
  if (!absl::ascii_isprint(input_[i])) {
429
- DVLOG(1) << "ReadString: non printable-ASCII character";
429
+ QUICHE_DVLOG(1) << "ReadString: non printable-ASCII character";
430
430
  return absl::nullopt;
431
431
  }
432
432
  if (input_[i] == '"' || input_[i] == '\\') break;
433
433
  }
434
434
  if (i == input_.size()) {
435
- DVLOG(1) << "ReadString: missing closing '\"'";
435
+ QUICHE_DVLOG(1) << "ReadString: missing closing '\"'";
436
436
  return absl::nullopt;
437
437
  }
438
438
  s.append(std::string(input_.substr(0, i)));
439
439
  input_.remove_prefix(i);
440
440
  if (ConsumeChar('\\')) {
441
441
  if (input_.empty()) {
442
- DVLOG(1) << "ReadString: backslash at string end";
442
+ QUICHE_DVLOG(1) << "ReadString: backslash at string end";
443
443
  return absl::nullopt;
444
444
  }
445
445
  if (input_[0] != '"' && input_[0] != '\\') {
446
- DVLOG(1) << "ReadString: invalid escape";
446
+ QUICHE_DVLOG(1) << "ReadString: invalid escape";
447
447
  return absl::nullopt;
448
448
  }
449
449
  s.push_back(input_.front());
@@ -462,7 +462,7 @@ class StructuredHeaderParser {
462
462
  }
463
463
  size_t len = input_.find(delimiter);
464
464
  if (len == absl::string_view::npos) {
465
- DVLOG(1) << "ReadByteSequence: missing closing delimiter";
465
+ QUICHE_DVLOG(1) << "ReadByteSequence: missing closing delimiter";
466
466
  return absl::nullopt;
467
467
  }
468
468
  std::string base64(input_.substr(0, len));
@@ -471,7 +471,8 @@ class StructuredHeaderParser {
471
471
 
472
472
  std::string binary;
473
473
  if (!absl::Base64Unescape(base64, &binary)) {
474
- DVLOG(1) << "ReadByteSequence: failed to decode base64: " << base64;
474
+ QUICHE_DVLOG(1) << "ReadByteSequence: failed to decode base64: "
475
+ << base64;
475
476
  return absl::nullopt;
476
477
  }
477
478
  input_.remove_prefix(len);
@@ -518,9 +519,10 @@ class StructuredHeaderParser {
518
519
  }
519
520
 
520
521
  void LogParseError(const char* func, const char* expected) {
521
- DVLOG(1) << func << ": " << expected << " expected, got "
522
- << (input_.empty() ? "EOS"
523
- : "'" + std::string(input_.substr(0, 1)) + "'");
522
+ QUICHE_DVLOG(1) << func << ": " << expected << " expected, got "
523
+ << (input_.empty()
524
+ ? "EOS"
525
+ : "'" + std::string(input_.substr(0, 1)) + "'");
524
526
  }
525
527
 
526
528
  absl::string_view input_;
@@ -116,12 +116,13 @@ bool EventForwarder::OnGoAwayFrameData(const char* goaway_data, size_t len) {
116
116
  return false;
117
117
  }
118
118
 
119
- void EventForwarder::OnHeaders(spdy::SpdyStreamId stream_id, bool has_priority,
119
+ void EventForwarder::OnHeaders(spdy::SpdyStreamId stream_id,
120
+ size_t payload_length, bool has_priority,
120
121
  int weight, spdy::SpdyStreamId parent_stream_id,
121
122
  bool exclusive, bool fin, bool end) {
122
123
  if (can_forward_()) {
123
- receiver_.OnHeaders(stream_id, has_priority, weight, parent_stream_id,
124
- exclusive, fin, end);
124
+ receiver_.OnHeaders(stream_id, payload_length, has_priority, weight,
125
+ parent_stream_id, exclusive, fin, end);
125
126
  }
126
127
  }
127
128
 
@@ -140,9 +141,10 @@ void EventForwarder::OnPushPromise(spdy::SpdyStreamId stream_id,
140
141
  }
141
142
  }
142
143
 
143
- void EventForwarder::OnContinuation(spdy::SpdyStreamId stream_id, bool end) {
144
+ void EventForwarder::OnContinuation(spdy::SpdyStreamId stream_id,
145
+ size_t payload_length, bool end) {
144
146
  if (can_forward_()) {
145
- receiver_.OnContinuation(stream_id, end);
147
+ receiver_.OnContinuation(stream_id, payload_length, end);
146
148
  }
147
149
  }
148
150
 
@@ -46,14 +46,16 @@ class QUICHE_EXPORT_PRIVATE EventForwarder
46
46
  void OnGoAway(spdy::SpdyStreamId last_accepted_stream_id,
47
47
  spdy::SpdyErrorCode error_code) override;
48
48
  bool OnGoAwayFrameData(const char* goaway_data, size_t len) override;
49
- void OnHeaders(spdy::SpdyStreamId stream_id, bool has_priority, int weight,
49
+ void OnHeaders(spdy::SpdyStreamId stream_id, size_t payload_length,
50
+ bool has_priority, int weight,
50
51
  spdy::SpdyStreamId parent_stream_id, bool exclusive, bool fin,
51
52
  bool end) override;
52
53
  void OnWindowUpdate(spdy::SpdyStreamId stream_id,
53
54
  int delta_window_size) override;
54
55
  void OnPushPromise(spdy::SpdyStreamId stream_id,
55
56
  spdy::SpdyStreamId promised_stream_id, bool end) override;
56
- void OnContinuation(spdy::SpdyStreamId stream_id, bool end) override;
57
+ void OnContinuation(spdy::SpdyStreamId stream_id, size_t payload_length,
58
+ bool end) override;
57
59
  void OnAltSvc(spdy::SpdyStreamId stream_id, absl::string_view origin,
58
60
  const spdy::SpdyAltSvcWireFormat::AlternativeServiceVector&
59
61
  altsvc_vector) override;