@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.
- package/.github/workflows/npm-publish-packages.yml +0 -0
- package/CMakeLists.txt +2 -0
- package/package.json +1 -1
- package/readme.md +0 -0
- package/src/http3serversession.h +1 -1
- package/src/webtransport.js +4 -2
- package/third_party/boringssl/src/CMakeLists.txt +9 -12
- package/third_party/boringssl/src/crypto/CMakeLists.txt +2 -3
- package/third_party/boringssl/src/crypto/asn1/time_support.c +206 -206
- package/third_party/boringssl/src/crypto/bio/socket_helper.c +124 -122
- package/third_party/boringssl/src/crypto/evp/digestsign.c +268 -231
- package/third_party/boringssl/src/crypto/evp/p_ec.c +286 -286
- package/third_party/boringssl/src/crypto/fipsmodule/aes/key_wrap.c +246 -236
- package/third_party/boringssl/src/crypto/fipsmodule/aes/mode_wrappers.c +124 -122
- package/third_party/boringssl/src/crypto/fipsmodule/bcm.c +3 -0
- package/third_party/boringssl/src/crypto/fipsmodule/bn/bytes.c +246 -230
- package/third_party/boringssl/src/crypto/fipsmodule/bn/internal.h +734 -715
- package/third_party/boringssl/src/crypto/fipsmodule/bn/random.c +349 -341
- package/third_party/boringssl/src/crypto/fipsmodule/cipher/cipher.c +670 -648
- package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +1504 -1472
- package/third_party/boringssl/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +435 -446
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_3des_cmac_tests.txt +0 -0
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes128_cmac_tests.txt +0 -0
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes192_cmac_tests.txt +0 -0
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes256_cmac_tests.txt +0 -0
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +318 -278
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cmac_test.cc +268 -267
- package/third_party/boringssl/src/crypto/fipsmodule/dh/dh.c +5 -1
- package/third_party/boringssl/src/crypto/fipsmodule/ec/ec.c +11 -17
- package/third_party/boringssl/src/crypto/fipsmodule/ec/ec_key.c +15 -4
- package/third_party/boringssl/src/crypto/fipsmodule/ec/internal.h +2 -6
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p224-64.c +1164 -1180
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p256-nistz.c +3 -3
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p256-nistz_test.cc +2 -2
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p256.c +44 -33
- package/third_party/boringssl/src/crypto/fipsmodule/ec/scalar.c +169 -175
- package/third_party/boringssl/src/crypto/fipsmodule/ec/simple.c +352 -357
- package/third_party/boringssl/src/crypto/fipsmodule/ecdh/ecdh.c +4 -0
- package/third_party/boringssl/src/crypto/fipsmodule/ecdsa/ecdsa.c +14 -9
- package/third_party/boringssl/src/crypto/fipsmodule/hmac/hmac.c +256 -235
- package/third_party/boringssl/src/crypto/fipsmodule/rand/ctrdrbg.c +204 -202
- package/third_party/boringssl/src/crypto/fipsmodule/rsa/padding.c +702 -695
- package/third_party/boringssl/src/crypto/fipsmodule/rsa/rsa_impl.c +7 -2
- package/third_party/boringssl/src/crypto/fipsmodule/self_check/self_check.c +7 -0
- package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator.c +333 -0
- package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator_test.cc +2410 -0
- package/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c +359 -357
- package/third_party/boringssl/src/crypto/fipsmodule/sha/sha256.c +325 -321
- package/third_party/boringssl/src/crypto/fipsmodule/sha/sha512.c +510 -508
- package/third_party/boringssl/src/crypto/fipsmodule/tls/kdf.c +177 -165
- package/third_party/boringssl/src/crypto/internal.h +13 -0
- package/third_party/boringssl/src/crypto/trust_token/trust_token_test.cc +884 -884
- package/third_party/boringssl/src/crypto/x509/internal.h +0 -2
- package/third_party/boringssl/src/crypto/x509/t_crl.c +148 -148
- package/third_party/boringssl/src/crypto/x509/t_req.c +249 -250
- package/third_party/boringssl/src/crypto/x509/t_x509.c +2 -3
- package/third_party/boringssl/src/crypto/x509/x509_req.c +262 -304
- package/third_party/boringssl/src/crypto/x509/x509_set.c +250 -240
- package/third_party/boringssl/src/crypto/x509/x509_test.cc +466 -4
- package/third_party/boringssl/src/crypto/x509/x509cset.c +292 -279
- package/third_party/boringssl/src/crypto/x509/x509rset.c +89 -86
- package/third_party/boringssl/src/crypto/x509/x_crl.c +37 -125
- package/third_party/boringssl/src/crypto/x509/x_req.c +114 -109
- package/third_party/boringssl/src/crypto/x509/x_x509.c +394 -394
- package/third_party/boringssl/src/crypto/x509v3/v3_akey.c +11 -16
- package/third_party/boringssl/src/crypto/x509v3/v3_alt.c +644 -642
- package/third_party/boringssl/src/crypto/x509v3/v3_bcons.c +130 -133
- package/third_party/boringssl/src/crypto/x509v3/v3_bitst.c +149 -144
- package/third_party/boringssl/src/crypto/x509v3/v3_cpols.c +496 -500
- package/third_party/boringssl/src/crypto/x509v3/v3_enum.c +105 -106
- package/third_party/boringssl/src/crypto/x509v3/v3_ia5.c +126 -121
- package/third_party/boringssl/src/crypto/x509v3/v3_info.c +206 -218
- package/third_party/boringssl/src/crypto/x509v3/v3_int.c +97 -91
- package/third_party/boringssl/src/crypto/x509v3/v3_pci.c +290 -289
- package/third_party/boringssl/src/crypto/x509v3/v3_skey.c +161 -156
- package/third_party/boringssl/src/crypto/x509v3/v3_utl.c +5 -3
- package/third_party/boringssl/src/include/openssl/aead.h +480 -480
- package/third_party/boringssl/src/include/openssl/asn1.h +2 -0
- package/third_party/boringssl/src/include/openssl/base.h +1 -1
- package/third_party/boringssl/src/include/openssl/service_indicator.h +96 -0
- package/third_party/boringssl/src/include/openssl/ssl.h +7 -0
- package/third_party/boringssl/src/include/openssl/x509.h +11 -33
- package/third_party/boringssl/src/include/openssl/x509v3.h +990 -1018
- package/third_party/boringssl/src/sources.cmake +4 -4
- package/third_party/boringssl/src/ssl/internal.h +10 -0
- package/third_party/boringssl/src/ssl/ssl_lib.cc +3081 -3072
- package/third_party/boringssl/src/ssl/ssl_test.cc +46 -0
- package/third_party/boringssl/src/ssl/tls13_server.cc +4 -6
- package/third_party/boringssl/src/util/bot/DEPS +14 -27
- package/third_party/boringssl/src/util/bot/UPDATING +3 -9
- package/third_party/boringssl/src/util/bot/update_clang.py +172 -172
- package/third_party/boringssl/src/util/bot/vs_toolchain.py +3 -3
- package/third_party/quiche/.bazelrc +8 -0
- package/third_party/quiche/BUILD.bazel +7 -0
- package/third_party/quiche/WHITESPACE +3 -1
- package/third_party/quiche/WORKSPACE.bazel +87 -0
- package/third_party/quiche/build/BUILD.bazel +7 -0
- package/third_party/quiche/build/source_list.bzl +1511 -0
- package/third_party/quiche/build/source_list.gni +1511 -0
- package/third_party/quiche/build/source_list.json +1511 -0
- package/third_party/quiche/build/test.bzl +26 -0
- package/third_party/quiche/build/zlib.BUILD +25 -0
- package/third_party/quiche/quiche/BUILD.bazel +270 -0
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_enums.cc +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_enums.h +7 -7
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame.cc +39 -18
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame.h +11 -10
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame_test.cc +67 -63
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers.cc +13 -12
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers.h +16 -8
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers_test.cc +9 -9
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_visitor_interface.h +4 -4
- package/third_party/quiche/quiche/{common/balsa → balsa}/framer_interface.h +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/header_api.h +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties.cc +1 -1
- package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties.h +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties_test.cc +1 -1
- package/third_party/quiche/quiche/{common/balsa → balsa}/http_validation_policy.cc +1 -1
- package/third_party/quiche/quiche/{common/balsa → balsa}/http_validation_policy.h +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/noop_balsa_visitor.h +4 -4
- package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer.cc +22 -29
- package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer.h +18 -16
- package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer_test.cc +79 -32
- package/third_party/quiche/quiche/{common/balsa → balsa}/standard_header_map.cc +1 -1
- package/third_party/quiche/quiche/{common/balsa → balsa}/standard_header_map.h +3 -3
- package/third_party/quiche/quiche/common/platform/api/quiche_command_line_flags.h +6 -1
- package/third_party/quiche/quiche/common/platform/api/quiche_flags.h +8 -0
- package/third_party/quiche/quiche/common/platform/api/quiche_logging.h +0 -3
- package/third_party/quiche/quiche/common/platform/api/quiche_lower_case_string_test.cc +29 -0
- package/third_party/quiche/quiche/common/platform/api/quiche_test.h +5 -7
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quic_flags_impl.h +1 -1
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_bug_tracker_impl.h +3 -2
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.cc +41 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.h +33 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_expect_bug_impl.h +15 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h +84 -50
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_lower_case_string_impl.h +25 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.cc +1 -1
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.cc +25 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.h +56 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_output_impl.h +27 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_thread_impl.h +26 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_url_utils_impl.cc +1 -0
- package/third_party/quiche/quiche/common/quiche_buffer_allocator_test.cc +1 -1
- package/third_party/quiche/quiche/common/quiche_mem_slice_storage.h +2 -3
- package/third_party/quiche/quiche/common/structured_headers.cc +14 -12
- package/third_party/quiche/quiche/http2/adapter/event_forwarder.cc +7 -5
- package/third_party/quiche/quiche/http2/adapter/event_forwarder.h +4 -2
- package/third_party/quiche/quiche/http2/adapter/event_forwarder_test.cc +14 -9
- package/third_party/quiche/quiche/http2/adapter/header_validator.cc +43 -19
- package/third_party/quiche/quiche/http2/adapter/header_validator.h +11 -40
- package/third_party/quiche/quiche/http2/adapter/header_validator_base.h +69 -0
- package/third_party/quiche/quiche/http2/adapter/header_validator_test.cc +73 -1
- package/third_party/quiche/quiche/http2/adapter/nghttp2_adapter_test.cc +66 -0
- package/third_party/quiche/quiche/http2/adapter/nghttp2_session_test.cc +8 -5
- package/third_party/quiche/quiche/http2/adapter/nghttp2_test.cc +1 -1
- package/third_party/quiche/quiche/http2/adapter/noop_header_validator.cc +22 -0
- package/third_party/quiche/quiche/http2/adapter/noop_header_validator.h +25 -0
- package/third_party/quiche/quiche/http2/adapter/noop_header_validator_test.cc +523 -0
- package/third_party/quiche/quiche/http2/adapter/oghttp2_adapter_test.cc +186 -5
- package/third_party/quiche/quiche/http2/adapter/oghttp2_session.cc +37 -43
- package/third_party/quiche/quiche/http2/adapter/oghttp2_session.h +22 -23
- package/third_party/quiche/quiche/http2/adapter/test_utils.cc +1 -1
- package/third_party/quiche/quiche/http2/adapter/window_manager_test.cc +11 -5
- package/third_party/quiche/quiche/http2/core/http2_trace_logging.cc +13 -11
- package/third_party/quiche/quiche/http2/core/http2_trace_logging.h +5 -4
- package/third_party/quiche/quiche/http2/core/priority_write_scheduler.h +42 -36
- package/third_party/quiche/quiche/http2/core/priority_write_scheduler_test.cc +2 -2
- package/third_party/quiche/quiche/http2/decoder/decode_buffer_test.cc +9 -9
- package/third_party/quiche/quiche/http2/decoder/decode_http2_structures_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/http2_frame_decoder_test.cc +14 -14
- package/third_party/quiche/quiche/http2/decoder/http2_structure_decoder_test.cc +17 -17
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/continuation_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/data_payload_decoder_test.cc +2 -2
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/goaway_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/headers_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/ping_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/priority_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/settings_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/unknown_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/window_update_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_block_decoder_test.cc +2 -2
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_state_test.cc +8 -8
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_string_buffer_test.cc +4 -3
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_tables_test.cc +17 -17
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_test.cc +25 -25
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_entry_decoder_test.cc +2 -2
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_entry_type_decoder_test.cc +7 -6
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_string_decoder_test.cc +6 -6
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_whole_entry_buffer_test.cc +1 -1
- package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_decoder_test.cc +2 -2
- package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_encoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_transcoder_test.cc +5 -5
- package/third_party/quiche/quiche/http2/hpack/varint/hpack_varint_decoder_test.cc +4 -4
- package/third_party/quiche/quiche/http2/hpack/varint/hpack_varint_round_trip_test.cc +1 -1
- package/third_party/quiche/quiche/http2/http2_constants_test.cc +1 -1
- package/third_party/quiche/quiche/http2/http2_structures_test.cc +23 -22
- package/third_party/quiche/quiche/http2/test_tools/frame_decoder_state_test_util.cc +1 -1
- package/third_party/quiche/quiche/http2/test_tools/frame_decoder_state_test_util.h +1 -1
- package/third_party/quiche/quiche/http2/test_tools/frame_parts.cc +38 -38
- package/third_party/quiche/quiche/http2/test_tools/hpack_block_collector.cc +15 -15
- package/third_party/quiche/quiche/http2/test_tools/hpack_entry_collector.cc +24 -22
- package/third_party/quiche/quiche/http2/test_tools/hpack_string_collector.cc +5 -5
- package/third_party/quiche/quiche/http2/test_tools/http2_frame_builder_test.cc +70 -89
- package/third_party/quiche/quiche/http2/test_tools/payload_decoder_base_test_util.cc +1 -1
- package/third_party/quiche/quiche/http2/test_tools/payload_decoder_base_test_util.h +29 -26
- package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test.cc → random_decoder_test_base.cc} +13 -10
- package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test.h → random_decoder_test_base.h} +15 -17
- package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test_test.cc → random_decoder_test_base_test.cc} +1 -1
- package/third_party/quiche/quiche/http2/test_tools/verify_macros.h +32 -0
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.cc +2 -1
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_simulator_test.cc +3 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender_test.cc +3 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats.cc +3 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats.h +2 -1
- package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats_test.cc +2 -13
- package/third_party/quiche/quiche/quic/core/crypto/certificate_view.cc +15 -0
- package/third_party/quiche/quiche/quic/core/crypto/certificate_view.h +7 -0
- package/third_party/quiche/quiche/quic/core/crypto/certificate_view_test.cc +16 -0
- package/third_party/quiche/quiche/quic/core/crypto/crypto_protocol.h +1 -0
- package/third_party/quiche/quiche/quic/core/crypto/proof_source.h +2 -2
- package/third_party/quiche/quiche/quic/core/crypto/proof_source_x509.cc +3 -5
- package/third_party/quiche/quiche/quic/core/crypto/proof_source_x509.h +1 -2
- package/third_party/quiche/quiche/quic/core/crypto/quic_crypto_server_config.cc +1 -1
- package/third_party/quiche/quiche/quic/core/crypto/quic_crypto_server_config.h +3 -3
- package/third_party/quiche/quiche/quic/core/frames/quic_blocked_frame.cc +2 -8
- package/third_party/quiche/quiche/quic/core/frames/quic_blocked_frame.h +0 -1
- package/third_party/quiche/quiche/quic/core/frames/quic_crypto_frame.h +2 -0
- package/third_party/quiche/quiche/quic/core/frames/quic_frames_test.cc +2 -1
- package/third_party/quiche/quiche/quic/core/http/capsule.cc +2 -22
- package/third_party/quiche/quiche/quic/core/http/capsule.h +0 -2
- package/third_party/quiche/quiche/quic/core/http/capsule_test.cc +1 -2
- package/third_party/quiche/quiche/quic/core/http/end_to_end_test.cc +148 -57
- package/third_party/quiche/quiche/quic/core/http/http_constants.cc +1 -1
- package/third_party/quiche/quiche/quic/core/http/http_constants.h +2 -2
- package/third_party/quiche/quiche/quic/core/http/quic_header_list_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/http/quic_headers_stream_test.cc +18 -14
- package/third_party/quiche/quiche/quic/core/http/quic_send_control_stream.h +2 -1
- package/third_party/quiche/quiche/quic/core/http/quic_send_control_stream_test.cc +3 -7
- package/third_party/quiche/quiche/quic/core/http/quic_server_session_base.h +4 -0
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.cc +47 -65
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.h +5 -17
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session_test.cc +63 -54
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.cc +34 -91
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.h +1 -9
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream_test.cc +27 -134
- package/third_party/quiche/quiche/quic/core/http/spdy_utils.cc +0 -41
- package/third_party/quiche/quiche/quic/core/http/spdy_utils.h +0 -9
- package/third_party/quiche/quiche/quic/core/http/spdy_utils_test.cc +0 -32
- package/third_party/quiche/quiche/quic/core/http/web_transport_http3.cc +0 -1
- package/third_party/quiche/quiche/quic/core/packet_number_indexed_queue_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/qpack/qpack_header_table.cc +2 -1
- package/third_party/quiche/quiche/quic/core/qpack/qpack_send_stream.h +2 -1
- package/third_party/quiche/quiche/quic/core/quic_arena_scoped_ptr_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_connection.cc +68 -46
- package/third_party/quiche/quiche/quic/core/quic_connection.h +7 -6
- package/third_party/quiche/quiche/quic/core/quic_connection_context_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_connection_id_manager_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_connection_id_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_connection_test.cc +45 -132
- package/third_party/quiche/quiche/quic/core/quic_constants.h +0 -7
- package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.cc +11 -3
- package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.h +1 -1
- package/third_party/quiche/quiche/quic/core/quic_control_frame_manager_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker.cc +13 -1
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker.h +3 -0
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_stream.cc +6 -0
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_stream.h +8 -0
- package/third_party/quiche/quiche/quic/core/quic_crypto_server_stream.cc +26 -13
- package/third_party/quiche/quiche/quic/core/quic_crypto_server_stream.h +5 -2
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream.cc +55 -47
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream.h +15 -10
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream_test.cc +34 -5
- package/third_party/quiche/quiche/quic/core/quic_dispatcher.cc +20 -11
- package/third_party/quiche/quiche/quic/core/quic_dispatcher_test.cc +37 -13
- package/third_party/quiche/quiche/quic/core/quic_flags_list.h +6 -10
- package/third_party/quiche/quiche/quic/core/quic_flow_controller.cc +3 -3
- package/third_party/quiche/quiche/quic/core/quic_flow_controller.h +2 -2
- package/third_party/quiche/quiche/quic/core/quic_flow_controller_test.cc +15 -10
- package/third_party/quiche/quiche/quic/core/quic_framer.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_one_block_arena.h +3 -2
- package/third_party/quiche/quiche/quic/core/quic_one_block_arena_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_packet_creator.cc +3 -11
- package/third_party/quiche/quiche/quic/core/quic_packet_creator.h +0 -8
- package/third_party/quiche/quiche/quic/core/quic_ping_manager.cc +14 -14
- package/third_party/quiche/quiche/quic/core/quic_ping_manager_test.cc +48 -0
- package/third_party/quiche/quiche/quic/core/quic_received_packet_manager.cc +3 -18
- package/third_party/quiche/quiche/quic/core/quic_received_packet_manager_test.cc +4 -14
- package/third_party/quiche/quiche/quic/core/quic_server_id_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_session.cc +4 -4
- package/third_party/quiche/quiche/quic/core/quic_session.h +1 -1
- package/third_party/quiche/quiche/quic/core/quic_session_test.cc +21 -1
- package/third_party/quiche/quiche/quic/core/quic_stream.cc +4 -7
- package/third_party/quiche/quiche/quic/core/quic_stream_test.cc +2 -4
- package/third_party/quiche/quiche/quic/core/quic_trace_visitor_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_types.h +3 -8
- package/third_party/quiche/quiche/quic/core/quic_udp_socket_posix.cc +5 -4
- package/third_party/quiche/quiche/quic/core/quic_unacked_packet_map_test.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_utils.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_utils.h +2 -2
- package/third_party/quiche/quiche/quic/core/quic_versions_test.cc +0 -1
- package/third_party/quiche/quiche/quic/core/tls_client_handshaker.cc +13 -0
- package/third_party/quiche/quiche/quic/core/tls_client_handshaker.h +2 -0
- package/third_party/quiche/quiche/quic/core/tls_server_handshaker.cc +17 -3
- package/third_party/quiche/quiche/quic/core/tls_server_handshaker.h +3 -1
- package/third_party/quiche/quiche/quic/core/uber_received_packet_manager_test.cc +18 -10
- package/third_party/quiche/quiche/quic/masque/masque_client_bin.cc +6 -4
- package/third_party/quiche/quiche/quic/masque/masque_client_session.cc +23 -7
- package/third_party/quiche/quiche/quic/masque/masque_client_session.h +1 -1
- package/third_party/quiche/quiche/quic/masque/masque_server_backend.cc +13 -0
- package/third_party/quiche/quiche/quic/masque/masque_server_backend.h +2 -0
- package/third_party/quiche/quiche/quic/masque/masque_server_bin.cc +5 -4
- package/third_party/quiche/quiche/quic/masque/masque_server_session.cc +30 -40
- package/third_party/quiche/quiche/quic/masque/masque_server_session.h +1 -1
- package/third_party/quiche/quiche/quic/platform/api/quic_export.h +4 -4
- package/third_party/quiche/quiche/quic/platform/api/quic_flags.h +0 -1
- package/third_party/quiche/quiche/quic/platform/api/quic_logging.h +0 -6
- package/third_party/quiche/quiche/quic/platform/api/quic_test.h +6 -5
- package/third_party/quiche/quiche/quic/qbone/bonnet/icmp_reachable_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/bonnet/mock_qbone_tunnel.h +2 -0
- package/third_party/quiche/quiche/quic/qbone/bonnet/qbone_tunnel_interface.h +2 -0
- package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_controller_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_packet_exchanger_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/platform/netlink_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/platform/tcp_packet.cc +5 -4
- package/third_party/quiche/quiche/quic/qbone/qbone_client_session.cc +4 -2
- package/third_party/quiche/quiche/quic/qbone/qbone_packet_processor.cc +2 -1
- package/third_party/quiche/quiche/quic/qbone/qbone_packet_processor_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/qbone_server_session.cc +4 -2
- package/third_party/quiche/quiche/quic/qbone/qbone_session_base.cc +3 -2
- package/third_party/quiche/quiche/quic/qbone/qbone_stream.cc +4 -4
- package/third_party/quiche/quiche/quic/test_tools/quic_connection_peer.cc +1 -1
- package/third_party/quiche/quiche/quic/test_tools/quic_http_response_cache_data/test.example.com/index.html +63 -0
- package/third_party/quiche/quiche/quic/test_tools/quic_http_response_cache_data/test.example.com/map.html +65 -0
- package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.cc +4 -3
- package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.h +18 -1
- package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint_test.cc +1 -1
- package/third_party/quiche/quiche/quic/test_tools/simulator/simulator_test.cc +1 -1
- package/third_party/quiche/quiche/quic/test_tools/test_ticket_crypter.cc +1 -1
- package/third_party/quiche/quiche/quic/test_tools/test_ticket_crypter.h +2 -2
- package/third_party/quiche/quiche/quic/{core/crypto → tools}/crypto_message_printer_bin.cc +0 -0
- package/third_party/quiche/quiche/quic/{core/qpack → tools}/qpack_offline_decoder_bin.cc +0 -0
- package/third_party/quiche/quiche/quic/tools/quic_client_interop_test_bin.cc +4 -3
- package/third_party/quiche/quiche/quic/tools/quic_memory_cache_backend_test.cc +3 -31
- package/third_party/quiche/quiche/quic/tools/quic_packet_printer_bin.cc +2 -2
- package/third_party/quiche/quiche/quic/tools/quic_simple_server_session.h +1 -1
- package/third_party/quiche/quiche/quic/tools/quic_simple_server_session_test.cc +1 -1
- package/third_party/quiche/quiche/quic/tools/quic_toy_client.cc +52 -38
- package/third_party/quiche/quiche/quic/tools/quic_toy_server.cc +10 -7
- package/third_party/quiche/quiche/quic/tools/simple_ticket_crypter.cc +1 -1
- package/third_party/quiche/quiche/quic/tools/simple_ticket_crypter.h +1 -1
- package/third_party/quiche/quiche/quic/tools/web_transport_test_visitors.h +3 -2
- package/third_party/quiche/quiche/spdy/core/array_output_buffer.h +1 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_encoder_test.cc +2 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_header_table_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_round_trip_test.cc +2 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_static_table_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/http2_frame_decoder_adapter.cc +8 -6
- package/third_party/quiche/quiche/spdy/core/http2_frame_decoder_adapter.h +17 -6
- package/third_party/quiche/quiche/spdy/core/metadata_extension.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/metadata_extension_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/spdy_framer_test.cc +21 -17
- package/third_party/quiche/quiche/spdy/core/spdy_intrusive_list_test.cc +3 -3
- package/third_party/quiche/quiche/spdy/core/spdy_no_op_visitor.h +6 -4
- package/third_party/quiche/quiche/spdy/core/spdy_pinnable_buffer_piece_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/spdy_prefixed_buffer_reader_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/spdy_protocol_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/test_tools/mock_spdy_framer_visitor.h +5 -4
- package/third_party/boringssl/src/util/bot/cmake-win32.zip.sha1 +0 -1
- package/third_party/quiche/quiche/common/platform/api/quiche_mock_log.h +0 -18
- package/third_party/quiche/quiche/common/platform/api/quiche_test_helpers.h +0 -8
- package/third_party/quiche/quiche/quic/platform/api/quic_mock_log.h +0 -19
- package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_dispatcher.cc +0 -51
- package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_dispatcher.h +0 -41
- package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_session.cc +0 -168
- package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_session.h +0 -78
|
@@ -133,11 +133,11 @@ TEST_P(QuicSendControlStreamTest, WriteSettings) {
|
|
|
133
133
|
if ((!GetQuicReloadableFlag(quic_verify_request_headers_2) ||
|
|
134
134
|
perspective() == Perspective::IS_CLIENT) &&
|
|
135
135
|
QuicSpdySessionPeer::LocalHttpDatagramSupport(&session_) ==
|
|
136
|
-
HttpDatagramSupport::
|
|
136
|
+
HttpDatagramSupport::kDraft04) {
|
|
137
137
|
expected_write_data = absl::HexStringToBytes(
|
|
138
138
|
"00" // stream type: control stream
|
|
139
139
|
"04" // frame type: SETTINGS frame
|
|
140
|
-
"
|
|
140
|
+
"0b" // frame length
|
|
141
141
|
"01" // SETTINGS_QPACK_MAX_TABLE_CAPACITY
|
|
142
142
|
"40ff" // 255
|
|
143
143
|
"06" // SETTINGS_MAX_HEADER_LIST_SIZE
|
|
@@ -146,8 +146,6 @@ TEST_P(QuicSendControlStreamTest, WriteSettings) {
|
|
|
146
146
|
"10" // 16
|
|
147
147
|
"4040" // 0x40 as the reserved settings id
|
|
148
148
|
"14" // 20
|
|
149
|
-
"4276" // SETTINGS_H3_DATAGRAM_DRAFT00
|
|
150
|
-
"01" // 1
|
|
151
149
|
"800ffd277" // SETTINGS_H3_DATAGRAM_DRAFT04
|
|
152
150
|
"01" // 1
|
|
153
151
|
"4040" // 0x40 as the reserved frame type
|
|
@@ -183,7 +181,7 @@ TEST_P(QuicSendControlStreamTest, WriteSettings) {
|
|
|
183
181
|
expected_write_data = absl::HexStringToBytes(
|
|
184
182
|
"00" // stream type: control stream
|
|
185
183
|
"04" // frame type: SETTINGS frame
|
|
186
|
-
"
|
|
184
|
+
"0e" // frame length
|
|
187
185
|
"01" // SETTINGS_QPACK_MAX_TABLE_CAPACITY
|
|
188
186
|
"40ff" // 255
|
|
189
187
|
"06" // SETTINGS_MAX_HEADER_LIST_SIZE
|
|
@@ -194,8 +192,6 @@ TEST_P(QuicSendControlStreamTest, WriteSettings) {
|
|
|
194
192
|
"01" // 1
|
|
195
193
|
"4040" // 0x40 as the reserved settings id
|
|
196
194
|
"14" // 20
|
|
197
|
-
"4276" // SETTINGS_H3_DATAGRAM_DRAFT00
|
|
198
|
-
"01" // 1
|
|
199
195
|
"800ffd277" // SETTINGS_H3_DATAGRAM_DRAFT04
|
|
200
196
|
"01" // 1
|
|
201
197
|
"4040" // 0x40 as the reserved frame type
|
|
@@ -75,6 +75,10 @@ class QUIC_EXPORT_PRIVATE QuicServerSessionBase : public QuicSpdySession {
|
|
|
75
75
|
|
|
76
76
|
QuicSSLConfig GetSSLConfig() const override;
|
|
77
77
|
|
|
78
|
+
bool enable_sending_bandwidth_estimate_when_network_idle() const {
|
|
79
|
+
return enable_sending_bandwidth_estimate_when_network_idle_;
|
|
80
|
+
}
|
|
81
|
+
|
|
78
82
|
protected:
|
|
79
83
|
// QuicSession methods(override them with return type of QuicSpdyStream*):
|
|
80
84
|
QuicCryptoServerStreamBase* GetMutableCryptoStream() override;
|
|
@@ -318,8 +318,9 @@ class QuicSpdySession::SpdyFramerVisitor
|
|
|
318
318
|
QUIC_INVALID_HEADERS_STREAM_DATA);
|
|
319
319
|
}
|
|
320
320
|
|
|
321
|
-
void OnHeaders(SpdyStreamId stream_id,
|
|
322
|
-
|
|
321
|
+
void OnHeaders(SpdyStreamId stream_id, size_t /*payload_length*/,
|
|
322
|
+
bool has_priority, int weight,
|
|
323
|
+
SpdyStreamId /*parent_stream_id*/, bool /*exclusive*/,
|
|
323
324
|
bool fin, bool /*end*/) override {
|
|
324
325
|
if (!session_->IsConnected()) {
|
|
325
326
|
return;
|
|
@@ -362,7 +363,8 @@ class QuicSpdySession::SpdyFramerVisitor
|
|
|
362
363
|
session_->OnPushPromise(stream_id, promised_stream_id);
|
|
363
364
|
}
|
|
364
365
|
|
|
365
|
-
void OnContinuation(SpdyStreamId /*stream_id*/,
|
|
366
|
+
void OnContinuation(SpdyStreamId /*stream_id*/, size_t /*payload_size*/,
|
|
367
|
+
bool /*end*/) override {}
|
|
366
368
|
|
|
367
369
|
void OnPriority(SpdyStreamId stream_id, SpdyStreamId /* parent_id */,
|
|
368
370
|
int weight, bool /* exclusive */) override {
|
|
@@ -516,15 +518,19 @@ void QuicSpdySession::FillSettingsFrame() {
|
|
|
516
518
|
settings_.values[SETTINGS_MAX_FIELD_SECTION_SIZE] =
|
|
517
519
|
max_inbound_header_list_size_;
|
|
518
520
|
if (version().UsesHttp3()) {
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
521
|
+
switch (LocalHttpDatagramSupport()) {
|
|
522
|
+
case HttpDatagramSupport::kNone:
|
|
523
|
+
break;
|
|
524
|
+
case HttpDatagramSupport::kDraft04:
|
|
525
|
+
settings_.values[SETTINGS_H3_DATAGRAM_DRAFT04] = 1;
|
|
526
|
+
break;
|
|
527
|
+
case HttpDatagramSupport::kDraft09:
|
|
528
|
+
settings_.values[SETTINGS_H3_DATAGRAM_DRAFT09] = 1;
|
|
529
|
+
break;
|
|
530
|
+
case HttpDatagramSupport::kDraft04And09:
|
|
531
|
+
settings_.values[SETTINGS_H3_DATAGRAM_DRAFT04] = 1;
|
|
532
|
+
settings_.values[SETTINGS_H3_DATAGRAM_DRAFT09] = 1;
|
|
533
|
+
break;
|
|
528
534
|
}
|
|
529
535
|
}
|
|
530
536
|
if (WillNegotiateWebTransport()) {
|
|
@@ -1141,15 +1147,15 @@ bool QuicSpdySession::OnSetting(uint64_t id, uint64_t value) {
|
|
|
1141
1147
|
absl::StrCat("received HTTP/2 specific setting in HTTP/3 session: ",
|
|
1142
1148
|
id));
|
|
1143
1149
|
return false;
|
|
1144
|
-
case
|
|
1150
|
+
case SETTINGS_H3_DATAGRAM_DRAFT04: {
|
|
1145
1151
|
HttpDatagramSupport local_http_datagram_support =
|
|
1146
1152
|
LocalHttpDatagramSupport();
|
|
1147
|
-
if (local_http_datagram_support != HttpDatagramSupport::
|
|
1148
|
-
local_http_datagram_support != HttpDatagramSupport::
|
|
1153
|
+
if (local_http_datagram_support != HttpDatagramSupport::kDraft04 &&
|
|
1154
|
+
local_http_datagram_support != HttpDatagramSupport::kDraft04And09) {
|
|
1149
1155
|
break;
|
|
1150
1156
|
}
|
|
1151
1157
|
QUIC_DVLOG(1) << ENDPOINT
|
|
1152
|
-
<< "
|
|
1158
|
+
<< "SETTINGS_H3_DATAGRAM_DRAFT04 received with value "
|
|
1153
1159
|
<< value;
|
|
1154
1160
|
if (!version().UsesHttp3()) {
|
|
1155
1161
|
break;
|
|
@@ -1157,21 +1163,21 @@ bool QuicSpdySession::OnSetting(uint64_t id, uint64_t value) {
|
|
|
1157
1163
|
if (!VerifySettingIsZeroOrOne(id, value)) {
|
|
1158
1164
|
return false;
|
|
1159
1165
|
}
|
|
1160
|
-
if (value && http_datagram_support_ != HttpDatagramSupport::
|
|
1161
|
-
// If both draft-
|
|
1162
|
-
http_datagram_support_ = HttpDatagramSupport::
|
|
1166
|
+
if (value && http_datagram_support_ != HttpDatagramSupport::kDraft09) {
|
|
1167
|
+
// If both draft-04 and draft-09 are supported, use draft-09.
|
|
1168
|
+
http_datagram_support_ = HttpDatagramSupport::kDraft04;
|
|
1163
1169
|
}
|
|
1164
1170
|
break;
|
|
1165
1171
|
}
|
|
1166
|
-
case
|
|
1172
|
+
case SETTINGS_H3_DATAGRAM_DRAFT09: {
|
|
1167
1173
|
HttpDatagramSupport local_http_datagram_support =
|
|
1168
1174
|
LocalHttpDatagramSupport();
|
|
1169
|
-
if (local_http_datagram_support != HttpDatagramSupport::
|
|
1170
|
-
local_http_datagram_support != HttpDatagramSupport::
|
|
1175
|
+
if (local_http_datagram_support != HttpDatagramSupport::kDraft09 &&
|
|
1176
|
+
local_http_datagram_support != HttpDatagramSupport::kDraft04And09) {
|
|
1171
1177
|
break;
|
|
1172
1178
|
}
|
|
1173
1179
|
QUIC_DVLOG(1) << ENDPOINT
|
|
1174
|
-
<< "
|
|
1180
|
+
<< "SETTINGS_H3_DATAGRAM_DRAFT09 received with value "
|
|
1175
1181
|
<< value;
|
|
1176
1182
|
if (!version().UsesHttp3()) {
|
|
1177
1183
|
break;
|
|
@@ -1180,7 +1186,7 @@ bool QuicSpdySession::OnSetting(uint64_t id, uint64_t value) {
|
|
|
1180
1186
|
return false;
|
|
1181
1187
|
}
|
|
1182
1188
|
if (value) {
|
|
1183
|
-
http_datagram_support_ = HttpDatagramSupport::
|
|
1189
|
+
http_datagram_support_ = HttpDatagramSupport::kDraft09;
|
|
1184
1190
|
}
|
|
1185
1191
|
break;
|
|
1186
1192
|
}
|
|
@@ -1599,18 +1605,15 @@ void QuicSpdySession::LogHeaderCompressionRatioHistogram(
|
|
|
1599
1605
|
}
|
|
1600
1606
|
}
|
|
1601
1607
|
|
|
1602
|
-
MessageStatus QuicSpdySession::SendHttp3Datagram(
|
|
1608
|
+
MessageStatus QuicSpdySession::SendHttp3Datagram(QuicStreamId stream_id,
|
|
1603
1609
|
absl::string_view payload) {
|
|
1604
1610
|
if (!SupportsH3Datagram()) {
|
|
1605
1611
|
QUIC_BUG(send http datagram too early)
|
|
1606
1612
|
<< "Refusing to send HTTP Datagram before SETTINGS received";
|
|
1607
1613
|
return MESSAGE_STATUS_INTERNAL_ERROR;
|
|
1608
1614
|
}
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
// Stream ID is sent divided by four as per the specification.
|
|
1612
|
-
stream_id_to_write /= kHttpDatagramStreamIdDivisor;
|
|
1613
|
-
}
|
|
1615
|
+
// Stream ID is sent divided by four as per the specification.
|
|
1616
|
+
uint64_t stream_id_to_write = stream_id / kHttpDatagramStreamIdDivisor;
|
|
1614
1617
|
size_t slice_length =
|
|
1615
1618
|
QuicDataWriter::GetVarInt62Len(stream_id_to_write) + payload.length();
|
|
1616
1619
|
quiche::QuicheBuffer buffer(
|
|
@@ -1638,16 +1641,6 @@ void QuicSpdySession::SetMaxDatagramTimeInQueueForStreamId(
|
|
|
1638
1641
|
datagram_queue()->SetMaxTimeInQueue(max_time_in_queue);
|
|
1639
1642
|
}
|
|
1640
1643
|
|
|
1641
|
-
void QuicSpdySession::RegisterHttp3DatagramFlowId(QuicDatagramStreamId flow_id,
|
|
1642
|
-
QuicStreamId stream_id) {
|
|
1643
|
-
h3_datagram_flow_id_to_stream_id_map_[flow_id] = stream_id;
|
|
1644
|
-
}
|
|
1645
|
-
|
|
1646
|
-
void QuicSpdySession::UnregisterHttp3DatagramFlowId(
|
|
1647
|
-
QuicDatagramStreamId flow_id) {
|
|
1648
|
-
h3_datagram_flow_id_to_stream_id_map_.erase(flow_id);
|
|
1649
|
-
}
|
|
1650
|
-
|
|
1651
1644
|
void QuicSpdySession::OnMessageReceived(absl::string_view message) {
|
|
1652
1645
|
QuicSession::OnMessageReceived(message);
|
|
1653
1646
|
if (!SupportsH3Datagram()) {
|
|
@@ -1660,35 +1653,24 @@ void QuicSpdySession::OnMessageReceived(absl::string_view message) {
|
|
|
1660
1653
|
QUIC_DLOG(ERROR) << "Failed to parse stream ID in received HTTP/3 datagram";
|
|
1661
1654
|
return;
|
|
1662
1655
|
}
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
if (it == h3_datagram_flow_id_to_stream_id_map_.end()) {
|
|
1671
|
-
QUIC_DLOG(INFO) << "Received unknown HTTP/3 datagram flow ID "
|
|
1672
|
-
<< stream_id64;
|
|
1673
|
-
return;
|
|
1674
|
-
}
|
|
1675
|
-
stream_id64 = it->second;
|
|
1676
|
-
}
|
|
1677
|
-
if (stream_id64 > std::numeric_limits<QuicStreamId>::max()) {
|
|
1678
|
-
// TODO(b/181256914) make this a connection close once we deprecate
|
|
1679
|
-
// draft-ietf-masque-h3-datagram-00 in favor of later drafts.
|
|
1680
|
-
QUIC_DLOG(ERROR) << "Received unexpectedly high HTTP/3 datagram stream ID "
|
|
1681
|
-
<< stream_id64;
|
|
1656
|
+
// Stream ID is sent divided by four as per the specification.
|
|
1657
|
+
if (stream_id64 >
|
|
1658
|
+
std::numeric_limits<QuicStreamId>::max() / kHttpDatagramStreamIdDivisor) {
|
|
1659
|
+
CloseConnectionWithDetails(
|
|
1660
|
+
QUIC_HTTP_FRAME_ERROR,
|
|
1661
|
+
absl::StrCat("Received HTTP Datagram with invalid quarter stream ID ",
|
|
1662
|
+
stream_id64));
|
|
1682
1663
|
return;
|
|
1683
1664
|
}
|
|
1665
|
+
stream_id64 *= kHttpDatagramStreamIdDivisor;
|
|
1684
1666
|
QuicStreamId stream_id = static_cast<QuicStreamId>(stream_id64);
|
|
1685
1667
|
QuicSpdyStream* stream =
|
|
1686
1668
|
static_cast<QuicSpdyStream*>(GetActiveStream(stream_id));
|
|
1687
1669
|
if (stream == nullptr) {
|
|
1688
1670
|
QUIC_DLOG(INFO) << "Received HTTP/3 datagram for unknown stream ID "
|
|
1689
1671
|
<< stream_id;
|
|
1690
|
-
// TODO(b/181256914) buffer
|
|
1691
|
-
// period of time in case they were reordered.
|
|
1672
|
+
// TODO(b/181256914) buffer HTTP/3 datagrams with unknown stream IDs for a
|
|
1673
|
+
// short period of time in case they were reordered.
|
|
1692
1674
|
return;
|
|
1693
1675
|
}
|
|
1694
1676
|
stream->OnDatagramReceived(&reader);
|
|
@@ -1840,12 +1822,12 @@ std::string HttpDatagramSupportToString(
|
|
|
1840
1822
|
switch (http_datagram_support) {
|
|
1841
1823
|
case HttpDatagramSupport::kNone:
|
|
1842
1824
|
return "None";
|
|
1843
|
-
case HttpDatagramSupport::kDraft00:
|
|
1844
|
-
return "Draft00";
|
|
1845
1825
|
case HttpDatagramSupport::kDraft04:
|
|
1846
1826
|
return "Draft04";
|
|
1847
|
-
case HttpDatagramSupport::
|
|
1848
|
-
return "
|
|
1827
|
+
case HttpDatagramSupport::kDraft09:
|
|
1828
|
+
return "Draft09";
|
|
1829
|
+
case HttpDatagramSupport::kDraft04And09:
|
|
1830
|
+
return "Draft04And09";
|
|
1849
1831
|
}
|
|
1850
1832
|
return absl::StrCat("Unknown(", static_cast<int>(http_datagram_support), ")");
|
|
1851
1833
|
}
|
|
@@ -118,10 +118,10 @@ class QUIC_EXPORT_PRIVATE Http3DebugVisitor {
|
|
|
118
118
|
// Whether draft-ietf-masque-h3-datagram is supported on this session and if so
|
|
119
119
|
// which draft is currently in use.
|
|
120
120
|
enum class HttpDatagramSupport : uint8_t {
|
|
121
|
-
kNone
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
121
|
+
kNone, // HTTP Datagrams are not supported for this session.
|
|
122
|
+
kDraft04,
|
|
123
|
+
kDraft09,
|
|
124
|
+
kDraft04And09, // Only used locally for sending, we only negotiate one draft.
|
|
125
125
|
};
|
|
126
126
|
|
|
127
127
|
QUIC_EXPORT_PRIVATE std::string HttpDatagramSupportToString(
|
|
@@ -378,17 +378,11 @@ class QUIC_EXPORT_PRIVATE QuicSpdySession
|
|
|
378
378
|
}
|
|
379
379
|
|
|
380
380
|
// This must not be used except by QuicSpdyStream::SendHttp3Datagram.
|
|
381
|
-
MessageStatus SendHttp3Datagram(
|
|
381
|
+
MessageStatus SendHttp3Datagram(QuicStreamId stream_id,
|
|
382
382
|
absl::string_view payload);
|
|
383
383
|
// This must not be used except by QuicSpdyStream::SetMaxDatagramTimeInQueue.
|
|
384
384
|
void SetMaxDatagramTimeInQueueForStreamId(QuicStreamId stream_id,
|
|
385
385
|
QuicTime::Delta max_time_in_queue);
|
|
386
|
-
// This must not be used except by
|
|
387
|
-
// QuicSpdyStream::MaybeProcessReceivedWebTransportHeaders.
|
|
388
|
-
void RegisterHttp3DatagramFlowId(QuicDatagramStreamId flow_id,
|
|
389
|
-
QuicStreamId stream_id);
|
|
390
|
-
// This must not be used except by QuicSpdyStream::OnClose.
|
|
391
|
-
void UnregisterHttp3DatagramFlowId(QuicDatagramStreamId flow_id);
|
|
392
386
|
|
|
393
387
|
// Override from QuicSession to support HTTP/3 datagrams.
|
|
394
388
|
void OnMessageReceived(absl::string_view message) override;
|
|
@@ -645,12 +639,6 @@ class QUIC_EXPORT_PRIVATE QuicSpdySession
|
|
|
645
639
|
// Whether the peer has indicated WebTransport support.
|
|
646
640
|
bool peer_supports_webtransport_ = false;
|
|
647
641
|
|
|
648
|
-
// This maps from draft-ietf-masque-h3-datagram-00 flow IDs to stream IDs.
|
|
649
|
-
// TODO(b/181256914) remove this when we deprecate support for that draft in
|
|
650
|
-
// favor of more recent ones.
|
|
651
|
-
absl::flat_hash_map<uint64_t, QuicStreamId>
|
|
652
|
-
h3_datagram_flow_id_to_stream_id_map_;
|
|
653
|
-
|
|
654
642
|
// Whether any settings have been received, either from the peer or from a
|
|
655
643
|
// session ticket.
|
|
656
644
|
bool any_settings_received_ = false;
|
|
@@ -199,11 +199,25 @@ class TestCryptoStream : public QuicCryptoStream, public QuicCryptoHandshaker {
|
|
|
199
199
|
EncryptionLevel level) const override {
|
|
200
200
|
return level != ENCRYPTION_ZERO_RTT;
|
|
201
201
|
}
|
|
202
|
+
EncryptionLevel GetEncryptionLevelToSendCryptoDataOfSpace(
|
|
203
|
+
PacketNumberSpace space) const override {
|
|
204
|
+
switch (space) {
|
|
205
|
+
case INITIAL_DATA:
|
|
206
|
+
return ENCRYPTION_INITIAL;
|
|
207
|
+
case HANDSHAKE_DATA:
|
|
208
|
+
return ENCRYPTION_HANDSHAKE;
|
|
209
|
+
case APPLICATION_DATA:
|
|
210
|
+
return ENCRYPTION_FORWARD_SECURE;
|
|
211
|
+
default:
|
|
212
|
+
QUICHE_DCHECK(false);
|
|
213
|
+
return NUM_ENCRYPTION_LEVELS;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
202
216
|
|
|
203
217
|
bool ExportKeyingMaterial(absl::string_view /*label*/,
|
|
204
218
|
absl::string_view /*context*/,
|
|
205
|
-
size_t /*result_len*/,
|
|
206
|
-
|
|
219
|
+
size_t /*result_len*/, std::string*
|
|
220
|
+
/*result*/) override {
|
|
207
221
|
return false;
|
|
208
222
|
}
|
|
209
223
|
|
|
@@ -568,11 +582,7 @@ class QuicSpdySessionTestBase : public QuicTestWithParam<ParsedQuicVersion> {
|
|
|
568
582
|
headers.OnHeaderBlockStart();
|
|
569
583
|
headers.OnHeader(":method", "CONNECT");
|
|
570
584
|
headers.OnHeader(":protocol", "webtransport");
|
|
571
|
-
|
|
572
|
-
headers.OnHeader("datagram-flow-id", absl::StrCat(session_id));
|
|
573
|
-
} else {
|
|
574
|
-
headers.OnHeader("sec-webtransport-http3-draft02", "1");
|
|
575
|
-
}
|
|
585
|
+
headers.OnHeader("sec-webtransport-http3-draft02", "1");
|
|
576
586
|
stream->OnStreamHeaderList(/*fin=*/true, 0, headers);
|
|
577
587
|
WebTransportHttp3* web_transport =
|
|
578
588
|
session_.GetWebTransportSession(session_id);
|
|
@@ -3375,15 +3385,15 @@ void QuicSpdySessionTestBase::TestHttpDatagramSetting(
|
|
|
3375
3385
|
switch (remote_support) {
|
|
3376
3386
|
case HttpDatagramSupport::kNone:
|
|
3377
3387
|
break;
|
|
3378
|
-
case HttpDatagramSupport::kDraft00:
|
|
3379
|
-
settings.values[SETTINGS_H3_DATAGRAM_DRAFT00] = 1;
|
|
3380
|
-
break;
|
|
3381
3388
|
case HttpDatagramSupport::kDraft04:
|
|
3382
3389
|
settings.values[SETTINGS_H3_DATAGRAM_DRAFT04] = 1;
|
|
3383
3390
|
break;
|
|
3384
|
-
case HttpDatagramSupport::
|
|
3385
|
-
settings.values[
|
|
3391
|
+
case HttpDatagramSupport::kDraft09:
|
|
3392
|
+
settings.values[SETTINGS_H3_DATAGRAM_DRAFT09] = 1;
|
|
3393
|
+
break;
|
|
3394
|
+
case HttpDatagramSupport::kDraft04And09:
|
|
3386
3395
|
settings.values[SETTINGS_H3_DATAGRAM_DRAFT04] = 1;
|
|
3396
|
+
settings.values[SETTINGS_H3_DATAGRAM_DRAFT09] = 1;
|
|
3387
3397
|
break;
|
|
3388
3398
|
}
|
|
3389
3399
|
std::string data = std::string(1, kControlStream) + EncodeSettings(settings);
|
|
@@ -3399,84 +3409,83 @@ void QuicSpdySessionTestBase::TestHttpDatagramSetting(
|
|
|
3399
3409
|
EXPECT_EQ(session_.SupportsH3Datagram(), expected_datagram_supported);
|
|
3400
3410
|
}
|
|
3401
3411
|
|
|
3402
|
-
TEST_P(QuicSpdySessionTestClient,
|
|
3412
|
+
TEST_P(QuicSpdySessionTestClient, HttpDatagramSettingLocal04Remote04) {
|
|
3403
3413
|
TestHttpDatagramSetting(
|
|
3404
|
-
/*local_support=*/HttpDatagramSupport::
|
|
3405
|
-
/*remote_support=*/HttpDatagramSupport::
|
|
3406
|
-
/*expected_support=*/HttpDatagramSupport::
|
|
3414
|
+
/*local_support=*/HttpDatagramSupport::kDraft04,
|
|
3415
|
+
/*remote_support=*/HttpDatagramSupport::kDraft04,
|
|
3416
|
+
/*expected_support=*/HttpDatagramSupport::kDraft04,
|
|
3407
3417
|
/*expected_datagram_supported=*/true);
|
|
3408
3418
|
}
|
|
3409
3419
|
|
|
3410
|
-
TEST_P(QuicSpdySessionTestClient,
|
|
3420
|
+
TEST_P(QuicSpdySessionTestClient, HttpDatagramSettingLocal04Remote09) {
|
|
3411
3421
|
TestHttpDatagramSetting(
|
|
3412
|
-
/*local_support=*/HttpDatagramSupport::
|
|
3413
|
-
/*remote_support=*/HttpDatagramSupport::
|
|
3422
|
+
/*local_support=*/HttpDatagramSupport::kDraft04,
|
|
3423
|
+
/*remote_support=*/HttpDatagramSupport::kDraft09,
|
|
3414
3424
|
/*expected_support=*/HttpDatagramSupport::kNone,
|
|
3415
3425
|
/*expected_datagram_supported=*/false);
|
|
3416
3426
|
}
|
|
3417
3427
|
|
|
3418
|
-
TEST_P(QuicSpdySessionTestClient,
|
|
3428
|
+
TEST_P(QuicSpdySessionTestClient, HttpDatagramSettingLocal04Remote04And09) {
|
|
3419
3429
|
TestHttpDatagramSetting(
|
|
3420
|
-
/*local_support=*/HttpDatagramSupport::
|
|
3421
|
-
/*remote_support=*/HttpDatagramSupport::
|
|
3422
|
-
/*expected_support=*/HttpDatagramSupport::
|
|
3430
|
+
/*local_support=*/HttpDatagramSupport::kDraft04,
|
|
3431
|
+
/*remote_support=*/HttpDatagramSupport::kDraft04And09,
|
|
3432
|
+
/*expected_support=*/HttpDatagramSupport::kDraft04,
|
|
3423
3433
|
/*expected_datagram_supported=*/true);
|
|
3424
3434
|
}
|
|
3425
3435
|
|
|
3426
|
-
TEST_P(QuicSpdySessionTestClient,
|
|
3436
|
+
TEST_P(QuicSpdySessionTestClient, HttpDatagramSettingLocal09Remote04) {
|
|
3427
3437
|
TestHttpDatagramSetting(
|
|
3428
|
-
/*local_support=*/HttpDatagramSupport::
|
|
3429
|
-
/*remote_support=*/HttpDatagramSupport::
|
|
3438
|
+
/*local_support=*/HttpDatagramSupport::kDraft09,
|
|
3439
|
+
/*remote_support=*/HttpDatagramSupport::kDraft04,
|
|
3430
3440
|
/*expected_support=*/HttpDatagramSupport::kNone,
|
|
3431
3441
|
/*expected_datagram_supported=*/false);
|
|
3432
3442
|
}
|
|
3433
3443
|
|
|
3434
|
-
TEST_P(QuicSpdySessionTestClient,
|
|
3444
|
+
TEST_P(QuicSpdySessionTestClient, HttpDatagramSettingLocal09Remote09) {
|
|
3435
3445
|
TestHttpDatagramSetting(
|
|
3436
|
-
/*local_support=*/HttpDatagramSupport::
|
|
3437
|
-
/*remote_support=*/HttpDatagramSupport::
|
|
3438
|
-
/*expected_support=*/HttpDatagramSupport::
|
|
3446
|
+
/*local_support=*/HttpDatagramSupport::kDraft09,
|
|
3447
|
+
/*remote_support=*/HttpDatagramSupport::kDraft09,
|
|
3448
|
+
/*expected_support=*/HttpDatagramSupport::kDraft09,
|
|
3439
3449
|
/*expected_datagram_supported=*/true);
|
|
3440
3450
|
}
|
|
3441
3451
|
|
|
3442
|
-
TEST_P(QuicSpdySessionTestClient,
|
|
3452
|
+
TEST_P(QuicSpdySessionTestClient, HttpDatagramSettingLocal09Remote04And09) {
|
|
3443
3453
|
TestHttpDatagramSetting(
|
|
3444
|
-
/*local_support=*/HttpDatagramSupport::
|
|
3445
|
-
/*remote_support=*/HttpDatagramSupport::
|
|
3446
|
-
/*expected_support=*/HttpDatagramSupport::
|
|
3454
|
+
/*local_support=*/HttpDatagramSupport::kDraft09,
|
|
3455
|
+
/*remote_support=*/HttpDatagramSupport::kDraft04And09,
|
|
3456
|
+
/*expected_support=*/HttpDatagramSupport::kDraft09,
|
|
3447
3457
|
/*expected_datagram_supported=*/true);
|
|
3448
3458
|
}
|
|
3449
3459
|
|
|
3450
|
-
TEST_P(QuicSpdySessionTestClient,
|
|
3460
|
+
TEST_P(QuicSpdySessionTestClient, HttpDatagramSettingLocal04And09Remote04) {
|
|
3451
3461
|
TestHttpDatagramSetting(
|
|
3452
|
-
/*local_support=*/HttpDatagramSupport::
|
|
3453
|
-
/*remote_support=*/HttpDatagramSupport::
|
|
3454
|
-
/*expected_support=*/HttpDatagramSupport::
|
|
3462
|
+
/*local_support=*/HttpDatagramSupport::kDraft04And09,
|
|
3463
|
+
/*remote_support=*/HttpDatagramSupport::kDraft04,
|
|
3464
|
+
/*expected_support=*/HttpDatagramSupport::kDraft04,
|
|
3455
3465
|
/*expected_datagram_supported=*/true);
|
|
3456
3466
|
}
|
|
3457
3467
|
|
|
3458
|
-
TEST_P(QuicSpdySessionTestClient,
|
|
3468
|
+
TEST_P(QuicSpdySessionTestClient, HttpDatagramSettingLocal04And09Remote09) {
|
|
3459
3469
|
TestHttpDatagramSetting(
|
|
3460
|
-
/*local_support=*/HttpDatagramSupport::
|
|
3461
|
-
/*remote_support=*/HttpDatagramSupport::
|
|
3462
|
-
/*expected_support=*/HttpDatagramSupport::
|
|
3470
|
+
/*local_support=*/HttpDatagramSupport::kDraft04And09,
|
|
3471
|
+
/*remote_support=*/HttpDatagramSupport::kDraft09,
|
|
3472
|
+
/*expected_support=*/HttpDatagramSupport::kDraft09,
|
|
3463
3473
|
/*expected_datagram_supported=*/true);
|
|
3464
3474
|
}
|
|
3465
3475
|
|
|
3466
3476
|
TEST_P(QuicSpdySessionTestClient,
|
|
3467
|
-
|
|
3477
|
+
HttpDatagramSettingLocal04And09Remote04And09) {
|
|
3468
3478
|
TestHttpDatagramSetting(
|
|
3469
|
-
/*local_support=*/HttpDatagramSupport::
|
|
3470
|
-
/*remote_support=*/HttpDatagramSupport::
|
|
3471
|
-
/*expected_support=*/HttpDatagramSupport::
|
|
3479
|
+
/*local_support=*/HttpDatagramSupport::kDraft04And09,
|
|
3480
|
+
/*remote_support=*/HttpDatagramSupport::kDraft04And09,
|
|
3481
|
+
/*expected_support=*/HttpDatagramSupport::kDraft09,
|
|
3472
3482
|
/*expected_datagram_supported=*/true);
|
|
3473
3483
|
}
|
|
3474
|
-
|
|
3475
3484
|
TEST_P(QuicSpdySessionTestClient, WebTransportSetting) {
|
|
3476
3485
|
if (!version().UsesHttp3()) {
|
|
3477
3486
|
return;
|
|
3478
3487
|
}
|
|
3479
|
-
session_.set_local_http_datagram_support(HttpDatagramSupport::
|
|
3488
|
+
session_.set_local_http_datagram_support(HttpDatagramSupport::kDraft04);
|
|
3480
3489
|
session_.set_supports_webtransport(true);
|
|
3481
3490
|
|
|
3482
3491
|
EXPECT_FALSE(session_.SupportsWebTransport());
|
|
@@ -3499,7 +3508,7 @@ TEST_P(QuicSpdySessionTestClient, WebTransportSettingSetToZero) {
|
|
|
3499
3508
|
if (!version().UsesHttp3()) {
|
|
3500
3509
|
return;
|
|
3501
3510
|
}
|
|
3502
|
-
session_.set_local_http_datagram_support(HttpDatagramSupport::
|
|
3511
|
+
session_.set_local_http_datagram_support(HttpDatagramSupport::kDraft04);
|
|
3503
3512
|
session_.set_supports_webtransport(true);
|
|
3504
3513
|
|
|
3505
3514
|
EXPECT_FALSE(session_.SupportsWebTransport());
|
|
@@ -3529,7 +3538,7 @@ TEST_P(QuicSpdySessionTestServer, WebTransportSetting) {
|
|
|
3529
3538
|
if (!version().UsesHttp3()) {
|
|
3530
3539
|
return;
|
|
3531
3540
|
}
|
|
3532
|
-
session_.set_local_http_datagram_support(HttpDatagramSupport::
|
|
3541
|
+
session_.set_local_http_datagram_support(HttpDatagramSupport::kDraft04);
|
|
3533
3542
|
session_.set_supports_webtransport(true);
|
|
3534
3543
|
|
|
3535
3544
|
EXPECT_FALSE(session_.SupportsWebTransport());
|
|
@@ -3546,7 +3555,7 @@ TEST_P(QuicSpdySessionTestServer, BufferingIncomingStreams) {
|
|
|
3546
3555
|
if (!version().UsesHttp3()) {
|
|
3547
3556
|
return;
|
|
3548
3557
|
}
|
|
3549
|
-
session_.set_local_http_datagram_support(HttpDatagramSupport::
|
|
3558
|
+
session_.set_local_http_datagram_support(HttpDatagramSupport::kDraft04);
|
|
3550
3559
|
session_.set_supports_webtransport(true);
|
|
3551
3560
|
|
|
3552
3561
|
CompleteHandshake();
|
|
@@ -3579,7 +3588,7 @@ TEST_P(QuicSpdySessionTestServer, BufferingIncomingStreamsLimit) {
|
|
|
3579
3588
|
if (!version().UsesHttp3()) {
|
|
3580
3589
|
return;
|
|
3581
3590
|
}
|
|
3582
|
-
session_.set_local_http_datagram_support(HttpDatagramSupport::
|
|
3591
|
+
session_.set_local_http_datagram_support(HttpDatagramSupport::kDraft04);
|
|
3583
3592
|
session_.set_supports_webtransport(true);
|
|
3584
3593
|
|
|
3585
3594
|
CompleteHandshake();
|
|
@@ -3620,7 +3629,7 @@ TEST_P(QuicSpdySessionTestServer, ResetOutgoingWebTransportStreams) {
|
|
|
3620
3629
|
if (!version().UsesHttp3()) {
|
|
3621
3630
|
return;
|
|
3622
3631
|
}
|
|
3623
|
-
session_.set_local_http_datagram_support(HttpDatagramSupport::
|
|
3632
|
+
session_.set_local_http_datagram_support(HttpDatagramSupport::kDraft04);
|
|
3624
3633
|
session_.set_supports_webtransport(true);
|
|
3625
3634
|
|
|
3626
3635
|
CompleteHandshake();
|
|
@@ -3657,7 +3666,7 @@ TEST_P(QuicSpdySessionTestClient, WebTransportWithoutExtendedConnect) {
|
|
|
3657
3666
|
}
|
|
3658
3667
|
SetQuicReloadableFlag(quic_verify_request_headers_2, true);
|
|
3659
3668
|
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
|
|
3660
|
-
session_.set_local_http_datagram_support(HttpDatagramSupport::
|
|
3669
|
+
session_.set_local_http_datagram_support(HttpDatagramSupport::kDraft04);
|
|
3661
3670
|
session_.set_supports_webtransport(true);
|
|
3662
3671
|
|
|
3663
3672
|
EXPECT_FALSE(session_.SupportsWebTransport());
|