@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
|
@@ -10,13 +10,6 @@ namespace quic {
|
|
|
10
10
|
|
|
11
11
|
QuicBlockedFrame::QuicBlockedFrame() : QuicInlinedFrame(BLOCKED_FRAME) {}
|
|
12
12
|
|
|
13
|
-
QuicBlockedFrame::QuicBlockedFrame(QuicControlFrameId control_frame_id,
|
|
14
|
-
QuicStreamId stream_id)
|
|
15
|
-
: QuicInlinedFrame(BLOCKED_FRAME),
|
|
16
|
-
control_frame_id(control_frame_id),
|
|
17
|
-
stream_id(stream_id),
|
|
18
|
-
offset(0) {}
|
|
19
|
-
|
|
20
13
|
QuicBlockedFrame::QuicBlockedFrame(QuicControlFrameId control_frame_id,
|
|
21
14
|
QuicStreamId stream_id,
|
|
22
15
|
QuicStreamOffset offset)
|
|
@@ -28,7 +21,8 @@ QuicBlockedFrame::QuicBlockedFrame(QuicControlFrameId control_frame_id,
|
|
|
28
21
|
std::ostream& operator<<(std::ostream& os,
|
|
29
22
|
const QuicBlockedFrame& blocked_frame) {
|
|
30
23
|
os << "{ control_frame_id: " << blocked_frame.control_frame_id
|
|
31
|
-
<< ", stream_id: " << blocked_frame.stream_id
|
|
24
|
+
<< ", stream_id: " << blocked_frame.stream_id
|
|
25
|
+
<< ", offset: " << blocked_frame.offset << " }\n";
|
|
32
26
|
return os;
|
|
33
27
|
}
|
|
34
28
|
|
|
@@ -20,7 +20,6 @@ namespace quic {
|
|
|
20
20
|
struct QUIC_EXPORT_PRIVATE QuicBlockedFrame
|
|
21
21
|
: public QuicInlinedFrame<QuicBlockedFrame> {
|
|
22
22
|
QuicBlockedFrame();
|
|
23
|
-
QuicBlockedFrame(QuicControlFrameId control_frame_id, QuicStreamId stream_id);
|
|
24
23
|
QuicBlockedFrame(QuicControlFrameId control_frame_id, QuicStreamId stream_id,
|
|
25
24
|
QuicStreamOffset offset);
|
|
26
25
|
|
|
@@ -25,6 +25,8 @@ struct QUIC_EXPORT_PRIVATE QuicCryptoFrame {
|
|
|
25
25
|
friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
|
|
26
26
|
const QuicCryptoFrame& s);
|
|
27
27
|
|
|
28
|
+
// TODO(haoyuewang) Consider replace the EncryptionLevel here with
|
|
29
|
+
// PacketNumberSpace.
|
|
28
30
|
// When writing a crypto frame to a packet, the packet must be encrypted at
|
|
29
31
|
// |level|. When a crypto frame is read, the encryption level of the packet it
|
|
30
32
|
// was received in is put in |level|.
|
|
@@ -252,9 +252,10 @@ TEST_F(QuicFramesTest, BlockedFrameToString) {
|
|
|
252
252
|
SetControlFrameId(4, &frame);
|
|
253
253
|
EXPECT_EQ(4u, GetControlFrameId(frame));
|
|
254
254
|
frame.blocked_frame.stream_id = 1;
|
|
255
|
+
frame.blocked_frame.offset = 2;
|
|
255
256
|
std::ostringstream stream;
|
|
256
257
|
stream << frame.blocked_frame;
|
|
257
|
-
EXPECT_EQ("{ control_frame_id: 4, stream_id: 1 }\n", stream.str());
|
|
258
|
+
EXPECT_EQ("{ control_frame_id: 4, stream_id: 1, offset: 2 }\n", stream.str());
|
|
258
259
|
EXPECT_TRUE(IsControlFrame(frame.type));
|
|
259
260
|
}
|
|
260
261
|
|
|
@@ -68,10 +68,8 @@ Capsule::Capsule(CapsuleType capsule_type) : capsule_type_(capsule_type) {
|
|
|
68
68
|
|
|
69
69
|
// static
|
|
70
70
|
Capsule Capsule::LegacyDatagram(
|
|
71
|
-
absl::optional<QuicDatagramContextId> context_id,
|
|
72
71
|
absl::string_view http_datagram_payload) {
|
|
73
72
|
Capsule capsule(CapsuleType::LEGACY_DATAGRAM);
|
|
74
|
-
capsule.legacy_datagram_capsule().context_id = context_id;
|
|
75
73
|
capsule.legacy_datagram_capsule().http_datagram_payload =
|
|
76
74
|
http_datagram_payload;
|
|
77
75
|
return capsule;
|
|
@@ -134,10 +132,8 @@ bool Capsule::operator==(const Capsule& other) const {
|
|
|
134
132
|
}
|
|
135
133
|
switch (capsule_type_) {
|
|
136
134
|
case CapsuleType::LEGACY_DATAGRAM:
|
|
137
|
-
return legacy_datagram_capsule_.
|
|
138
|
-
|
|
139
|
-
legacy_datagram_capsule_.http_datagram_payload ==
|
|
140
|
-
other.legacy_datagram_capsule_.http_datagram_payload;
|
|
135
|
+
return legacy_datagram_capsule_.http_datagram_payload ==
|
|
136
|
+
other.legacy_datagram_capsule_.http_datagram_payload;
|
|
141
137
|
case CapsuleType::DATAGRAM_WITHOUT_CONTEXT:
|
|
142
138
|
return datagram_without_context_capsule_.http_datagram_payload ==
|
|
143
139
|
other.datagram_without_context_capsule_.http_datagram_payload;
|
|
@@ -155,10 +151,6 @@ std::string Capsule::ToString() const {
|
|
|
155
151
|
std::string rv = CapsuleTypeToString(capsule_type_);
|
|
156
152
|
switch (capsule_type_) {
|
|
157
153
|
case CapsuleType::LEGACY_DATAGRAM:
|
|
158
|
-
if (legacy_datagram_capsule_.context_id.has_value()) {
|
|
159
|
-
absl::StrAppend(&rv, "(", legacy_datagram_capsule_.context_id.value(),
|
|
160
|
-
")");
|
|
161
|
-
}
|
|
162
154
|
absl::StrAppend(&rv, "[",
|
|
163
155
|
absl::BytesToHexString(
|
|
164
156
|
legacy_datagram_capsule_.http_datagram_payload),
|
|
@@ -203,10 +195,6 @@ quiche::QuicheBuffer SerializeCapsule(
|
|
|
203
195
|
case CapsuleType::LEGACY_DATAGRAM:
|
|
204
196
|
capsule_data_length =
|
|
205
197
|
capsule.legacy_datagram_capsule().http_datagram_payload.length();
|
|
206
|
-
if (capsule.legacy_datagram_capsule().context_id.has_value()) {
|
|
207
|
-
capsule_data_length += QuicDataWriter::GetVarInt62Len(
|
|
208
|
-
capsule.legacy_datagram_capsule().context_id.value());
|
|
209
|
-
}
|
|
210
198
|
break;
|
|
211
199
|
case CapsuleType::DATAGRAM_WITHOUT_CONTEXT:
|
|
212
200
|
capsule_data_length = capsule.datagram_without_context_capsule()
|
|
@@ -237,14 +225,6 @@ quiche::QuicheBuffer SerializeCapsule(
|
|
|
237
225
|
}
|
|
238
226
|
switch (capsule.capsule_type()) {
|
|
239
227
|
case CapsuleType::LEGACY_DATAGRAM:
|
|
240
|
-
if (capsule.legacy_datagram_capsule().context_id.has_value()) {
|
|
241
|
-
if (!writer.WriteVarInt62(
|
|
242
|
-
capsule.legacy_datagram_capsule().context_id.value())) {
|
|
243
|
-
QUIC_BUG(datagram capsule context ID write fail)
|
|
244
|
-
<< "Failed to write LEGACY_DATAGRAM CAPSULE context ID";
|
|
245
|
-
return {};
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
228
|
if (!writer.WriteStringPiece(
|
|
249
229
|
capsule.legacy_datagram_capsule().http_datagram_payload)) {
|
|
250
230
|
QUIC_BUG(datagram capsule payload write fail)
|
|
@@ -31,7 +31,6 @@ QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
|
|
|
31
31
|
const CapsuleType& capsule_type);
|
|
32
32
|
|
|
33
33
|
struct QUIC_EXPORT_PRIVATE LegacyDatagramCapsule {
|
|
34
|
-
absl::optional<QuicDatagramContextId> context_id;
|
|
35
34
|
absl::string_view http_datagram_payload;
|
|
36
35
|
};
|
|
37
36
|
struct QUIC_EXPORT_PRIVATE DatagramWithoutContextCapsule {
|
|
@@ -50,7 +49,6 @@ struct QUIC_EXPORT_PRIVATE CloseWebTransportSessionCapsule {
|
|
|
50
49
|
class QUIC_EXPORT_PRIVATE Capsule {
|
|
51
50
|
public:
|
|
52
51
|
static Capsule LegacyDatagram(
|
|
53
|
-
absl::optional<QuicDatagramContextId> context_id = absl::nullopt,
|
|
54
52
|
absl::string_view http_datagram_payload = absl::string_view());
|
|
55
53
|
static Capsule DatagramWithoutContext(
|
|
56
54
|
absl::string_view http_datagram_payload = absl::string_view());
|
|
@@ -74,8 +74,7 @@ TEST_F(CapsuleTest, LegacyDatagramCapsule) {
|
|
|
74
74
|
"a1a2a3a4a5a6a7a8" // HTTP Datagram payload
|
|
75
75
|
);
|
|
76
76
|
std::string datagram_payload = absl::HexStringToBytes("a1a2a3a4a5a6a7a8");
|
|
77
|
-
Capsule expected_capsule =
|
|
78
|
-
Capsule::LegacyDatagram(/*context_id=*/absl::nullopt, datagram_payload);
|
|
77
|
+
Capsule expected_capsule = Capsule::LegacyDatagram(datagram_payload);
|
|
79
78
|
{
|
|
80
79
|
EXPECT_CALL(visitor_, OnCapsule(expected_capsule));
|
|
81
80
|
ASSERT_TRUE(capsule_parser_.IngestCapsuleFragment(capsule_fragment));
|
|
@@ -17,10 +17,12 @@
|
|
|
17
17
|
#include "absl/time/time.h"
|
|
18
18
|
#include "quiche/quic/core/crypto/null_encrypter.h"
|
|
19
19
|
#include "quiche/quic/core/crypto/quic_client_session_cache.h"
|
|
20
|
+
#include "quiche/quic/core/frames/quic_blocked_frame.h"
|
|
20
21
|
#include "quiche/quic/core/http/http_constants.h"
|
|
21
22
|
#include "quiche/quic/core/http/quic_spdy_client_stream.h"
|
|
22
23
|
#include "quiche/quic/core/http/web_transport_http3.h"
|
|
23
24
|
#include "quiche/quic/core/quic_connection.h"
|
|
25
|
+
#include "quiche/quic/core/quic_constants.h"
|
|
24
26
|
#include "quiche/quic/core/quic_data_writer.h"
|
|
25
27
|
#include "quiche/quic/core/quic_epoll_connection_helper.h"
|
|
26
28
|
#include "quiche/quic/core/quic_error_codes.h"
|
|
@@ -91,27 +93,39 @@ const char kFooResponseBody[] = "Artichoke hearts make me happy.";
|
|
|
91
93
|
const char kBarResponseBody[] = "Palm hearts are pretty delicious, also.";
|
|
92
94
|
const char kTestUserAgentId[] = "quic/core/http/end_to_end_test.cc";
|
|
93
95
|
const float kSessionToStreamRatio = 1.5;
|
|
96
|
+
const int kLongConnectionIdLength = 16;
|
|
94
97
|
|
|
95
98
|
// Run all tests with the cross products of all versions.
|
|
96
99
|
struct TestParams {
|
|
97
|
-
TestParams(const ParsedQuicVersion& version, QuicTag congestion_control_tag
|
|
98
|
-
|
|
100
|
+
TestParams(const ParsedQuicVersion& version, QuicTag congestion_control_tag,
|
|
101
|
+
int override_server_connection_id_length)
|
|
102
|
+
: version(version),
|
|
103
|
+
congestion_control_tag(congestion_control_tag),
|
|
104
|
+
override_server_connection_id_length(
|
|
105
|
+
override_server_connection_id_length) {}
|
|
99
106
|
|
|
100
107
|
friend std::ostream& operator<<(std::ostream& os, const TestParams& p) {
|
|
101
108
|
os << "{ version: " << ParsedQuicVersionToString(p.version);
|
|
102
109
|
os << " congestion_control_tag: "
|
|
103
|
-
<< QuicTagToString(p.congestion_control_tag)
|
|
110
|
+
<< QuicTagToString(p.congestion_control_tag)
|
|
111
|
+
<< " connection ID length: " << p.override_server_connection_id_length
|
|
112
|
+
<< " }";
|
|
104
113
|
return os;
|
|
105
114
|
}
|
|
106
115
|
|
|
107
116
|
ParsedQuicVersion version;
|
|
108
117
|
QuicTag congestion_control_tag;
|
|
118
|
+
int override_server_connection_id_length;
|
|
109
119
|
};
|
|
110
120
|
|
|
111
121
|
// Used by ::testing::PrintToStringParamName().
|
|
112
122
|
std::string PrintToString(const TestParams& p) {
|
|
113
|
-
std::string rv = absl::StrCat(
|
|
114
|
-
|
|
123
|
+
std::string rv = absl::StrCat(
|
|
124
|
+
ParsedQuicVersionToString(p.version), "_",
|
|
125
|
+
QuicTagToString(p.congestion_control_tag), "_",
|
|
126
|
+
std::to_string((p.override_server_connection_id_length == -1)
|
|
127
|
+
? static_cast<int>(kQuicDefaultConnectionIdLength)
|
|
128
|
+
: p.override_server_connection_id_length));
|
|
115
129
|
std::replace(rv.begin(), rv.end(), ',', '_');
|
|
116
130
|
std::replace(rv.begin(), rv.end(), ' ', '_');
|
|
117
131
|
return rv;
|
|
@@ -120,15 +134,27 @@ std::string PrintToString(const TestParams& p) {
|
|
|
120
134
|
// Constructs various test permutations.
|
|
121
135
|
std::vector<TestParams> GetTestParams() {
|
|
122
136
|
std::vector<TestParams> params;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
137
|
+
std::vector<int> connection_id_lengths{-1, kLongConnectionIdLength};
|
|
138
|
+
for (auto connection_id_length : connection_id_lengths) {
|
|
139
|
+
for (const QuicTag congestion_control_tag : {kTBBR, kQBIC, kB2ON}) {
|
|
140
|
+
if (!GetQuicReloadableFlag(quic_allow_client_enabled_bbr_v2) &&
|
|
141
|
+
congestion_control_tag == kB2ON) {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
for (const ParsedQuicVersion& version : CurrentSupportedVersions()) {
|
|
145
|
+
// TODO(b/232269029): Q050 should be able to handle 0-RTT when the
|
|
146
|
+
// initial connection ID is > 8 bytes, but it cannot. This is an
|
|
147
|
+
// invasive fix that has no impact as long as gQUIC clients always use
|
|
148
|
+
// 8B server connection IDs. If this bug is fixed, we can change
|
|
149
|
+
// 'UsesTls' to 'AllowsVariableLengthConnectionIds()' below to test
|
|
150
|
+
// qQUIC as well.
|
|
151
|
+
if (connection_id_length == -1 || version.UsesTls()) {
|
|
152
|
+
params.push_back(TestParams(version, congestion_control_tag,
|
|
153
|
+
connection_id_length));
|
|
154
|
+
}
|
|
155
|
+
} // End of outer version loop.
|
|
156
|
+
} // End of congestion_control_tag loop.
|
|
157
|
+
} // End of connection_id_length loop.
|
|
132
158
|
|
|
133
159
|
return params;
|
|
134
160
|
}
|
|
@@ -182,6 +208,8 @@ class EndToEndTest : public QuicTestWithParam<TestParams> {
|
|
|
182
208
|
server_supported_versions_(CurrentSupportedVersions()),
|
|
183
209
|
chlo_multiplier_(0),
|
|
184
210
|
stream_factory_(nullptr),
|
|
211
|
+
override_server_connection_id_length_(
|
|
212
|
+
GetParam().override_server_connection_id_length),
|
|
185
213
|
expected_server_connection_id_length_(kQuicDefaultConnectionIdLength) {
|
|
186
214
|
QUIC_LOG(INFO) << "Using Configuration: " << GetParam();
|
|
187
215
|
|
|
@@ -796,7 +824,7 @@ class EndToEndTest : public QuicTestWithParam<TestParams> {
|
|
|
796
824
|
}
|
|
797
825
|
}
|
|
798
826
|
|
|
799
|
-
ScopedEnvironmentForThreads environment_;
|
|
827
|
+
quiche::test::ScopedEnvironmentForThreads environment_;
|
|
800
828
|
bool initialized_;
|
|
801
829
|
// If true, the Initialize() function will create |client_| and starts to
|
|
802
830
|
// connect to the server.
|
|
@@ -820,7 +848,7 @@ class EndToEndTest : public QuicTestWithParam<TestParams> {
|
|
|
820
848
|
QuicTestServer::StreamFactory* stream_factory_;
|
|
821
849
|
std::string pre_shared_key_client_;
|
|
822
850
|
std::string pre_shared_key_server_;
|
|
823
|
-
int override_server_connection_id_length_
|
|
851
|
+
int override_server_connection_id_length_;
|
|
824
852
|
int override_client_connection_id_length_ = -1;
|
|
825
853
|
uint8_t expected_server_connection_id_length_;
|
|
826
854
|
bool enable_web_transport_ = false;
|
|
@@ -1080,7 +1108,8 @@ TEST_P(EndToEndTest, ForcedVersionNegotiation) {
|
|
|
1080
1108
|
}
|
|
1081
1109
|
|
|
1082
1110
|
TEST_P(EndToEndTest, SimpleRequestResponseZeroConnectionID) {
|
|
1083
|
-
if (!version_.AllowsVariableLengthConnectionIds()
|
|
1111
|
+
if (!version_.AllowsVariableLengthConnectionIds() ||
|
|
1112
|
+
override_server_connection_id_length_ > -1) {
|
|
1084
1113
|
ASSERT_TRUE(Initialize());
|
|
1085
1114
|
return;
|
|
1086
1115
|
}
|
|
@@ -1098,7 +1127,8 @@ TEST_P(EndToEndTest, SimpleRequestResponseZeroConnectionID) {
|
|
|
1098
1127
|
}
|
|
1099
1128
|
|
|
1100
1129
|
TEST_P(EndToEndTest, ZeroConnectionID) {
|
|
1101
|
-
if (!version_.AllowsVariableLengthConnectionIds()
|
|
1130
|
+
if (!version_.AllowsVariableLengthConnectionIds() ||
|
|
1131
|
+
override_server_connection_id_length_ > -1) {
|
|
1102
1132
|
ASSERT_TRUE(Initialize());
|
|
1103
1133
|
return;
|
|
1104
1134
|
}
|
|
@@ -1114,7 +1144,8 @@ TEST_P(EndToEndTest, ZeroConnectionID) {
|
|
|
1114
1144
|
}
|
|
1115
1145
|
|
|
1116
1146
|
TEST_P(EndToEndTest, BadConnectionIdLength) {
|
|
1117
|
-
if (!version_.AllowsVariableLengthConnectionIds()
|
|
1147
|
+
if (!version_.AllowsVariableLengthConnectionIds() ||
|
|
1148
|
+
override_server_connection_id_length_ > -1) {
|
|
1118
1149
|
ASSERT_TRUE(Initialize());
|
|
1119
1150
|
return;
|
|
1120
1151
|
}
|
|
@@ -1128,23 +1159,6 @@ TEST_P(EndToEndTest, BadConnectionIdLength) {
|
|
|
1128
1159
|
.length());
|
|
1129
1160
|
}
|
|
1130
1161
|
|
|
1131
|
-
// Tests a very long (16-byte) initial destination connection ID to make
|
|
1132
|
-
// sure the dispatcher properly replaces it with an 8-byte one.
|
|
1133
|
-
TEST_P(EndToEndTest, LongBadConnectionIdLength) {
|
|
1134
|
-
if (!version_.AllowsVariableLengthConnectionIds()) {
|
|
1135
|
-
ASSERT_TRUE(Initialize());
|
|
1136
|
-
return;
|
|
1137
|
-
}
|
|
1138
|
-
override_server_connection_id_length_ = 16;
|
|
1139
|
-
ASSERT_TRUE(Initialize());
|
|
1140
|
-
SendSynchronousFooRequestAndCheckResponse();
|
|
1141
|
-
EXPECT_EQ(kQuicDefaultConnectionIdLength, client_->client()
|
|
1142
|
-
->client_session()
|
|
1143
|
-
->connection()
|
|
1144
|
-
->connection_id()
|
|
1145
|
-
.length());
|
|
1146
|
-
}
|
|
1147
|
-
|
|
1148
1162
|
TEST_P(EndToEndTest, ClientConnectionId) {
|
|
1149
1163
|
if (!version_.SupportsClientConnectionIds()) {
|
|
1150
1164
|
ASSERT_TRUE(Initialize());
|
|
@@ -1179,7 +1193,8 @@ TEST_P(EndToEndTest, ForcedVersionNegotiationAndClientConnectionId) {
|
|
|
1179
1193
|
}
|
|
1180
1194
|
|
|
1181
1195
|
TEST_P(EndToEndTest, ForcedVersionNegotiationAndBadConnectionIdLength) {
|
|
1182
|
-
if (!version_.AllowsVariableLengthConnectionIds()
|
|
1196
|
+
if (!version_.AllowsVariableLengthConnectionIds() ||
|
|
1197
|
+
override_server_connection_id_length_ > -1) {
|
|
1183
1198
|
ASSERT_TRUE(Initialize());
|
|
1184
1199
|
return;
|
|
1185
1200
|
}
|
|
@@ -1200,13 +1215,13 @@ TEST_P(EndToEndTest, ForcedVersionNegotiationAndBadConnectionIdLength) {
|
|
|
1200
1215
|
// connection ID.
|
|
1201
1216
|
TEST_P(EndToEndTest, ForcedVersNegoAndClientCIDAndLongCID) {
|
|
1202
1217
|
if (!version_.SupportsClientConnectionIds() ||
|
|
1203
|
-
!version_.AllowsVariableLengthConnectionIds()
|
|
1218
|
+
!version_.AllowsVariableLengthConnectionIds() ||
|
|
1219
|
+
override_server_connection_id_length_ != kLongConnectionIdLength) {
|
|
1204
1220
|
ASSERT_TRUE(Initialize());
|
|
1205
1221
|
return;
|
|
1206
1222
|
}
|
|
1207
1223
|
client_supported_versions_.insert(client_supported_versions_.begin(),
|
|
1208
1224
|
QuicVersionReservedForNegotiation());
|
|
1209
|
-
override_server_connection_id_length_ = 16;
|
|
1210
1225
|
override_client_connection_id_length_ = 18;
|
|
1211
1226
|
ASSERT_TRUE(Initialize());
|
|
1212
1227
|
ASSERT_TRUE(ServerSendsVersionNegotiation());
|
|
@@ -1224,7 +1239,8 @@ TEST_P(EndToEndTest, ForcedVersNegoAndClientCIDAndLongCID) {
|
|
|
1224
1239
|
}
|
|
1225
1240
|
|
|
1226
1241
|
TEST_P(EndToEndTest, MixGoodAndBadConnectionIdLengths) {
|
|
1227
|
-
if (!version_.AllowsVariableLengthConnectionIds()
|
|
1242
|
+
if (!version_.AllowsVariableLengthConnectionIds() ||
|
|
1243
|
+
override_server_connection_id_length_ > -1) {
|
|
1228
1244
|
ASSERT_TRUE(Initialize());
|
|
1229
1245
|
return;
|
|
1230
1246
|
}
|
|
@@ -1372,7 +1388,8 @@ TEST_P(EndToEndTest, MultipleRequestResponse) {
|
|
|
1372
1388
|
}
|
|
1373
1389
|
|
|
1374
1390
|
TEST_P(EndToEndTest, MultipleRequestResponseZeroConnectionID) {
|
|
1375
|
-
if (!version_.AllowsVariableLengthConnectionIds()
|
|
1391
|
+
if (!version_.AllowsVariableLengthConnectionIds() ||
|
|
1392
|
+
override_server_connection_id_length_ > -1) {
|
|
1376
1393
|
ASSERT_TRUE(Initialize());
|
|
1377
1394
|
return;
|
|
1378
1395
|
}
|
|
@@ -1531,7 +1548,14 @@ TEST_P(EndToEndTest, LargePostWithPacketLoss) {
|
|
|
1531
1548
|
|
|
1532
1549
|
EXPECT_EQ(kFooResponseBody,
|
|
1533
1550
|
client_->SendCustomSynchronousRequest(headers, body));
|
|
1534
|
-
|
|
1551
|
+
if (override_server_connection_id_length_ == -1) {
|
|
1552
|
+
// If the client sends a longer connection ID, we can end up with dropped
|
|
1553
|
+
// packets. The packets_dropped counter increments whenever a packet arrives
|
|
1554
|
+
// with a new server connection ID that is not INITIAL, RETRY, or 1-RTT.
|
|
1555
|
+
// With packet losses, we could easily lose a server INITIAL and have the
|
|
1556
|
+
// first observed server packet be HANDSHAKE.
|
|
1557
|
+
VerifyCleanConnection(true);
|
|
1558
|
+
}
|
|
1535
1559
|
}
|
|
1536
1560
|
|
|
1537
1561
|
// Regression test for b/80090281.
|
|
@@ -4454,6 +4478,72 @@ class ServerStreamThatSendsHugeResponseFactory
|
|
|
4454
4478
|
int64_t body_bytes_;
|
|
4455
4479
|
};
|
|
4456
4480
|
|
|
4481
|
+
class BlockedFrameObserver : public QuicConnectionDebugVisitor {
|
|
4482
|
+
public:
|
|
4483
|
+
std::vector<QuicBlockedFrame> blocked_frames() const {
|
|
4484
|
+
return blocked_frames_;
|
|
4485
|
+
}
|
|
4486
|
+
|
|
4487
|
+
void OnBlockedFrame(const QuicBlockedFrame& frame) override {
|
|
4488
|
+
blocked_frames_.push_back(frame);
|
|
4489
|
+
}
|
|
4490
|
+
|
|
4491
|
+
private:
|
|
4492
|
+
std::vector<QuicBlockedFrame> blocked_frames_;
|
|
4493
|
+
};
|
|
4494
|
+
|
|
4495
|
+
TEST_P(EndToEndTest, BlockedFrameIncludesOffset) {
|
|
4496
|
+
if (!version_.HasIetfQuicFrames()) {
|
|
4497
|
+
// For Google QUIC, the BLOCKED frame offset is ignored.
|
|
4498
|
+
Initialize();
|
|
4499
|
+
return;
|
|
4500
|
+
}
|
|
4501
|
+
|
|
4502
|
+
set_smaller_flow_control_receive_window();
|
|
4503
|
+
ASSERT_TRUE(Initialize());
|
|
4504
|
+
|
|
4505
|
+
// Observe the connection for BLOCKED frames.
|
|
4506
|
+
BlockedFrameObserver observer;
|
|
4507
|
+
QuicConnection* client_connection = GetClientConnection();
|
|
4508
|
+
ASSERT_TRUE(client_connection);
|
|
4509
|
+
client_connection->set_debug_visitor(&observer);
|
|
4510
|
+
|
|
4511
|
+
// Set the response body larger than the flow control window so the server
|
|
4512
|
+
// must receive a window update from the client before it can finish sending
|
|
4513
|
+
// it (hence, causing the server to send a BLOCKED frame)
|
|
4514
|
+
uint32_t response_body_size =
|
|
4515
|
+
client_config_.GetInitialSessionFlowControlWindowToSend() + 10;
|
|
4516
|
+
std::string response_body(response_body_size, 'a');
|
|
4517
|
+
AddToCache("/blocked", 200, response_body);
|
|
4518
|
+
SendSynchronousRequestAndCheckResponse("/blocked", response_body);
|
|
4519
|
+
client_->Disconnect();
|
|
4520
|
+
|
|
4521
|
+
bool include_offset_flag =
|
|
4522
|
+
GetQuicReloadableFlag(quic_include_offset_in_blocked_frames);
|
|
4523
|
+
QuicStreamOffset expected_connection_offset =
|
|
4524
|
+
include_offset_flag
|
|
4525
|
+
? client_config_.GetInitialSessionFlowControlWindowToSend()
|
|
4526
|
+
: 0;
|
|
4527
|
+
QuicStreamOffset expected_stream_offset =
|
|
4528
|
+
include_offset_flag
|
|
4529
|
+
? client_config_.GetInitialStreamFlowControlWindowToSend()
|
|
4530
|
+
: 0;
|
|
4531
|
+
|
|
4532
|
+
ASSERT_GE(observer.blocked_frames().size(), static_cast<uint64_t>(0));
|
|
4533
|
+
for (const QuicBlockedFrame& frame : observer.blocked_frames()) {
|
|
4534
|
+
if (frame.stream_id ==
|
|
4535
|
+
QuicUtils::GetInvalidStreamId(version_.transport_version)) {
|
|
4536
|
+
// connection-level BLOCKED frame
|
|
4537
|
+
ASSERT_EQ(frame.offset, expected_connection_offset);
|
|
4538
|
+
} else {
|
|
4539
|
+
// stream-level BLOCKED frame
|
|
4540
|
+
ASSERT_EQ(frame.offset, expected_stream_offset);
|
|
4541
|
+
}
|
|
4542
|
+
}
|
|
4543
|
+
|
|
4544
|
+
client_connection->set_debug_visitor(nullptr);
|
|
4545
|
+
}
|
|
4546
|
+
|
|
4457
4547
|
TEST_P(EndToEndTest, EarlyResponseFinRecording) {
|
|
4458
4548
|
set_smaller_flow_control_receive_window();
|
|
4459
4549
|
|
|
@@ -4774,6 +4864,8 @@ TEST_P(EndToEndTest, SendStatelessResetTokenInShlo) {
|
|
|
4774
4864
|
// Regression test for b/116200989.
|
|
4775
4865
|
TEST_P(EndToEndTest,
|
|
4776
4866
|
SendStatelessResetIfServerConnectionClosedLocallyDuringHandshake) {
|
|
4867
|
+
SetQuicReloadableFlag(
|
|
4868
|
+
quic_consider_original_connection_id_as_active_pre_handshake, true);
|
|
4777
4869
|
connect_to_server_on_initialize_ = false;
|
|
4778
4870
|
ASSERT_TRUE(Initialize());
|
|
4779
4871
|
|
|
@@ -5562,14 +5654,12 @@ TEST_P(EndToEndPacketReorderingTest, Buffer0RttRequest) {
|
|
|
5562
5654
|
// Disconnect for next 0-rtt request.
|
|
5563
5655
|
client_->Disconnect();
|
|
5564
5656
|
|
|
5565
|
-
// Client
|
|
5566
|
-
// Buffer a CHLO till
|
|
5567
|
-
|
|
5657
|
+
// Client has valid Session Ticket now. Do a 0-RTT request.
|
|
5658
|
+
// Buffer a CHLO till the request is sent out. HTTP/3 sends two packets: a
|
|
5659
|
+
// SETTINGS frame and a request.
|
|
5660
|
+
reorder_writer_->SetDelay(version_.UsesHttp3() ? 2 : 1);
|
|
5568
5661
|
// Only send out a CHLO.
|
|
5569
5662
|
client_->client()->Initialize();
|
|
5570
|
-
client_->client()->StartConnect();
|
|
5571
|
-
EXPECT_TRUE(client_->client()->WaitForOneRttKeysAvailable());
|
|
5572
|
-
ASSERT_TRUE(client_->client()->connected());
|
|
5573
5663
|
|
|
5574
5664
|
// Send a request before handshake finishes.
|
|
5575
5665
|
SpdyHeaderBlock headers;
|
|
@@ -5584,10 +5674,7 @@ TEST_P(EndToEndPacketReorderingTest, Buffer0RttRequest) {
|
|
|
5584
5674
|
QuicConnection* client_connection = GetClientConnection();
|
|
5585
5675
|
ASSERT_TRUE(client_connection);
|
|
5586
5676
|
QuicConnectionStats client_stats = client_connection->GetStats();
|
|
5587
|
-
|
|
5588
|
-
// the delay, server processes packet 2 and later drops packet 1. ACK is
|
|
5589
|
-
// bundled with SHLO, such that 1 can be detected loss by time threshold.
|
|
5590
|
-
EXPECT_LE(0u, client_stats.packets_lost);
|
|
5677
|
+
EXPECT_EQ(0u, client_stats.packets_lost);
|
|
5591
5678
|
EXPECT_TRUE(client_->client()->EarlyDataAccepted());
|
|
5592
5679
|
}
|
|
5593
5680
|
|
|
@@ -5853,7 +5940,8 @@ TEST_P(EndToEndTest, CustomTransportParameters) {
|
|
|
5853
5940
|
}
|
|
5854
5941
|
|
|
5855
5942
|
TEST_P(EndToEndTest, LegacyVersionEncapsulation) {
|
|
5856
|
-
if (!version_.HasLongHeaderLengths()
|
|
5943
|
+
if (!version_.HasLongHeaderLengths() ||
|
|
5944
|
+
override_server_connection_id_length_ > -1) {
|
|
5857
5945
|
// Decapsulating Legacy Version Encapsulation packets from these versions
|
|
5858
5946
|
// is not currently supported in QuicDispatcher.
|
|
5859
5947
|
ASSERT_TRUE(Initialize());
|
|
@@ -5870,7 +5958,8 @@ TEST_P(EndToEndTest, LegacyVersionEncapsulation) {
|
|
|
5870
5958
|
}
|
|
5871
5959
|
|
|
5872
5960
|
TEST_P(EndToEndTest, LegacyVersionEncapsulationWithMultiPacketChlo) {
|
|
5873
|
-
if (!version_.HasLongHeaderLengths()
|
|
5961
|
+
if (!version_.HasLongHeaderLengths() ||
|
|
5962
|
+
override_server_connection_id_length_ > -1) {
|
|
5874
5963
|
// Decapsulating Legacy Version Encapsulation packets from these versions
|
|
5875
5964
|
// is not currently supported in QuicDispatcher.
|
|
5876
5965
|
ASSERT_TRUE(Initialize());
|
|
@@ -5897,7 +5986,8 @@ TEST_P(EndToEndTest, LegacyVersionEncapsulationWithMultiPacketChlo) {
|
|
|
5897
5986
|
}
|
|
5898
5987
|
|
|
5899
5988
|
TEST_P(EndToEndTest, LegacyVersionEncapsulationWithVersionNegotiation) {
|
|
5900
|
-
if (!version_.HasLongHeaderLengths()
|
|
5989
|
+
if (!version_.HasLongHeaderLengths() ||
|
|
5990
|
+
override_server_connection_id_length_ > -1) {
|
|
5901
5991
|
// Decapsulating Legacy Version Encapsulation packets from these versions
|
|
5902
5992
|
// is not currently supported in QuicDispatcher.
|
|
5903
5993
|
ASSERT_TRUE(Initialize());
|
|
@@ -5916,7 +6006,8 @@ TEST_P(EndToEndTest, LegacyVersionEncapsulationWithVersionNegotiation) {
|
|
|
5916
6006
|
}
|
|
5917
6007
|
|
|
5918
6008
|
TEST_P(EndToEndTest, LegacyVersionEncapsulationWithLoss) {
|
|
5919
|
-
if (!version_.HasLongHeaderLengths()
|
|
6009
|
+
if (!version_.HasLongHeaderLengths() ||
|
|
6010
|
+
override_server_connection_id_length_ > -1) {
|
|
5920
6011
|
// Decapsulating Legacy Version Encapsulation packets from these versions
|
|
5921
6012
|
// is not currently supported in QuicDispatcher.
|
|
5922
6013
|
ASSERT_TRUE(Initialize());
|
|
@@ -5979,7 +6070,7 @@ TEST_P(EndToEndTest, ChaosProtectionDisabled) {
|
|
|
5979
6070
|
// Parse the saved packet to make sure it's valid.
|
|
5980
6071
|
SimpleQuicFramer validation_framer({version_});
|
|
5981
6072
|
validation_framer.framer()->SetInitialObfuscators(
|
|
5982
|
-
GetClientConnection()->
|
|
6073
|
+
GetClientConnection()->GetOriginalDestinationConnectionId());
|
|
5983
6074
|
ASSERT_GT(copying_writer->packets().size(), 0u);
|
|
5984
6075
|
EXPECT_TRUE(validation_framer.ProcessPacket(*copying_writer->packets()[0]));
|
|
5985
6076
|
// TODO(dschinazi) figure out a way to use a MockRandom in this test so we
|
|
@@ -17,8 +17,8 @@ std::string H3SettingsToString(Http3AndQpackSettingsIdentifiers identifier) {
|
|
|
17
17
|
RETURN_STRING_LITERAL(SETTINGS_QPACK_MAX_TABLE_CAPACITY);
|
|
18
18
|
RETURN_STRING_LITERAL(SETTINGS_MAX_FIELD_SECTION_SIZE);
|
|
19
19
|
RETURN_STRING_LITERAL(SETTINGS_QPACK_BLOCKED_STREAMS);
|
|
20
|
-
RETURN_STRING_LITERAL(SETTINGS_H3_DATAGRAM_DRAFT00);
|
|
21
20
|
RETURN_STRING_LITERAL(SETTINGS_H3_DATAGRAM_DRAFT04);
|
|
21
|
+
RETURN_STRING_LITERAL(SETTINGS_H3_DATAGRAM_DRAFT09);
|
|
22
22
|
RETURN_STRING_LITERAL(SETTINGS_WEBTRANS_DRAFT00);
|
|
23
23
|
RETURN_STRING_LITERAL(SETTINGS_ENABLE_CONNECT_PROTOCOL);
|
|
24
24
|
}
|
|
@@ -38,10 +38,10 @@ enum Http3AndQpackSettingsIdentifiers : uint64_t {
|
|
|
38
38
|
// Same value as spdy::SETTINGS_MAX_HEADER_LIST_SIZE.
|
|
39
39
|
SETTINGS_MAX_FIELD_SECTION_SIZE = 0x06,
|
|
40
40
|
SETTINGS_QPACK_BLOCKED_STREAMS = 0x07,
|
|
41
|
-
// draft-ietf-masque-h3-datagram-00.
|
|
42
|
-
SETTINGS_H3_DATAGRAM_DRAFT00 = 0x276,
|
|
43
41
|
// draft-ietf-masque-h3-datagram-04.
|
|
44
42
|
SETTINGS_H3_DATAGRAM_DRAFT04 = 0xffd277,
|
|
43
|
+
// draft-ietf-masque-h3-datagram-09.
|
|
44
|
+
SETTINGS_H3_DATAGRAM_DRAFT09 = 0x33,
|
|
45
45
|
// draft-ietf-webtrans-http3-00
|
|
46
46
|
SETTINGS_WEBTRANS_DRAFT00 = 0x2b603742,
|
|
47
47
|
// draft-ietf-httpbis-h3-websockets
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
using ::testing::ElementsAre;
|
|
13
13
|
using ::testing::Pair;
|
|
14
14
|
|
|
15
|
-
namespace quic {
|
|
15
|
+
namespace quic::test {
|
|
16
16
|
|
|
17
17
|
class QuicHeaderListTest : public QuicTest {};
|
|
18
18
|
|
|
@@ -83,4 +83,4 @@ TEST_F(QuicHeaderListTest, IsCopyableAndAssignable) {
|
|
|
83
83
|
Pair("beep", "")));
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
} // namespace quic
|
|
86
|
+
} // namespace quic::test
|
|
@@ -101,9 +101,9 @@ class MockVisitor : public SpdyFramerVisitorInterface {
|
|
|
101
101
|
(SpdyStreamId last_accepted_stream_id, SpdyErrorCode error_code),
|
|
102
102
|
(override));
|
|
103
103
|
MOCK_METHOD(void, OnHeaders,
|
|
104
|
-
(SpdyStreamId stream_id,
|
|
105
|
-
SpdyStreamId parent_stream_id, bool exclusive,
|
|
106
|
-
bool end),
|
|
104
|
+
(SpdyStreamId stream_id, size_t payload_length, bool has_priority,
|
|
105
|
+
int weight, SpdyStreamId parent_stream_id, bool exclusive,
|
|
106
|
+
bool fin, bool end),
|
|
107
107
|
(override));
|
|
108
108
|
MOCK_METHOD(void, OnWindowUpdate,
|
|
109
109
|
(SpdyStreamId stream_id, int delta_window_size), (override));
|
|
@@ -111,7 +111,8 @@ class MockVisitor : public SpdyFramerVisitorInterface {
|
|
|
111
111
|
(SpdyStreamId stream_id, SpdyStreamId promised_stream_id,
|
|
112
112
|
bool end),
|
|
113
113
|
(override));
|
|
114
|
-
MOCK_METHOD(void, OnContinuation,
|
|
114
|
+
MOCK_METHOD(void, OnContinuation,
|
|
115
|
+
(SpdyStreamId stream_id, size_t payload_size, bool end),
|
|
115
116
|
(override));
|
|
116
117
|
MOCK_METHOD(
|
|
117
118
|
void, OnAltSvc,
|
|
@@ -281,17 +282,20 @@ class QuicHeadersStreamTest : public QuicTestWithParam<TestParams> {
|
|
|
281
282
|
|
|
282
283
|
// Parse the outgoing data and check that it matches was was written.
|
|
283
284
|
if (is_request) {
|
|
284
|
-
EXPECT_CALL(
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
285
|
+
EXPECT_CALL(
|
|
286
|
+
visitor_,
|
|
287
|
+
OnHeaders(stream_id, saved_data_.length() - spdy::kFrameHeaderSize,
|
|
288
|
+
kHasPriority, Spdy3PriorityToHttp2Weight(priority),
|
|
289
|
+
/*parent_stream_id=*/0,
|
|
290
|
+
/*exclusive=*/false, fin, kFrameComplete));
|
|
289
291
|
} else {
|
|
290
|
-
EXPECT_CALL(
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
292
|
+
EXPECT_CALL(
|
|
293
|
+
visitor_,
|
|
294
|
+
OnHeaders(stream_id, saved_data_.length() - spdy::kFrameHeaderSize,
|
|
295
|
+
!kHasPriority,
|
|
296
|
+
/*weight=*/0,
|
|
297
|
+
/*parent_stream_id=*/0,
|
|
298
|
+
/*exclusive=*/false, fin, kFrameComplete));
|
|
295
299
|
}
|
|
296
300
|
headers_handler_ = std::make_unique<RecordingHeadersHandler>();
|
|
297
301
|
EXPECT_CALL(visitor_, OnHeaderFrameStart(stream_id))
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
#include "quiche/quic/core/quic_types.h"
|
|
11
11
|
#include "quiche/quic/platform/api/quic_export.h"
|
|
12
12
|
#include "quiche/quic/platform/api/quic_logging.h"
|
|
13
|
+
#include "quiche/common/platform/api/quiche_logging.h"
|
|
13
14
|
|
|
14
15
|
namespace quic {
|
|
15
16
|
|
|
@@ -46,7 +47,7 @@ class QUIC_EXPORT_PRIVATE QuicSendControlStream : public QuicStream {
|
|
|
46
47
|
|
|
47
48
|
// The send control stream is write unidirectional, so this method should
|
|
48
49
|
// never be called.
|
|
49
|
-
void OnDataAvailable() override {
|
|
50
|
+
void OnDataAvailable() override { QUICHE_NOTREACHED(); }
|
|
50
51
|
|
|
51
52
|
private:
|
|
52
53
|
// Track if a settings frame is already sent.
|