@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
@@ -1,4 +1,4 @@
1
- #include "quiche/common/balsa/header_properties.h"
1
+ #include "quiche/balsa/header_properties.h"
2
2
 
3
3
  #include "quiche/common/platform/api/quiche_test.h"
4
4
 
@@ -2,7 +2,7 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- #include "quiche/common/balsa/http_validation_policy.h"
5
+ #include "quiche/balsa/http_validation_policy.h"
6
6
 
7
7
  #include <tuple>
8
8
 
@@ -2,8 +2,8 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- #ifndef QUICHE_COMMON_BALSA_HTTP_VALIDATION_POLICY_H_
6
- #define QUICHE_COMMON_BALSA_HTTP_VALIDATION_POLICY_H_
5
+ #ifndef QUICHE_BALSA_HTTP_VALIDATION_POLICY_H_
6
+ #define QUICHE_BALSA_HTTP_VALIDATION_POLICY_H_
7
7
 
8
8
  #include <ostream>
9
9
 
@@ -52,4 +52,4 @@ class QUICHE_EXPORT_PRIVATE HttpValidationPolicy {
52
52
 
53
53
  } // namespace quiche
54
54
 
55
- #endif // QUICHE_COMMON_BALSA_HTTP_VALIDATION_POLICY_H_
55
+ #endif // QUICHE_BALSA_HTTP_VALIDATION_POLICY_H_
@@ -2,13 +2,13 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- #ifndef QUICHE_COMMON_BALSA_NOOP_BALSA_VISITOR_H_
6
- #define QUICHE_COMMON_BALSA_NOOP_BALSA_VISITOR_H_
5
+ #ifndef QUICHE_BALSA_NOOP_BALSA_VISITOR_H_
6
+ #define QUICHE_BALSA_NOOP_BALSA_VISITOR_H_
7
7
 
8
8
  #include <cstddef>
9
9
 
10
10
  #include "absl/strings/string_view.h"
11
- #include "quiche/common/balsa/balsa_visitor_interface.h"
11
+ #include "quiche/balsa/balsa_visitor_interface.h"
12
12
  #include "quiche/common/platform/api/quiche_export.h"
13
13
 
14
14
  namespace quiche {
@@ -53,4 +53,4 @@ class QUICHE_EXPORT_PRIVATE NoOpBalsaVisitor : public BalsaVisitorInterface {
53
53
 
54
54
  } // namespace quiche
55
55
 
56
- #endif // QUICHE_COMMON_BALSA_NOOP_BALSA_VISITOR_H_
56
+ #endif // QUICHE_BALSA_NOOP_BALSA_VISITOR_H_
@@ -2,8 +2,9 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- #include "quiche/common/balsa/simple_buffer.h"
5
+ #include "quiche/balsa/simple_buffer.h"
6
6
 
7
+ #include <algorithm>
7
8
  #include <cstring>
8
9
  #include <memory>
9
10
 
@@ -12,35 +13,20 @@
12
13
 
13
14
  namespace quiche {
14
15
 
15
- static const int kInitialSimpleBufferSize = 10;
16
+ constexpr int kMinimumSimpleBufferSize = 10;
16
17
 
17
- SimpleBuffer::SimpleBuffer()
18
- : storage_(new char[kInitialSimpleBufferSize]),
19
- write_idx_(0),
20
- read_idx_(0),
21
- storage_size_(kInitialSimpleBufferSize) {}
22
-
23
- SimpleBuffer::SimpleBuffer(int size)
24
- : write_idx_(0), read_idx_(0), storage_size_(size) {
25
- // Callers may try to allocate overly large blocks, but negative sizes are
26
- // obviously wrong.
27
- QUICHE_CHECK_GE(size, 0);
28
- storage_ = new char[size];
29
- }
18
+ SimpleBuffer::SimpleBuffer(int size) { Reserve(size); }
30
19
 
31
20
  ////////////////////////////////////////////////////////////////////////////////
32
21
 
33
22
  int SimpleBuffer::Write(const char* bytes, int size) {
34
- if (size < 0) {
35
- QUICHE_BUG(simple_buffer_write_negative_size)
23
+ if (size <= 0) {
24
+ QUICHE_BUG_IF(simple_buffer_write_negative_size, size < 0)
36
25
  << "size must not be negative: " << size;
37
26
  return 0;
38
27
  }
39
28
 
40
- bool has_room = ((storage_size_ - write_idx_) >= size);
41
- if (!has_room) {
42
- Reserve(size);
43
- }
29
+ Reserve(size);
44
30
  memcpy(storage_ + write_idx_, bytes, size);
45
31
  AdvanceWritablePtr(size);
46
32
  return size;
@@ -58,9 +44,11 @@ int SimpleBuffer::Read(char* bytes, int size) {
58
44
  char* read_ptr = nullptr;
59
45
  int read_size = 0;
60
46
  GetReadablePtr(&read_ptr, &read_size);
61
- if (read_size > size) {
62
- read_size = size;
47
+ read_size = std::min(read_size, size);
48
+ if (read_size == 0) {
49
+ return 0;
63
50
  }
51
+
64
52
  memcpy(bytes, read_ptr, read_size);
65
53
  AdvanceReadablePtr(read_size);
66
54
  return read_size;
@@ -85,6 +73,15 @@ void SimpleBuffer::Reserve(int size) {
85
73
  int read_size = 0;
86
74
  GetReadablePtr(&read_ptr, &read_size);
87
75
 
76
+ if (read_ptr == nullptr) {
77
+ QUICHE_DCHECK_EQ(0, read_size);
78
+
79
+ size = std::max(size, kMinimumSimpleBufferSize);
80
+ storage_ = new char[size];
81
+ storage_size_ = size;
82
+ return;
83
+ }
84
+
88
85
  if (read_size + size <= storage_size_) {
89
86
  // Can reclaim space from consumed bytes by shifting.
90
87
  memmove(storage_, read_ptr, read_size);
@@ -95,19 +92,15 @@ void SimpleBuffer::Reserve(int size) {
95
92
 
96
93
  // The new buffer needs to be at least `read_size + size` bytes.
97
94
  // At least double the buffer to amortize allocation costs.
98
- int new_storage_size = 2 * storage_size_;
99
- if (new_storage_size < size + read_size) {
100
- new_storage_size = size + read_size;
101
- }
95
+ storage_size_ = std::max(2 * storage_size_, size + read_size);
102
96
 
103
- char* new_storage = new char[new_storage_size];
97
+ char* new_storage = new char[storage_size_];
104
98
  memcpy(new_storage, read_ptr, read_size);
105
99
  delete[] storage_;
106
100
 
107
101
  read_idx_ = 0;
108
102
  write_idx_ = read_size;
109
103
  storage_ = new_storage;
110
- storage_size_ = new_storage_size;
111
104
  }
112
105
 
113
106
  void SimpleBuffer::AdvanceReadablePtr(int amount_to_advance) {
@@ -2,8 +2,8 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- #ifndef QUICHE_COMMON_BALSA_SIMPLE_BUFFER_H_
6
- #define QUICHE_COMMON_BALSA_SIMPLE_BUFFER_H_
5
+ #ifndef QUICHE_BALSA_SIMPLE_BUFFER_H_
6
+ #define QUICHE_BALSA_SIMPLE_BUFFER_H_
7
7
 
8
8
  #include "absl/strings/string_view.h"
9
9
  #include "quiche/common/platform/api/quiche_export.h"
@@ -20,8 +20,8 @@ class SimpleBufferTest;
20
20
  // position. Reading consumes data.
21
21
  class QUICHE_EXPORT_PRIVATE SimpleBuffer {
22
22
  public:
23
- SimpleBuffer();
24
- // Create SimpleBuffer with `size` reserved capacity.
23
+ SimpleBuffer() = default;
24
+ // Create SimpleBuffer with at least `size` reserved capacity.
25
25
  explicit SimpleBuffer(int size);
26
26
 
27
27
  SimpleBuffer(const SimpleBuffer&) = delete;
@@ -40,18 +40,19 @@ class QUICHE_EXPORT_PRIVATE SimpleBuffer {
40
40
  return Write(piece.data(), piece.size());
41
41
  }
42
42
 
43
- // Gets a pointer into the buffer that can be written to. Stores the number
44
- // of characters which are allowed to be written in `*size`. The pointer and
45
- // size can be used in functions like recv() or read(). If `*size` is zero
46
- // upon returning from this function, then it is unsafe to dereference `*ptr`.
47
- // Writing to this region after calling any other non-const method results in
48
- // undefined behavior.
43
+ // Stores the pointer into the buffer that can be written to in `*ptr`, and
44
+ // the number of characters that are allowed to be written in `*size`. The
45
+ // pointer and size can be used in functions like recv() or read(). If
46
+ // `*size` is zero upon returning from this function, then it is unsafe to
47
+ // dereference `*ptr`. Writing to this region after calling any other
48
+ // non-const method results in undefined behavior.
49
49
  void GetWritablePtr(char** ptr, int* size) const {
50
50
  *ptr = storage_ + write_idx_;
51
51
  *size = storage_size_ - write_idx_;
52
52
  }
53
53
 
54
- // Gets a pointer that can be read from. This pointer (and size) can be used
54
+ // Stores the pointer that can be read from in `*ptr`, and the number of bytes
55
+ // that are allowed to be read in `*size`. The pointer and size can be used
55
56
  // in functions like send() or write(). If `*size` is zero upon returning
56
57
  // from this function, then it is unsafe to dereference `*ptr`. Reading from
57
58
  // this region after calling any other non-const method results in undefined
@@ -100,17 +101,18 @@ class QUICHE_EXPORT_PRIVATE SimpleBuffer {
100
101
 
101
102
  // The buffer owned by this class starts at `*storage_` and is `storage_size_`
102
103
  // bytes long.
104
+ // If `storage_` is nullptr, then `storage_size_` must be zero.
103
105
  // `0 <= read_idx_ <= write_idx_ <= storage_size_` must always hold.
104
106
  // If `read_idx_ == write_idx_`, then they must be equal to zero.
105
107
  // The first `read_idx_` bytes of the buffer are consumed,
106
108
  // the next `write_idx_ - read_idx_` bytes are the readable region, and the
107
109
  // remaining `storage_size_ - write_idx_` bytes are the writable region.
108
- char* storage_;
109
- int write_idx_;
110
- int read_idx_;
111
- int storage_size_;
110
+ char* storage_ = nullptr;
111
+ int write_idx_ = 0;
112
+ int read_idx_ = 0;
113
+ int storage_size_ = 0;
112
114
  };
113
115
 
114
116
  } // namespace quiche
115
117
 
116
- #endif // QUICHE_COMMON_BALSA_SIMPLE_BUFFER_H_
118
+ #endif // QUICHE_BALSA_SIMPLE_BUFFER_H_
@@ -2,11 +2,12 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- #include "quiche/common/balsa/simple_buffer.h"
5
+ #include "quiche/balsa/simple_buffer.h"
6
6
 
7
7
  #include <string>
8
8
 
9
9
  #include "absl/strings/string_view.h"
10
+ #include "quiche/common/platform/api/quiche_expect_bug.h"
10
11
  #include "quiche/common/platform/api/quiche_test.h"
11
12
 
12
13
  namespace quiche {
@@ -15,6 +16,8 @@ namespace test {
15
16
 
16
17
  namespace {
17
18
 
19
+ constexpr int kMinimumSimpleBufferSize = 10;
20
+
18
21
  // Buffer full of 40 char strings.
19
22
  const char ibuf[] = {
20
23
  "123456789!@#$%^&*()abcdefghijklmnopqrstu"
@@ -35,31 +38,60 @@ class SimpleBufferTest : public QuicheTest {
35
38
 
36
39
  namespace {
37
40
 
38
- TEST_F(SimpleBufferTest, TestCreationWithSize) {
39
- SimpleBuffer buffer(5);
40
- EXPECT_EQ(5, storage_size(buffer));
41
+ TEST_F(SimpleBufferTest, CreationWithSize) {
42
+ SimpleBuffer buffer1(5);
43
+ EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer1));
44
+
45
+ SimpleBuffer buffer2(25);
46
+ EXPECT_EQ(25, storage_size(buffer2));
41
47
  }
42
48
 
43
49
  // Make sure that a zero-sized initial buffer does not throw things off.
44
- TEST_F(SimpleBufferTest, TestCreationWithZeroSize) {
50
+ TEST_F(SimpleBufferTest, CreationWithZeroSize) {
45
51
  SimpleBuffer buffer(0);
46
52
  EXPECT_EQ(0, storage_size(buffer));
47
53
  EXPECT_EQ(4, buffer.Write(ibuf, 4));
48
54
  EXPECT_EQ(4, write_idx(buffer));
49
- EXPECT_EQ(4, storage_size(buffer));
55
+ EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
50
56
  EXPECT_EQ(4, buffer.ReadableBytes());
51
57
  }
52
58
 
53
- TEST(SimpleBufferDeathTest, TestCreationWithNegativeSize) {
54
- EXPECT_DEATH(SimpleBuffer buffer(-1), "Check failed");
59
+ TEST_F(SimpleBufferTest, ReadZeroBytes) {
60
+ SimpleBuffer buffer;
61
+
62
+ EXPECT_EQ(0, buffer.Read(nullptr, 0));
63
+ }
64
+
65
+ TEST_F(SimpleBufferTest, WriteZeroFromNullptr) {
66
+ SimpleBuffer buffer;
67
+
68
+ EXPECT_EQ(0, buffer.Write(nullptr, 0));
69
+ }
70
+
71
+ TEST(SimpleBufferExpectBug, ReserveNegativeSize) {
72
+ SimpleBuffer buffer;
73
+
74
+ EXPECT_QUICHE_BUG(buffer.Reserve(-1), "size must not be negative");
75
+ }
76
+
77
+ TEST(SimpleBufferExpectBug, ReadNegativeSize) {
78
+ SimpleBuffer buffer;
79
+
80
+ EXPECT_QUICHE_BUG(buffer.Read(nullptr, -1), "size must not be negative");
81
+ }
82
+
83
+ TEST(SimpleBufferExpectBug, WriteNegativeSize) {
84
+ SimpleBuffer buffer;
85
+
86
+ EXPECT_QUICHE_BUG(buffer.Write(nullptr, -1), "size must not be negative");
55
87
  }
56
88
 
57
- TEST_F(SimpleBufferTest, TestBasics) {
89
+ TEST_F(SimpleBufferTest, Basics) {
58
90
  SimpleBuffer buffer;
59
91
 
60
92
  EXPECT_TRUE(buffer.Empty());
61
93
  EXPECT_EQ("", buffer.GetReadableRegion());
62
- EXPECT_EQ(10, storage_size(buffer));
94
+ EXPECT_EQ(0, storage_size(buffer));
63
95
  EXPECT_EQ(0, read_idx(buffer));
64
96
  EXPECT_EQ(0, write_idx(buffer));
65
97
 
@@ -73,20 +105,20 @@ TEST_F(SimpleBufferTest, TestBasics) {
73
105
  EXPECT_EQ(storage(buffer), readable_ptr);
74
106
  EXPECT_EQ(0, readable_size);
75
107
  EXPECT_EQ(storage(buffer), writeable_ptr);
76
- EXPECT_EQ(10, writable_size);
108
+ EXPECT_EQ(0, writable_size);
77
109
  EXPECT_EQ(0, buffer.ReadableBytes());
78
110
 
79
111
  const SimpleBuffer buffer2;
80
112
  EXPECT_EQ(0, buffer2.ReadableBytes());
81
113
  }
82
114
 
83
- TEST_F(SimpleBufferTest, TestBasicWR) {
115
+ TEST_F(SimpleBufferTest, BasicWR) {
84
116
  SimpleBuffer buffer;
85
117
 
86
118
  EXPECT_EQ(4, buffer.Write(ibuf, 4));
87
119
  EXPECT_EQ(0, read_idx(buffer));
88
120
  EXPECT_EQ(4, write_idx(buffer));
89
- EXPECT_EQ(10, storage_size(buffer));
121
+ EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
90
122
  EXPECT_EQ(4, buffer.ReadableBytes());
91
123
  EXPECT_EQ("1234", buffer.GetReadableRegion());
92
124
  int bytes_written = 4;
@@ -109,7 +141,7 @@ TEST_F(SimpleBufferTest, TestBasicWR) {
109
141
  EXPECT_EQ(4, buffer.Read(obuf + bytes_read, 40));
110
142
  EXPECT_EQ(0, read_idx(buffer));
111
143
  EXPECT_EQ(0, write_idx(buffer));
112
- EXPECT_EQ(10, storage_size(buffer));
144
+ EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
113
145
  EXPECT_EQ(0, buffer.ReadableBytes());
114
146
  EXPECT_EQ("", buffer.GetReadableRegion());
115
147
  bytes_read += 4;
@@ -119,7 +151,7 @@ TEST_F(SimpleBufferTest, TestBasicWR) {
119
151
  EXPECT_EQ(storage(buffer), readable_ptr);
120
152
  EXPECT_EQ(0, readable_size);
121
153
  EXPECT_EQ(storage(buffer), writeable_ptr);
122
- EXPECT_EQ(10, writable_size);
154
+ EXPECT_EQ(kMinimumSimpleBufferSize, writable_size);
123
155
 
124
156
  EXPECT_EQ(bytes_written, bytes_read);
125
157
  for (int i = 0; i < bytes_read; ++i) {
@@ -160,37 +192,41 @@ TEST_F(SimpleBufferTest, TestBasicWR) {
160
192
  }
161
193
  }
162
194
 
163
- TEST_F(SimpleBufferTest, TestReserve) {
195
+ TEST_F(SimpleBufferTest, Reserve) {
164
196
  SimpleBuffer buffer;
197
+ EXPECT_EQ(0, storage_size(buffer));
198
+
199
+ buffer.WriteString("foo");
200
+ EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
165
201
 
166
202
  // Reserve by expanding the buffer.
167
- const int initial_size = storage_size(buffer);
168
- buffer.Reserve(initial_size + 1);
169
- EXPECT_EQ(2 * initial_size, storage_size(buffer));
203
+ buffer.Reserve(kMinimumSimpleBufferSize + 1);
204
+ EXPECT_EQ(2 * kMinimumSimpleBufferSize, storage_size(buffer));
170
205
 
171
- buffer.AdvanceWritablePtr(initial_size);
172
- buffer.AdvanceReadablePtr(initial_size - 2);
173
- EXPECT_EQ(initial_size, write_idx(buffer));
174
- EXPECT_EQ(2 * initial_size, storage_size(buffer));
206
+ buffer.Clear();
207
+ buffer.AdvanceWritablePtr(kMinimumSimpleBufferSize);
208
+ buffer.AdvanceReadablePtr(kMinimumSimpleBufferSize - 2);
209
+ EXPECT_EQ(kMinimumSimpleBufferSize, write_idx(buffer));
210
+ EXPECT_EQ(2 * kMinimumSimpleBufferSize, storage_size(buffer));
175
211
 
176
212
  // Reserve by moving data around. `storage_size` does not change.
177
- buffer.Reserve(initial_size + 1);
213
+ buffer.Reserve(kMinimumSimpleBufferSize + 1);
178
214
  EXPECT_EQ(2, write_idx(buffer));
179
- EXPECT_EQ(2 * initial_size, storage_size(buffer));
215
+ EXPECT_EQ(2 * kMinimumSimpleBufferSize, storage_size(buffer));
180
216
  }
181
217
 
182
- TEST_F(SimpleBufferTest, TestExtend) {
218
+ TEST_F(SimpleBufferTest, Extend) {
183
219
  SimpleBuffer buffer;
184
220
 
185
221
  // Test a write which should not extend the buffer.
186
222
  EXPECT_EQ(7, buffer.Write(ibuf, 7));
187
223
  EXPECT_EQ(0, read_idx(buffer));
188
224
  EXPECT_EQ(7, write_idx(buffer));
189
- EXPECT_EQ(10, storage_size(buffer));
225
+ EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
190
226
  EXPECT_EQ(7, buffer.ReadableBytes());
191
227
  EXPECT_EQ(0, read_idx(buffer));
192
228
  EXPECT_EQ(7, write_idx(buffer));
193
- EXPECT_EQ(10, storage_size(buffer));
229
+ EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
194
230
  EXPECT_EQ(7, buffer.ReadableBytes());
195
231
  int bytes_written = 7;
196
232
 
@@ -218,18 +254,26 @@ TEST_F(SimpleBufferTest, TestExtend) {
218
254
  }
219
255
  }
220
256
 
221
- TEST_F(SimpleBufferTest, TestClear) {
257
+ TEST_F(SimpleBufferTest, Clear) {
222
258
  SimpleBuffer buffer;
223
259
 
224
260
  buffer.Clear();
261
+
225
262
  EXPECT_EQ(0, read_idx(buffer));
226
263
  EXPECT_EQ(0, write_idx(buffer));
227
- EXPECT_EQ(10, storage_size(buffer));
264
+ EXPECT_EQ(0, storage_size(buffer));
265
+ EXPECT_EQ(0, buffer.ReadableBytes());
266
+
267
+ buffer.WriteString("foo");
268
+ buffer.Clear();
269
+
270
+ EXPECT_EQ(0, read_idx(buffer));
271
+ EXPECT_EQ(0, write_idx(buffer));
272
+ EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
228
273
  EXPECT_EQ(0, buffer.ReadableBytes());
229
- EXPECT_EQ(10, storage_size(buffer));
230
274
  }
231
275
 
232
- TEST_F(SimpleBufferTest, TestLongWrite) {
276
+ TEST_F(SimpleBufferTest, LongWrite) {
233
277
  SimpleBuffer buffer;
234
278
 
235
279
  std::string s1 = "HTTP/1.1 500 Service Unavailable";
@@ -337,11 +381,13 @@ TEST_F(SimpleBufferTest, ReleaseAsSlice) {
337
381
  char* readable_ptr = nullptr;
338
382
  int readable_size = 0;
339
383
  buffer.GetReadablePtr(&readable_ptr, &readable_size);
384
+ EXPECT_EQ(nullptr, readable_ptr);
340
385
  EXPECT_EQ(0, readable_size);
341
386
 
342
387
  buffer.WriteString("def");
343
388
  slice = buffer.ReleaseAsSlice();
344
389
  buffer.GetReadablePtr(&readable_ptr, &readable_size);
390
+ EXPECT_EQ(nullptr, readable_ptr);
345
391
  EXPECT_EQ(0, readable_size);
346
392
  EXPECT_EQ("def", slice.AsStringView());
347
393
  }
@@ -353,6 +399,7 @@ TEST_F(SimpleBufferTest, EmptyBufferReleaseAsSlice) {
353
399
 
354
400
  QuicheMemSlice slice = buffer.ReleaseAsSlice();
355
401
  buffer.GetReadablePtr(&readable_ptr, &readable_size);
402
+ EXPECT_EQ(nullptr, readable_ptr);
356
403
  EXPECT_EQ(0, readable_size);
357
404
  EXPECT_TRUE(slice.empty());
358
405
  }
@@ -2,7 +2,7 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- #include "quiche/common/balsa/standard_header_map.h"
5
+ #include "quiche/balsa/standard_header_map.h"
6
6
 
7
7
  namespace quiche {
8
8
 
@@ -2,8 +2,8 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- #ifndef QUICHE_COMMON_BALSA_STANDARD_HEADER_MAP_H_
6
- #define QUICHE_COMMON_BALSA_STANDARD_HEADER_MAP_H_
5
+ #ifndef QUICHE_BALSA_STANDARD_HEADER_MAP_H_
6
+ #define QUICHE_BALSA_STANDARD_HEADER_MAP_H_
7
7
 
8
8
  #include "absl/container/flat_hash_set.h"
9
9
  #include "absl/strings/string_view.h"
@@ -21,4 +21,4 @@ const StandardHttpHeaderNameSet& GetStandardHeaderSet();
21
21
 
22
22
  } // namespace quiche
23
23
 
24
- #endif // QUICHE_COMMON_BALSA_STANDARD_HEADER_MAP_H_
24
+ #endif // QUICHE_BALSA_STANDARD_HEADER_MAP_H_
@@ -11,12 +11,17 @@
11
11
  #include "quiche_platform_impl/quiche_command_line_flags_impl.h"
12
12
 
13
13
  // Define a command-line flag that can be automatically set via
14
- // QuicheParseCommandLineFlags().
14
+ // QuicheParseCommandLineFlags(). The macro has to be called in the .cc file of
15
+ // a unit test or the CLI tool reading the flag.
15
16
  #define DEFINE_QUICHE_COMMAND_LINE_FLAG(type, name, default_value, help) \
16
17
  DEFINE_QUICHE_COMMAND_LINE_FLAG_IMPL(type, name, default_value, help)
17
18
 
18
19
  namespace quiche {
19
20
 
21
+ // The impl header must provide GetQuicheCommandLineFlag(), which takes
22
+ // PlatformSpecificFlag<T> variable defined by the macro above, and returns the
23
+ // flag value of type T.
24
+
20
25
  // Parses command-line flags, setting flag variables defined using
21
26
  // DEFINE_QUICHE_COMMAND_LINE_FLAG if they appear in the command line, and
22
27
  // returning a list of any non-flag arguments specified in the command line. If
@@ -5,8 +5,12 @@
5
5
  #ifndef QUICHE_COMMON_PLATFORM_API_QUICHE_FLAGS_H_
6
6
  #define QUICHE_COMMON_PLATFORM_API_QUICHE_FLAGS_H_
7
7
 
8
+ #include "quiche_platform_impl/quic_flags_impl.h"
8
9
  #include "quiche_platform_impl/quiche_flags_impl.h"
9
10
 
11
+ // Flags accessed via GetQuicheReloadableFlag/GetQuicheRestartFlag are temporary
12
+ // boolean flags that are used to enable or disable code behavior changes. The
13
+ // current list is available in the quiche/quic/core/quic_flags_list.h file.
10
14
  #define GetQuicheReloadableFlag(module, flag) \
11
15
  GetQuicheReloadableFlagImpl(module, flag)
12
16
  #define SetQuicheReloadableFlag(module, flag, value) \
@@ -15,6 +19,10 @@
15
19
  GetQuicheRestartFlagImpl(module, flag)
16
20
  #define SetQuicheRestartFlag(module, flag, value) \
17
21
  SetQuicheRestartFlagImpl(module, flag, value)
22
+
23
+ // Flags accessed via GetQuicheFlag are permanent flags used to control QUICHE
24
+ // library behavior. The current list is available in the
25
+ // quiche/quic/core/quic_protocol_flags_list.h file.
18
26
  #define GetQuicheFlag(flag) GetQuicheFlagImpl(flag)
19
27
  #define SetQuicheFlag(flag, value) SetQuicheFlagImpl(flag, value)
20
28
 
@@ -26,9 +26,6 @@
26
26
  #define QUICHE_LOG_IF(severity, condition) \
27
27
  QUICHE_LOG_IF_IMPL(severity, condition)
28
28
 
29
- #define QUICHE_PREDICT_FALSE(x) QUICHE_PREDICT_FALSE_IMPL(x)
30
- #define QUICHE_PREDICT_TRUE(x) QUICHE_PREDICT_TRUE_IMPL(x)
31
-
32
29
  // This is a noop in release build.
33
30
  #define QUICHE_NOTREACHED() QUICHE_NOTREACHED_IMPL()
34
31
 
@@ -0,0 +1,29 @@
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/common/platform/api/quiche_lower_case_string.h"
6
+
7
+ #include "absl/strings/string_view.h"
8
+ #include "quiche/common/platform/api/quiche_test.h"
9
+
10
+ namespace quiche::test {
11
+ namespace {
12
+
13
+ TEST(QuicheLowerCaseString, Basic) {
14
+ QuicheLowerCaseString empty("");
15
+ EXPECT_EQ("", empty.get());
16
+
17
+ QuicheLowerCaseString from_lower_case("foo");
18
+ EXPECT_EQ("foo", from_lower_case.get());
19
+
20
+ QuicheLowerCaseString from_mixed_case("BaR");
21
+ EXPECT_EQ("bar", from_mixed_case.get());
22
+
23
+ const absl::string_view kData = "FooBar";
24
+ QuicheLowerCaseString from_string_view(kData);
25
+ EXPECT_EQ("foobar", from_string_view.get());
26
+ }
27
+
28
+ } // namespace
29
+ } // namespace quiche::test
@@ -7,10 +7,12 @@
7
7
 
8
8
  #include "quiche_platform_impl/quiche_test_impl.h"
9
9
 
10
- using QuicheTest = quiche::test::QuicheTestImpl;
10
+ namespace quiche::test {
11
+
12
+ using QuicheTest = QuicheTestImpl;
11
13
 
12
14
  template <class T>
13
- using QuicheTestWithParam = quiche::test::QuicheTestWithParamImpl<T>;
15
+ using QuicheTestWithParam = QuicheTestWithParamImpl<T>;
14
16
 
15
17
  using QuicheFlagSaver = QuicheFlagSaverImpl;
16
18
 
@@ -21,17 +23,13 @@ inline std::string QuicheGetTestMemoryCachePath() {
21
23
  return QuicheGetTestMemoryCachePathImpl();
22
24
  }
23
25
 
24
- namespace quiche {
25
- namespace test {
26
-
27
26
  // Returns the path to quiche/common directory where the test data could be
28
27
  // located.
29
28
  inline std::string QuicheGetCommonSourcePath() {
30
29
  return QuicheGetCommonSourcePathImpl();
31
30
  }
32
31
 
33
- } // namespace test
34
- } // namespace quiche
32
+ } // namespace quiche::test
35
33
 
36
34
  #define EXPECT_QUICHE_DEBUG_DEATH(condition, message) \
37
35
  EXPECT_QUICHE_DEBUG_DEATH_IMPL(condition, message)
@@ -5,7 +5,7 @@
5
5
  #ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUIC_FLAGS_IMPL_H_
6
6
  #define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUIC_FLAGS_IMPL_H_
7
7
 
8
- #include <string>
8
+ #include <cstdint>
9
9
 
10
10
  #include "quiche/common/platform/api/quiche_export.h"
11
11
 
@@ -7,8 +7,9 @@
7
7
 
8
8
  #include "quiche/common/platform/api/quiche_logging.h"
9
9
 
10
- #define QUICHE_BUG_IMPL(b) QUICHE_LOG(DFATAL)
11
- #define QUICHE_BUG_IF_IMPL(b, condition) QUICHE_LOG_IF(DFATAL, condition)
10
+ #define QUICHE_BUG_IMPL(b) QUICHE_LOG(DFATAL) << #b ": "
11
+ #define QUICHE_BUG_IF_IMPL(b, condition) \
12
+ QUICHE_LOG_IF(DFATAL, condition) << #b ": "
12
13
  #define QUICHE_PEER_BUG_IMPL(b) QUICHE_LOG(DFATAL)
13
14
  #define QUICHE_PEER_BUG_IF_IMPL(b, condition) QUICHE_LOG_IF(DFATAL, condition)
14
15