@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
|
@@ -278,7 +278,6 @@ size_t QuicSpdyStream::WriteHeaders(
|
|
|
278
278
|
MaybeProcessSentWebTransportHeaders(header_block);
|
|
279
279
|
|
|
280
280
|
if (web_transport_ != nullptr &&
|
|
281
|
-
spdy_session_->http_datagram_support() != HttpDatagramSupport::kDraft00 &&
|
|
282
281
|
spdy_session_->perspective() == Perspective::IS_SERVER) {
|
|
283
282
|
header_block["sec-webtransport-http3-draft"] = "draft02";
|
|
284
283
|
}
|
|
@@ -296,24 +295,20 @@ size_t QuicSpdyStream::WriteHeaders(
|
|
|
296
295
|
|
|
297
296
|
if (web_transport_ != nullptr &&
|
|
298
297
|
session()->perspective() == Perspective::IS_CLIENT) {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
298
|
+
WriteGreaseCapsule();
|
|
299
|
+
if (spdy_session_->http_datagram_support() ==
|
|
300
|
+
HttpDatagramSupport::kDraft04) {
|
|
301
|
+
// Send a REGISTER_DATAGRAM_NO_CONTEXT capsule to support servers that
|
|
302
|
+
// are running draft-ietf-masque-h3-datagram-04 or -05.
|
|
303
|
+
uint64_t capsule_type = 0xff37a2; // REGISTER_DATAGRAM_NO_CONTEXT
|
|
304
|
+
constexpr unsigned char capsule_data[4] = {
|
|
305
|
+
0x80, 0xff, 0x7c, 0x00, // WEBTRANSPORT datagram format type
|
|
306
|
+
};
|
|
307
|
+
WriteCapsule(Capsule::Unknown(
|
|
308
|
+
capsule_type,
|
|
309
|
+
absl::string_view(reinterpret_cast<const char*>(capsule_data),
|
|
310
|
+
sizeof(capsule_data))));
|
|
302
311
|
WriteGreaseCapsule();
|
|
303
|
-
if (spdy_session_->http_datagram_support() ==
|
|
304
|
-
HttpDatagramSupport::kDraft04) {
|
|
305
|
-
// Send a REGISTER_DATAGRAM_NO_CONTEXT capsule to support servers that
|
|
306
|
-
// are running draft-ietf-masque-h3-datagram-04 or -05.
|
|
307
|
-
uint64_t capsule_type = 0xff37a2; // REGISTER_DATAGRAM_NO_CONTEXT
|
|
308
|
-
constexpr unsigned char capsule_data[4] = {
|
|
309
|
-
0x80, 0xff, 0x7c, 0x00, // WEBTRANSPORT datagram format type
|
|
310
|
-
};
|
|
311
|
-
WriteCapsule(Capsule::Unknown(
|
|
312
|
-
capsule_type,
|
|
313
|
-
absl::string_view(reinterpret_cast<const char*>(capsule_data),
|
|
314
|
-
sizeof(capsule_data))));
|
|
315
|
-
WriteGreaseCapsule();
|
|
316
|
-
}
|
|
317
312
|
}
|
|
318
313
|
}
|
|
319
314
|
|
|
@@ -759,18 +754,20 @@ void QuicSpdyStream::OnStreamReset(const QuicRstStreamFrame& frame) {
|
|
|
759
754
|
return;
|
|
760
755
|
}
|
|
761
756
|
|
|
762
|
-
if (
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
spdy_session_->qpack_decoder()
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
757
|
+
if (VersionUsesHttp3(transport_version())) {
|
|
758
|
+
QUIC_CODE_COUNT(quic_fix_on_stream_reset);
|
|
759
|
+
if (GetQuicReloadableFlag(quic_fix_on_stream_reset)) {
|
|
760
|
+
QUIC_RELOADABLE_FLAG_COUNT(quic_fix_on_stream_reset);
|
|
761
|
+
if (!fin_received() && spdy_session_->qpack_decoder()) {
|
|
762
|
+
spdy_session_->qpack_decoder()->OnStreamReset(id());
|
|
763
|
+
qpack_decoded_headers_accumulator_.reset();
|
|
764
|
+
qpack_decoded_headers_accumulator_reset_reason_ =
|
|
765
|
+
QpackDecodedHeadersAccumulatorResetReason::kResetInOnStreamReset2;
|
|
766
|
+
}
|
|
771
767
|
|
|
772
|
-
|
|
773
|
-
|
|
768
|
+
QuicStream::OnStreamReset(frame);
|
|
769
|
+
return;
|
|
770
|
+
}
|
|
774
771
|
}
|
|
775
772
|
|
|
776
773
|
QUIC_DVLOG(1) << ENDPOINT
|
|
@@ -904,10 +901,6 @@ void QuicSpdyStream::OnClose() {
|
|
|
904
901
|
visitor->OnClose(this);
|
|
905
902
|
}
|
|
906
903
|
|
|
907
|
-
if (datagram_flow_id_.has_value()) {
|
|
908
|
-
spdy_session_->UnregisterHttp3DatagramFlowId(datagram_flow_id_.value());
|
|
909
|
-
}
|
|
910
|
-
|
|
911
904
|
if (web_transport_ != nullptr) {
|
|
912
905
|
web_transport_->OnConnectStreamClosing();
|
|
913
906
|
}
|
|
@@ -1259,8 +1252,6 @@ void QuicSpdyStream::MaybeProcessReceivedWebTransportHeaders() {
|
|
|
1259
1252
|
|
|
1260
1253
|
std::string method;
|
|
1261
1254
|
std::string protocol;
|
|
1262
|
-
absl::optional<QuicDatagramStreamId> flow_id;
|
|
1263
|
-
bool version_indicated = false;
|
|
1264
1255
|
for (const auto& [header_name, header_value] : header_list_) {
|
|
1265
1256
|
if (header_name == ":method") {
|
|
1266
1257
|
if (!method.empty() || header_value.empty()) {
|
|
@@ -1275,21 +1266,10 @@ void QuicSpdyStream::MaybeProcessReceivedWebTransportHeaders() {
|
|
|
1275
1266
|
protocol = header_value;
|
|
1276
1267
|
}
|
|
1277
1268
|
if (header_name == "datagram-flow-id") {
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
"Datagram-Flow-Id header";
|
|
1283
|
-
return;
|
|
1284
|
-
}
|
|
1285
|
-
if (flow_id.has_value() || header_value.empty()) {
|
|
1286
|
-
return;
|
|
1287
|
-
}
|
|
1288
|
-
QuicDatagramStreamId flow_id_out;
|
|
1289
|
-
if (!absl::SimpleAtoi(header_value, &flow_id_out)) {
|
|
1290
|
-
return;
|
|
1291
|
-
}
|
|
1292
|
-
flow_id = flow_id_out;
|
|
1269
|
+
QUIC_DLOG(ERROR) << ENDPOINT
|
|
1270
|
+
<< "Rejecting WebTransport due to unexpected "
|
|
1271
|
+
"Datagram-Flow-Id header";
|
|
1272
|
+
return;
|
|
1293
1273
|
}
|
|
1294
1274
|
if (header_name == "sec-webtransport-http3-draft02") {
|
|
1295
1275
|
if (header_value != "1") {
|
|
@@ -1298,7 +1278,6 @@ void QuicSpdyStream::MaybeProcessReceivedWebTransportHeaders() {
|
|
|
1298
1278
|
"Sec-Webtransport-Http3-Draft02 header";
|
|
1299
1279
|
return;
|
|
1300
1280
|
}
|
|
1301
|
-
version_indicated = true;
|
|
1302
1281
|
}
|
|
1303
1282
|
}
|
|
1304
1283
|
|
|
@@ -1306,24 +1285,6 @@ void QuicSpdyStream::MaybeProcessReceivedWebTransportHeaders() {
|
|
|
1306
1285
|
return;
|
|
1307
1286
|
}
|
|
1308
1287
|
|
|
1309
|
-
if (!version_indicated &&
|
|
1310
|
-
spdy_session_->http_datagram_support() != HttpDatagramSupport::kDraft00) {
|
|
1311
|
-
QUIC_DLOG(ERROR)
|
|
1312
|
-
<< ENDPOINT
|
|
1313
|
-
<< "WebTransport request rejected due to missing version header.";
|
|
1314
|
-
return;
|
|
1315
|
-
}
|
|
1316
|
-
|
|
1317
|
-
if (spdy_session_->http_datagram_support() == HttpDatagramSupport::kDraft00) {
|
|
1318
|
-
if (!flow_id.has_value()) {
|
|
1319
|
-
QUIC_DLOG(ERROR)
|
|
1320
|
-
<< ENDPOINT
|
|
1321
|
-
<< "Rejecting WebTransport due to missing Datagram-Flow-Id header";
|
|
1322
|
-
return;
|
|
1323
|
-
}
|
|
1324
|
-
RegisterHttp3DatagramFlowId(*flow_id);
|
|
1325
|
-
}
|
|
1326
|
-
|
|
1327
1288
|
web_transport_ =
|
|
1328
1289
|
std::make_unique<WebTransportHttp3>(spdy_session_, this, id());
|
|
1329
1290
|
}
|
|
@@ -1347,11 +1308,7 @@ void QuicSpdyStream::MaybeProcessSentWebTransportHeaders(
|
|
|
1347
1308
|
return;
|
|
1348
1309
|
}
|
|
1349
1310
|
|
|
1350
|
-
|
|
1351
|
-
headers["datagram-flow-id"] = absl::StrCat(id());
|
|
1352
|
-
} else {
|
|
1353
|
-
headers["sec-webtransport-http3-draft02"] = "1";
|
|
1354
|
-
}
|
|
1311
|
+
headers["sec-webtransport-http3-draft02"] = "1";
|
|
1355
1312
|
|
|
1356
1313
|
web_transport_ =
|
|
1357
1314
|
std::make_unique<WebTransportHttp3>(spdy_session_, this, id());
|
|
@@ -1491,9 +1448,7 @@ void QuicSpdyStream::WriteGreaseCapsule() {
|
|
|
1491
1448
|
}
|
|
1492
1449
|
|
|
1493
1450
|
MessageStatus QuicSpdyStream::SendHttp3Datagram(absl::string_view payload) {
|
|
1494
|
-
|
|
1495
|
-
datagram_flow_id_.has_value() ? datagram_flow_id_.value() : id();
|
|
1496
|
-
return spdy_session_->SendHttp3Datagram(stream_id, payload);
|
|
1451
|
+
return spdy_session_->SendHttp3Datagram(id(), payload);
|
|
1497
1452
|
}
|
|
1498
1453
|
|
|
1499
1454
|
void QuicSpdyStream::RegisterHttp3DatagramVisitor(
|
|
@@ -1555,20 +1510,13 @@ void QuicSpdyStream::OnDatagramReceived(QuicDataReader* reader) {
|
|
|
1555
1510
|
QuicByteCount QuicSpdyStream::GetMaxDatagramSize() const {
|
|
1556
1511
|
QuicByteCount prefix_size = 0;
|
|
1557
1512
|
switch (spdy_session_->http_datagram_support()) {
|
|
1558
|
-
case HttpDatagramSupport::kDraft00:
|
|
1559
|
-
if (!datagram_flow_id_.has_value()) {
|
|
1560
|
-
QUIC_BUG(GetMaxDatagramSize with no flow ID)
|
|
1561
|
-
<< "GetMaxDatagramSize() called when no flow ID available";
|
|
1562
|
-
break;
|
|
1563
|
-
}
|
|
1564
|
-
prefix_size = QuicDataWriter::GetVarInt62Len(*datagram_flow_id_);
|
|
1565
|
-
break;
|
|
1566
1513
|
case HttpDatagramSupport::kDraft04:
|
|
1514
|
+
case HttpDatagramSupport::kDraft09:
|
|
1567
1515
|
prefix_size =
|
|
1568
1516
|
QuicDataWriter::GetVarInt62Len(id() / kHttpDatagramStreamIdDivisor);
|
|
1569
1517
|
break;
|
|
1570
1518
|
case HttpDatagramSupport::kNone:
|
|
1571
|
-
case HttpDatagramSupport::
|
|
1519
|
+
case HttpDatagramSupport::kDraft04And09:
|
|
1572
1520
|
QUIC_BUG(GetMaxDatagramSize called with no datagram support)
|
|
1573
1521
|
<< "GetMaxDatagramSize() called when no HTTP/3 datagram support has "
|
|
1574
1522
|
"been negotiated. Support value: "
|
|
@@ -1591,11 +1539,6 @@ QuicByteCount QuicSpdyStream::GetMaxDatagramSize() const {
|
|
|
1591
1539
|
return max_datagram_size - prefix_size;
|
|
1592
1540
|
}
|
|
1593
1541
|
|
|
1594
|
-
void QuicSpdyStream::RegisterHttp3DatagramFlowId(QuicDatagramStreamId flow_id) {
|
|
1595
|
-
datagram_flow_id_ = flow_id;
|
|
1596
|
-
spdy_session_->RegisterHttp3DatagramFlowId(datagram_flow_id_.value(), id());
|
|
1597
|
-
}
|
|
1598
|
-
|
|
1599
1542
|
void QuicSpdyStream::HandleBodyAvailable() {
|
|
1600
1543
|
if (!capsule_parser_) {
|
|
1601
1544
|
OnBodyAvailable();
|
|
@@ -262,8 +262,7 @@ class QUIC_EXPORT_PRIVATE QuicSpdyStream
|
|
|
262
262
|
virtual ~Http3DatagramVisitor() {}
|
|
263
263
|
|
|
264
264
|
// Called when an HTTP/3 datagram is received. |payload| does not contain
|
|
265
|
-
// the stream ID.
|
|
266
|
-
// from draft-ietf-masque-h3-datagram-00 are in use.
|
|
265
|
+
// the stream ID.
|
|
267
266
|
virtual void OnHttp3Datagram(QuicStreamId stream_id,
|
|
268
267
|
absl::string_view payload) = 0;
|
|
269
268
|
};
|
|
@@ -285,10 +284,6 @@ class QUIC_EXPORT_PRIVATE QuicSpdyStream
|
|
|
285
284
|
|
|
286
285
|
void OnDatagramReceived(QuicDataReader* reader);
|
|
287
286
|
|
|
288
|
-
// Registers a datagram flow ID, only meant to be used when in legacy mode for
|
|
289
|
-
// draft-ietf-masque-h3-datagram-00.
|
|
290
|
-
void RegisterHttp3DatagramFlowId(QuicDatagramStreamId flow_id);
|
|
291
|
-
|
|
292
287
|
QuicByteCount GetMaxDatagramSize() const;
|
|
293
288
|
|
|
294
289
|
// Writes |capsule| onto the DATA stream.
|
|
@@ -467,9 +462,6 @@ class QUIC_EXPORT_PRIVATE QuicSpdyStream
|
|
|
467
462
|
|
|
468
463
|
// HTTP/3 Datagram support.
|
|
469
464
|
Http3DatagramVisitor* datagram_visitor_ = nullptr;
|
|
470
|
-
// Flow ID is only used when in legacy mode for
|
|
471
|
-
// draft-ietf-masque-h3-datagram-00.
|
|
472
|
-
absl::optional<QuicDatagramStreamId> datagram_flow_id_;
|
|
473
465
|
};
|
|
474
466
|
|
|
475
467
|
} // namespace quic
|
|
@@ -192,6 +192,21 @@ class TestCryptoStream : public QuicCryptoStream, public QuicCryptoHandshaker {
|
|
|
192
192
|
return level != ENCRYPTION_ZERO_RTT;
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
+
EncryptionLevel GetEncryptionLevelToSendCryptoDataOfSpace(
|
|
196
|
+
PacketNumberSpace space) const override {
|
|
197
|
+
switch (space) {
|
|
198
|
+
case INITIAL_DATA:
|
|
199
|
+
return ENCRYPTION_INITIAL;
|
|
200
|
+
case HANDSHAKE_DATA:
|
|
201
|
+
return ENCRYPTION_HANDSHAKE;
|
|
202
|
+
case APPLICATION_DATA:
|
|
203
|
+
return ENCRYPTION_FORWARD_SECURE;
|
|
204
|
+
default:
|
|
205
|
+
QUICHE_DCHECK(false);
|
|
206
|
+
return NUM_ENCRYPTION_LEVELS;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
195
210
|
private:
|
|
196
211
|
using QuicCryptoStream::session;
|
|
197
212
|
|
|
@@ -984,7 +999,7 @@ TEST_P(QuicSpdyStreamTest, StreamFlowControlBlocked) {
|
|
|
984
999
|
}
|
|
985
1000
|
EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _))
|
|
986
1001
|
.WillOnce(Return(QuicConsumedData(kWindow - kHeaderLength, true)));
|
|
987
|
-
EXPECT_CALL(*session_, SendBlocked(_));
|
|
1002
|
+
EXPECT_CALL(*session_, SendBlocked(_, _));
|
|
988
1003
|
EXPECT_CALL(*connection_, SendControlFrame(_));
|
|
989
1004
|
stream_->WriteOrBufferBody(body, false);
|
|
990
1005
|
|
|
@@ -1239,7 +1254,8 @@ TEST_P(QuicSpdyStreamTest, StreamFlowControlFinNotBlocked) {
|
|
|
1239
1254
|
std::string body = "";
|
|
1240
1255
|
bool fin = true;
|
|
1241
1256
|
|
|
1242
|
-
EXPECT_CALL(*session_,
|
|
1257
|
+
EXPECT_CALL(*session_,
|
|
1258
|
+
SendBlocked(GetNthClientInitiatedBidirectionalId(0), _))
|
|
1243
1259
|
.Times(0);
|
|
1244
1260
|
EXPECT_CALL(*session_, WritevData(_, 0, _, FIN, _, _));
|
|
1245
1261
|
|
|
@@ -3060,39 +3076,13 @@ TEST_P(QuicSpdyStreamTest, TwoResetStreamFrames) {
|
|
|
3060
3076
|
}
|
|
3061
3077
|
}
|
|
3062
3078
|
|
|
3063
|
-
TEST_P(QuicSpdyStreamTest, ProcessOutgoingWebTransportHeadersDatagramDraft00) {
|
|
3064
|
-
if (!UsesHttp3()) {
|
|
3065
|
-
return;
|
|
3066
|
-
}
|
|
3067
|
-
|
|
3068
|
-
InitializeWithPerspective(kShouldProcessData, Perspective::IS_CLIENT);
|
|
3069
|
-
session_->set_local_http_datagram_support(HttpDatagramSupport::kDraft00And04);
|
|
3070
|
-
session_->EnableWebTransport();
|
|
3071
|
-
session_->OnSetting(SETTINGS_ENABLE_CONNECT_PROTOCOL, 1);
|
|
3072
|
-
QuicSpdySessionPeer::EnableWebTransport(session_.get());
|
|
3073
|
-
QuicSpdySessionPeer::SetHttpDatagramSupport(session_.get(),
|
|
3074
|
-
HttpDatagramSupport::kDraft00);
|
|
3075
|
-
|
|
3076
|
-
EXPECT_CALL(*stream_, WriteHeadersMock(false));
|
|
3077
|
-
EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _))
|
|
3078
|
-
.Times(AnyNumber());
|
|
3079
|
-
|
|
3080
|
-
spdy::SpdyHeaderBlock headers;
|
|
3081
|
-
headers[":method"] = "CONNECT";
|
|
3082
|
-
headers[":protocol"] = "webtransport";
|
|
3083
|
-
headers["datagram-flow-id"] = absl::StrCat(stream_->id());
|
|
3084
|
-
stream_->WriteHeaders(std::move(headers), /*fin=*/false, nullptr);
|
|
3085
|
-
ASSERT_TRUE(stream_->web_transport() != nullptr);
|
|
3086
|
-
EXPECT_EQ(stream_->id(), stream_->web_transport()->id());
|
|
3087
|
-
}
|
|
3088
|
-
|
|
3089
3079
|
TEST_P(QuicSpdyStreamTest, ProcessOutgoingWebTransportHeadersDatagramDraft04) {
|
|
3090
3080
|
if (!UsesHttp3()) {
|
|
3091
3081
|
return;
|
|
3092
3082
|
}
|
|
3093
3083
|
|
|
3094
3084
|
InitializeWithPerspective(kShouldProcessData, Perspective::IS_CLIENT);
|
|
3095
|
-
session_->set_local_http_datagram_support(HttpDatagramSupport::
|
|
3085
|
+
session_->set_local_http_datagram_support(HttpDatagramSupport::kDraft04);
|
|
3096
3086
|
session_->EnableWebTransport();
|
|
3097
3087
|
session_->OnSetting(SETTINGS_ENABLE_CONNECT_PROTOCOL, 1);
|
|
3098
3088
|
QuicSpdySessionPeer::EnableWebTransport(session_.get());
|
|
@@ -3117,7 +3107,7 @@ TEST_P(QuicSpdyStreamTest, ProcessIncomingWebTransportHeadersDatagramDraft04) {
|
|
|
3117
3107
|
}
|
|
3118
3108
|
|
|
3119
3109
|
Initialize(kShouldProcessData);
|
|
3120
|
-
session_->set_local_http_datagram_support(HttpDatagramSupport::
|
|
3110
|
+
session_->set_local_http_datagram_support(HttpDatagramSupport::kDraft04);
|
|
3121
3111
|
session_->EnableWebTransport();
|
|
3122
3112
|
QuicSpdySessionPeer::EnableWebTransport(session_.get());
|
|
3123
3113
|
QuicSpdySessionPeer::SetHttpDatagramSupport(session_.get(),
|
|
@@ -3137,111 +3127,14 @@ TEST_P(QuicSpdyStreamTest, ProcessIncomingWebTransportHeadersDatagramDraft04) {
|
|
|
3137
3127
|
EXPECT_EQ(stream_->id(), stream_->web_transport()->id());
|
|
3138
3128
|
}
|
|
3139
3129
|
|
|
3140
|
-
TEST_P(QuicSpdyStreamTest,
|
|
3141
|
-
if (!UsesHttp3()) {
|
|
3142
|
-
return;
|
|
3143
|
-
}
|
|
3144
|
-
|
|
3145
|
-
Initialize(kShouldProcessData);
|
|
3146
|
-
session_->set_local_http_datagram_support(HttpDatagramSupport::kDraft00And04);
|
|
3147
|
-
session_->EnableWebTransport();
|
|
3148
|
-
QuicSpdySessionPeer::EnableWebTransport(session_.get());
|
|
3149
|
-
QuicSpdySessionPeer::SetHttpDatagramSupport(session_.get(),
|
|
3150
|
-
HttpDatagramSupport::kDraft00);
|
|
3151
|
-
|
|
3152
|
-
headers_[":method"] = "CONNECT";
|
|
3153
|
-
headers_[":protocol"] = "webtransport";
|
|
3154
|
-
headers_["datagram-flow-id"] = absl::StrCat(stream_->id());
|
|
3155
|
-
|
|
3156
|
-
stream_->OnStreamHeadersPriority(
|
|
3157
|
-
spdy::SpdyStreamPrecedence(kV3HighestPriority));
|
|
3158
|
-
ProcessHeaders(false, headers_);
|
|
3159
|
-
EXPECT_EQ("", stream_->data());
|
|
3160
|
-
EXPECT_FALSE(stream_->header_list().empty());
|
|
3161
|
-
EXPECT_FALSE(stream_->IsDoneReading());
|
|
3162
|
-
ASSERT_TRUE(stream_->web_transport() != nullptr);
|
|
3163
|
-
EXPECT_EQ(stream_->id(), stream_->web_transport()->id());
|
|
3164
|
-
}
|
|
3165
|
-
|
|
3166
|
-
TEST_P(QuicSpdyStreamTest,
|
|
3167
|
-
ProcessIncomingWebTransportHeadersWithMismatchedFlowId) {
|
|
3168
|
-
if (!UsesHttp3()) {
|
|
3169
|
-
return;
|
|
3170
|
-
}
|
|
3171
|
-
// TODO(b/181256914) Remove this test when we deprecate
|
|
3172
|
-
// draft-ietf-masque-h3-datagram-00 in favor of later drafts.
|
|
3173
|
-
|
|
3174
|
-
Initialize(kShouldProcessData);
|
|
3175
|
-
session_->set_local_http_datagram_support(HttpDatagramSupport::kDraft00And04);
|
|
3176
|
-
session_->EnableWebTransport();
|
|
3177
|
-
QuicSpdySessionPeer::EnableWebTransport(session_.get());
|
|
3178
|
-
QuicSpdySessionPeer::SetHttpDatagramSupport(session_.get(),
|
|
3179
|
-
HttpDatagramSupport::kDraft00);
|
|
3180
|
-
|
|
3181
|
-
headers_[":method"] = "CONNECT";
|
|
3182
|
-
headers_[":protocol"] = "webtransport";
|
|
3183
|
-
headers_["datagram-flow-id"] = "2";
|
|
3184
|
-
|
|
3185
|
-
stream_->OnStreamHeadersPriority(
|
|
3186
|
-
spdy::SpdyStreamPrecedence(kV3HighestPriority));
|
|
3187
|
-
ProcessHeaders(false, headers_);
|
|
3188
|
-
EXPECT_EQ("", stream_->data());
|
|
3189
|
-
EXPECT_FALSE(stream_->header_list().empty());
|
|
3190
|
-
EXPECT_FALSE(stream_->IsDoneReading());
|
|
3191
|
-
ASSERT_TRUE(stream_->web_transport() != nullptr);
|
|
3192
|
-
EXPECT_EQ(stream_->id(), stream_->web_transport()->id());
|
|
3193
|
-
}
|
|
3194
|
-
|
|
3195
|
-
TEST_P(QuicSpdyStreamTest, ReceiveHttpDatagramDraft00) {
|
|
3196
|
-
if (!UsesHttp3()) {
|
|
3197
|
-
return;
|
|
3198
|
-
}
|
|
3199
|
-
InitializeWithPerspective(kShouldProcessData, Perspective::IS_CLIENT);
|
|
3200
|
-
session_->set_local_http_datagram_support(HttpDatagramSupport::kDraft00And04);
|
|
3201
|
-
QuicSpdySessionPeer::SetHttpDatagramSupport(session_.get(),
|
|
3202
|
-
HttpDatagramSupport::kDraft00);
|
|
3203
|
-
headers_[":method"] = "CONNECT";
|
|
3204
|
-
headers_[":protocol"] = "webtransport";
|
|
3205
|
-
headers_["datagram-flow-id"] = absl::StrCat(stream_->id());
|
|
3206
|
-
ProcessHeaders(false, headers_);
|
|
3207
|
-
session_->RegisterHttp3DatagramFlowId(stream_->id(), stream_->id());
|
|
3208
|
-
SavingHttp3DatagramVisitor h3_datagram_visitor;
|
|
3209
|
-
ASSERT_EQ(QuicDataWriter::GetVarInt62Len(stream_->id()), 1);
|
|
3210
|
-
std::array<char, 256> datagram;
|
|
3211
|
-
datagram[0] = stream_->id();
|
|
3212
|
-
for (size_t i = 1; i < datagram.size(); i++) {
|
|
3213
|
-
datagram[i] = i;
|
|
3214
|
-
}
|
|
3215
|
-
stream_->RegisterHttp3DatagramVisitor(&h3_datagram_visitor);
|
|
3216
|
-
session_->OnMessageReceived(
|
|
3217
|
-
absl::string_view(datagram.data(), datagram.size()));
|
|
3218
|
-
EXPECT_THAT(
|
|
3219
|
-
h3_datagram_visitor.received_h3_datagrams(),
|
|
3220
|
-
ElementsAre(SavingHttp3DatagramVisitor::SavedHttp3Datagram{
|
|
3221
|
-
stream_->id(), std::string(&datagram[1], datagram.size() - 1)}));
|
|
3222
|
-
// Test move.
|
|
3223
|
-
SavingHttp3DatagramVisitor h3_datagram_visitor2;
|
|
3224
|
-
stream_->ReplaceHttp3DatagramVisitor(&h3_datagram_visitor2);
|
|
3225
|
-
EXPECT_TRUE(h3_datagram_visitor2.received_h3_datagrams().empty());
|
|
3226
|
-
session_->OnMessageReceived(
|
|
3227
|
-
absl::string_view(datagram.data(), datagram.size()));
|
|
3228
|
-
EXPECT_THAT(
|
|
3229
|
-
h3_datagram_visitor2.received_h3_datagrams(),
|
|
3230
|
-
ElementsAre(SavingHttp3DatagramVisitor::SavedHttp3Datagram{
|
|
3231
|
-
stream_->id(), std::string(&datagram[1], datagram.size() - 1)}));
|
|
3232
|
-
// Cleanup.
|
|
3233
|
-
stream_->UnregisterHttp3DatagramVisitor();
|
|
3234
|
-
session_->UnregisterHttp3DatagramFlowId(stream_->id());
|
|
3235
|
-
}
|
|
3236
|
-
|
|
3237
|
-
TEST_P(QuicSpdyStreamTest, ReceiveHttpDatagramDraft04) {
|
|
3130
|
+
TEST_P(QuicSpdyStreamTest, ReceiveHttpDatagram) {
|
|
3238
3131
|
if (!UsesHttp3()) {
|
|
3239
3132
|
return;
|
|
3240
3133
|
}
|
|
3241
3134
|
InitializeWithPerspective(kShouldProcessData, Perspective::IS_CLIENT);
|
|
3242
|
-
session_->set_local_http_datagram_support(HttpDatagramSupport::
|
|
3135
|
+
session_->set_local_http_datagram_support(HttpDatagramSupport::kDraft09);
|
|
3243
3136
|
QuicSpdySessionPeer::SetHttpDatagramSupport(session_.get(),
|
|
3244
|
-
HttpDatagramSupport::
|
|
3137
|
+
HttpDatagramSupport::kDraft09);
|
|
3245
3138
|
headers_[":method"] = "CONNECT";
|
|
3246
3139
|
headers_[":protocol"] = "webtransport";
|
|
3247
3140
|
ProcessHeaders(false, headers_);
|
|
@@ -3279,9 +3172,9 @@ TEST_P(QuicSpdyStreamTest, SendHttpDatagram) {
|
|
|
3279
3172
|
return;
|
|
3280
3173
|
}
|
|
3281
3174
|
Initialize(kShouldProcessData);
|
|
3282
|
-
session_->set_local_http_datagram_support(HttpDatagramSupport::
|
|
3175
|
+
session_->set_local_http_datagram_support(HttpDatagramSupport::kDraft09);
|
|
3283
3176
|
QuicSpdySessionPeer::SetHttpDatagramSupport(session_.get(),
|
|
3284
|
-
HttpDatagramSupport::
|
|
3177
|
+
HttpDatagramSupport::kDraft09);
|
|
3285
3178
|
std::string http_datagram_payload = {1, 2, 3, 4, 5, 6};
|
|
3286
3179
|
EXPECT_CALL(*connection_, SendMessage(1, _, false))
|
|
3287
3180
|
.WillOnce(Return(MESSAGE_STATUS_SUCCESS));
|
|
@@ -3294,9 +3187,9 @@ TEST_P(QuicSpdyStreamTest, GetMaxDatagramSize) {
|
|
|
3294
3187
|
return;
|
|
3295
3188
|
}
|
|
3296
3189
|
Initialize(kShouldProcessData);
|
|
3297
|
-
session_->set_local_http_datagram_support(HttpDatagramSupport::
|
|
3190
|
+
session_->set_local_http_datagram_support(HttpDatagramSupport::kDraft09);
|
|
3298
3191
|
QuicSpdySessionPeer::SetHttpDatagramSupport(session_.get(),
|
|
3299
|
-
HttpDatagramSupport::
|
|
3192
|
+
HttpDatagramSupport::kDraft09);
|
|
3300
3193
|
EXPECT_GT(stream_->GetMaxDatagramSize(), 512u);
|
|
3301
3194
|
}
|
|
3302
3195
|
|
|
@@ -154,47 +154,6 @@ bool SpdyUtils::PopulateHeaderBlockFromUrl(const std::string url,
|
|
|
154
154
|
return true;
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
// static
|
|
158
|
-
absl::optional<QuicDatagramStreamId> SpdyUtils::ParseDatagramFlowIdHeader(
|
|
159
|
-
const spdy::SpdyHeaderBlock& headers) {
|
|
160
|
-
auto flow_id_pair = headers.find("datagram-flow-id");
|
|
161
|
-
if (flow_id_pair == headers.end()) {
|
|
162
|
-
return absl::nullopt;
|
|
163
|
-
}
|
|
164
|
-
std::vector<absl::string_view> flow_id_strings =
|
|
165
|
-
absl::StrSplit(flow_id_pair->second, ',');
|
|
166
|
-
absl::optional<QuicDatagramStreamId> first_named_flow_id;
|
|
167
|
-
for (absl::string_view flow_id_string : flow_id_strings) {
|
|
168
|
-
std::vector<absl::string_view> flow_id_components =
|
|
169
|
-
absl::StrSplit(flow_id_string, ';');
|
|
170
|
-
if (flow_id_components.empty()) {
|
|
171
|
-
continue;
|
|
172
|
-
}
|
|
173
|
-
absl::string_view flow_id_value_string = flow_id_components[0];
|
|
174
|
-
quiche::QuicheTextUtils::RemoveLeadingAndTrailingWhitespace(
|
|
175
|
-
&flow_id_value_string);
|
|
176
|
-
QuicDatagramStreamId flow_id;
|
|
177
|
-
if (!absl::SimpleAtoi(flow_id_value_string, &flow_id)) {
|
|
178
|
-
continue;
|
|
179
|
-
}
|
|
180
|
-
if (flow_id_components.size() == 1) {
|
|
181
|
-
// This flow ID is unnamed, return this one.
|
|
182
|
-
return flow_id;
|
|
183
|
-
}
|
|
184
|
-
// Otherwise this is a named flow ID.
|
|
185
|
-
if (!first_named_flow_id.has_value()) {
|
|
186
|
-
first_named_flow_id = flow_id;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
return first_named_flow_id;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// static
|
|
193
|
-
void SpdyUtils::AddDatagramFlowIdHeader(spdy::SpdyHeaderBlock* headers,
|
|
194
|
-
QuicDatagramStreamId flow_id) {
|
|
195
|
-
(*headers)["datagram-flow-id"] = absl::StrCat(flow_id);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
157
|
// static
|
|
199
158
|
ParsedQuicVersion SpdyUtils::ExtractQuicVersionFromAltSvcEntry(
|
|
200
159
|
const spdy::SpdyAltSvcWireFormat::AlternativeService&
|
|
@@ -54,15 +54,6 @@ class QUIC_EXPORT_PRIVATE SpdyUtils {
|
|
|
54
54
|
static bool PopulateHeaderBlockFromUrl(const std::string url,
|
|
55
55
|
spdy::SpdyHeaderBlock* headers);
|
|
56
56
|
|
|
57
|
-
// Parses the "datagram-flow-id" header, returns the flow ID on success, or
|
|
58
|
-
// returns absl::nullopt if the header was not present or failed to parse.
|
|
59
|
-
static absl::optional<QuicDatagramStreamId> ParseDatagramFlowIdHeader(
|
|
60
|
-
const spdy::SpdyHeaderBlock& headers);
|
|
61
|
-
|
|
62
|
-
// Adds the "datagram-flow-id" header.
|
|
63
|
-
static void AddDatagramFlowIdHeader(spdy::SpdyHeaderBlock* headers,
|
|
64
|
-
QuicDatagramStreamId flow_id);
|
|
65
|
-
|
|
66
57
|
// Returns the advertised QUIC version from the specified alternative service
|
|
67
58
|
// advertisement, or ParsedQuicVersion::Unsupported() if no supported version
|
|
68
59
|
// is advertised.
|
|
@@ -34,14 +34,6 @@ static std::unique_ptr<QuicHeaderList> FromList(
|
|
|
34
34
|
return headers;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
static void ValidateDatagramFlowId(
|
|
38
|
-
const std::string& header_value,
|
|
39
|
-
absl::optional<QuicDatagramStreamId> expected_flow_id) {
|
|
40
|
-
SpdyHeaderBlock headers;
|
|
41
|
-
headers["datagram-flow-id"] = header_value;
|
|
42
|
-
ASSERT_EQ(SpdyUtils::ParseDatagramFlowIdHeader(headers), expected_flow_id);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
37
|
} // anonymous namespace
|
|
46
38
|
|
|
47
39
|
using CopyAndValidateHeaders = QuicTest;
|
|
@@ -386,30 +378,6 @@ TEST_F(PopulateHeaderBlockFromUrl, Failure) {
|
|
|
386
378
|
SpdyUtils::PopulateHeaderBlockFromUrl("www.google.com/", &headers));
|
|
387
379
|
}
|
|
388
380
|
|
|
389
|
-
using DatagramFlowIdTest = QuicTest;
|
|
390
|
-
|
|
391
|
-
TEST_F(DatagramFlowIdTest, DatagramFlowId) {
|
|
392
|
-
// Test missing header.
|
|
393
|
-
SpdyHeaderBlock headers;
|
|
394
|
-
EXPECT_EQ(SpdyUtils::ParseDatagramFlowIdHeader(headers), absl::nullopt);
|
|
395
|
-
// Add header and verify it parses.
|
|
396
|
-
QuicDatagramStreamId flow_id = 123;
|
|
397
|
-
SpdyUtils::AddDatagramFlowIdHeader(&headers, flow_id);
|
|
398
|
-
EXPECT_EQ(SpdyUtils::ParseDatagramFlowIdHeader(headers), flow_id);
|
|
399
|
-
// Test empty header.
|
|
400
|
-
ValidateDatagramFlowId("", absl::nullopt);
|
|
401
|
-
// Test invalid header.
|
|
402
|
-
ValidateDatagramFlowId("M4SQU3", absl::nullopt);
|
|
403
|
-
// Test simple header.
|
|
404
|
-
ValidateDatagramFlowId("42", 42);
|
|
405
|
-
// Test with parameter.
|
|
406
|
-
ValidateDatagramFlowId("42; abc=def", 42);
|
|
407
|
-
// Test list.
|
|
408
|
-
ValidateDatagramFlowId("42, 44; ecn-ect0, 46; ecn-ect1, 48; ecn-ce", 42);
|
|
409
|
-
// Test reordered list.
|
|
410
|
-
ValidateDatagramFlowId("44; ecn-ect0, 42, 48; ecn-ce, 46; ecn-ect1", 42);
|
|
411
|
-
}
|
|
412
|
-
|
|
413
381
|
using ExtractQuicVersionFromAltSvcEntry = QuicTest;
|
|
414
382
|
|
|
415
383
|
TEST_F(ExtractQuicVersionFromAltSvcEntry, SupportedVersion) {
|
|
@@ -179,7 +179,6 @@ void WebTransportHttp3::HeadersReceived(const spdy::SpdyHeaderBlock& headers) {
|
|
|
179
179
|
return;
|
|
180
180
|
}
|
|
181
181
|
bool should_validate_version =
|
|
182
|
-
session_->http_datagram_support() != HttpDatagramSupport::kDraft00 &&
|
|
183
182
|
session_->ShouldValidateWebTransportVersion();
|
|
184
183
|
if (should_validate_version) {
|
|
185
184
|
auto draft_version_it = headers.find("sec-webtransport-http3-draft");
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
#include "quiche/quic/core/quic_packet_number.h"
|
|
12
12
|
#include "quiche/quic/platform/api/quic_test.h"
|
|
13
13
|
|
|
14
|
-
namespace quic {
|
|
14
|
+
namespace quic::test {
|
|
15
15
|
namespace {
|
|
16
16
|
|
|
17
17
|
class PacketNumberIndexedQueueTest : public QuicTest {
|
|
@@ -202,4 +202,4 @@ TEST_F(PacketNumberIndexedQueueTest, ConstGetter) {
|
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
} // namespace
|
|
205
|
-
} // namespace quic
|
|
205
|
+
} // namespace quic::test
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
#include "absl/strings/string_view.h"
|
|
8
8
|
#include "quiche/quic/core/qpack/qpack_static_table.h"
|
|
9
9
|
#include "quiche/quic/platform/api/quic_logging.h"
|
|
10
|
+
#include "quiche/common/platform/api/quiche_logging.h"
|
|
10
11
|
|
|
11
12
|
namespace quic {
|
|
12
13
|
|
|
@@ -232,7 +233,7 @@ void QpackDecoderHeaderTable::UnregisterObserver(uint64_t required_insert_count,
|
|
|
232
233
|
}
|
|
233
234
|
|
|
234
235
|
// |observer| must have been registered.
|
|
235
|
-
|
|
236
|
+
QUICHE_NOTREACHED();
|
|
236
237
|
}
|
|
237
238
|
|
|
238
239
|
} // namespace quic
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
#include "quiche/quic/core/qpack/qpack_stream_sender_delegate.h"
|
|
12
12
|
#include "quiche/quic/core/quic_stream.h"
|
|
13
13
|
#include "quiche/quic/platform/api/quic_export.h"
|
|
14
|
+
#include "quiche/common/platform/api/quiche_logging.h"
|
|
14
15
|
|
|
15
16
|
namespace quic {
|
|
16
17
|
|
|
@@ -36,7 +37,7 @@ class QUIC_EXPORT_PRIVATE QpackSendStream : public QuicStream,
|
|
|
36
37
|
|
|
37
38
|
// The send QPACK stream is write unidirectional, so this method
|
|
38
39
|
// should never be called.
|
|
39
|
-
void OnDataAvailable() override {
|
|
40
|
+
void OnDataAvailable() override { QUICHE_NOTREACHED(); }
|
|
40
41
|
|
|
41
42
|
// Writes the instructions to peer. The stream type will be sent
|
|
42
43
|
// before the first instruction so that the peer can open an qpack stream.
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
#include "quiche/quic/core/quic_one_block_arena.h"
|
|
8
8
|
#include "quiche/quic/platform/api/quic_test.h"
|
|
9
9
|
|
|
10
|
-
namespace quic {
|
|
10
|
+
namespace quic::test {
|
|
11
11
|
namespace {
|
|
12
12
|
|
|
13
13
|
enum class TestParam { kFromHeap, kFromArena };
|
|
@@ -112,4 +112,4 @@ TEST_P(QuicArenaScopedPtrParamTest, Swap) {
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
} // namespace
|
|
115
|
-
} // namespace quic
|
|
115
|
+
} // namespace quic::test
|