@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
|
@@ -128,7 +128,7 @@ class PingAlarmDelegate : public QuicConnectionAlarmDelegate {
|
|
|
128
128
|
|
|
129
129
|
void OnAlarm() override {
|
|
130
130
|
QUICHE_DCHECK(connection_->connected());
|
|
131
|
-
QUICHE_DCHECK(!GetQuicReloadableFlag(
|
|
131
|
+
QUICHE_DCHECK(!GetQuicReloadableFlag(quic_use_ping_manager2));
|
|
132
132
|
connection_->OnPingTimeout();
|
|
133
133
|
}
|
|
134
134
|
};
|
|
@@ -3014,15 +3014,8 @@ bool QuicConnection::ProcessValidatedPacket(const QuicPacketHeader& header) {
|
|
|
3014
3014
|
", encryption level: ",
|
|
3015
3015
|
EncryptionLevelToString(
|
|
3016
3016
|
last_received_packet_info_.decrypted_level));
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
QUIC_LOG_EVERY_N_SEC(INFO, 100) << error_details;
|
|
3020
|
-
QUIC_CODE_COUNT(quic_dropped_packets_with_changed_server_address);
|
|
3021
|
-
return false;
|
|
3022
|
-
}
|
|
3023
|
-
QUIC_PEER_BUG(Server self address change) << error_details;
|
|
3024
|
-
CloseConnection(QUIC_ERROR_MIGRATING_ADDRESS, error_details,
|
|
3025
|
-
ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
|
|
3017
|
+
QUIC_LOG_EVERY_N_SEC(INFO, 100) << error_details;
|
|
3018
|
+
QUIC_CODE_COUNT(quic_dropped_packets_with_changed_server_address);
|
|
3026
3019
|
return false;
|
|
3027
3020
|
}
|
|
3028
3021
|
}
|
|
@@ -4120,6 +4113,21 @@ void QuicConnection::SendAck() {
|
|
|
4120
4113
|
visitor_->OnAckNeedsRetransmittableFrame();
|
|
4121
4114
|
}
|
|
4122
4115
|
|
|
4116
|
+
EncryptionLevel QuicConnection::GetEncryptionLevelToSendPingForSpace(
|
|
4117
|
+
PacketNumberSpace space) const {
|
|
4118
|
+
switch (space) {
|
|
4119
|
+
case INITIAL_DATA:
|
|
4120
|
+
return ENCRYPTION_INITIAL;
|
|
4121
|
+
case HANDSHAKE_DATA:
|
|
4122
|
+
return ENCRYPTION_HANDSHAKE;
|
|
4123
|
+
case APPLICATION_DATA:
|
|
4124
|
+
return framer_.GetEncryptionLevelToSendApplicationData();
|
|
4125
|
+
default:
|
|
4126
|
+
QUICHE_DCHECK(false);
|
|
4127
|
+
return NUM_ENCRYPTION_LEVELS;
|
|
4128
|
+
}
|
|
4129
|
+
}
|
|
4130
|
+
|
|
4123
4131
|
void QuicConnection::OnRetransmissionTimeout() {
|
|
4124
4132
|
ScopedRetransmissionTimeoutIndicator indicator(this);
|
|
4125
4133
|
#ifndef NDEBUG
|
|
@@ -4182,7 +4190,8 @@ void QuicConnection::OnRetransmissionTimeout() {
|
|
|
4182
4190
|
if (sent_packet_manager_
|
|
4183
4191
|
.GetEarliestPacketSentTimeForPto(&packet_number_space)
|
|
4184
4192
|
.IsInitialized()) {
|
|
4185
|
-
SendPingAtLevel(
|
|
4193
|
+
SendPingAtLevel(
|
|
4194
|
+
GetEncryptionLevelToSendPingForSpace(packet_number_space));
|
|
4186
4195
|
} else {
|
|
4187
4196
|
// The client must PTO when there is nothing in flight if the server
|
|
4188
4197
|
// could be blocked from sending by the amplification limit
|
|
@@ -4686,7 +4695,7 @@ void QuicConnection::SetPingAlarm() {
|
|
|
4686
4695
|
return;
|
|
4687
4696
|
}
|
|
4688
4697
|
if (use_ping_manager_) {
|
|
4689
|
-
QUIC_RELOADABLE_FLAG_COUNT(
|
|
4698
|
+
QUIC_RELOADABLE_FLAG_COUNT(quic_use_ping_manager2);
|
|
4690
4699
|
ping_manager_.SetAlarm(clock_->ApproximateNow(),
|
|
4691
4700
|
visitor_->ShouldKeepConnectionAlive(),
|
|
4692
4701
|
sent_packet_manager_.HasInFlightPackets());
|
|
@@ -4865,29 +4874,19 @@ QuicConnection::ScopedPacketFlusher::~ScopedPacketFlusher() {
|
|
|
4865
4874
|
}
|
|
4866
4875
|
}
|
|
4867
4876
|
|
|
4868
|
-
|
|
4869
|
-
|
|
4870
|
-
|
|
4871
|
-
|
|
4872
|
-
|
|
4873
|
-
|
|
4874
|
-
|
|
4875
|
-
|
|
4876
|
-
|
|
4877
|
-
|
|
4878
|
-
|
|
4879
|
-
|
|
4880
|
-
|
|
4881
|
-
connection_->packet_creator_.Flush();
|
|
4882
|
-
if (connection_->version().CanSendCoalescedPackets()) {
|
|
4883
|
-
connection_->FlushCoalescedPacket();
|
|
4884
|
-
}
|
|
4885
|
-
} else {
|
|
4886
|
-
connection_->packet_creator_.Flush();
|
|
4887
|
-
if (connection_->version().CanSendCoalescedPackets()) {
|
|
4888
|
-
connection_->MaybeCoalescePacketOfHigherSpace();
|
|
4889
|
-
connection_->FlushCoalescedPacket();
|
|
4890
|
-
}
|
|
4877
|
+
// INITIAL or HANDSHAKE retransmission could cause peer to derive new
|
|
4878
|
+
// keys, such that the buffered undecryptable packets may be processed.
|
|
4879
|
+
// This endpoint would derive an inflated RTT sample when receiving ACKs
|
|
4880
|
+
// of those undecryptable packets. To mitigate this, tries to coalesce as
|
|
4881
|
+
// many higher space packets as possible (via for loop inside
|
|
4882
|
+
// MaybeCoalescePacketOfHigherSpace) to fill the remaining space in the
|
|
4883
|
+
// coalescer.
|
|
4884
|
+
if (connection_->version().CanSendCoalescedPackets()) {
|
|
4885
|
+
connection_->MaybeCoalescePacketOfHigherSpace();
|
|
4886
|
+
}
|
|
4887
|
+
connection_->packet_creator_.Flush();
|
|
4888
|
+
if (connection_->version().CanSendCoalescedPackets()) {
|
|
4889
|
+
connection_->FlushCoalescedPacket();
|
|
4891
4890
|
}
|
|
4892
4891
|
connection_->FlushPackets();
|
|
4893
4892
|
if (!handshake_packet_sent_ && connection_->handshake_packet_sent_) {
|
|
@@ -5911,7 +5910,8 @@ void QuicConnection::SendAllPendingAcks() {
|
|
|
5911
5910
|
<< PacketNumberSpaceToString(
|
|
5912
5911
|
static_cast<PacketNumberSpace>(i));
|
|
5913
5912
|
ScopedEncryptionLevelContext context(
|
|
5914
|
-
this, QuicUtils::
|
|
5913
|
+
this, QuicUtils::GetEncryptionLevelToSendAckofSpace(
|
|
5914
|
+
static_cast<PacketNumberSpace>(i)));
|
|
5915
5915
|
QuicFrames frames;
|
|
5916
5916
|
frames.push_back(uber_received_packet_manager_.GetUpdatedAckFrame(
|
|
5917
5917
|
static_cast<PacketNumberSpace>(i), clock_->ApproximateNow()));
|
|
@@ -5970,8 +5970,7 @@ void QuicConnection::MaybeCoalescePacketOfHigherSpace() {
|
|
|
5970
5970
|
}
|
|
5971
5971
|
if (fill_coalesced_packet_) {
|
|
5972
5972
|
// Make sure MaybeCoalescePacketOfHigherSpace is not re-entrant.
|
|
5973
|
-
|
|
5974
|
-
flush_after_coalesce_higher_space_packets_);
|
|
5973
|
+
QUIC_BUG(quic_coalesce_packet_reentrant);
|
|
5975
5974
|
return;
|
|
5976
5975
|
}
|
|
5977
5976
|
for (EncryptionLevel retransmission_level :
|
|
@@ -6025,11 +6024,7 @@ bool QuicConnection::FlushCoalescedPacket() {
|
|
|
6025
6024
|
const size_t length = packet_creator_.SerializeCoalescedPacket(
|
|
6026
6025
|
coalesced_packet_, buffer, coalesced_packet_.max_packet_length());
|
|
6027
6026
|
if (length == 0) {
|
|
6028
|
-
if (
|
|
6029
|
-
.close_connection_if_fail_to_serialzie_coalesced_packet() &&
|
|
6030
|
-
connected_) {
|
|
6031
|
-
QUIC_RELOADABLE_FLAG_COUNT_N(
|
|
6032
|
-
quic_close_connection_if_fail_to_serialzie_coalesced_packet2, 2, 2);
|
|
6027
|
+
if (connected_) {
|
|
6033
6028
|
CloseConnection(QUIC_FAILED_TO_SERIALIZE_PACKET,
|
|
6034
6029
|
"Failed to serialize coalesced packet.",
|
|
6035
6030
|
ConnectionCloseBehavior::SILENT_CLOSE);
|
|
@@ -6927,11 +6922,38 @@ QuicConnectionId QuicConnection::GetOneActiveServerConnectionId() const {
|
|
|
6927
6922
|
|
|
6928
6923
|
std::vector<QuicConnectionId> QuicConnection::GetActiveServerConnectionIds()
|
|
6929
6924
|
const {
|
|
6925
|
+
QUICHE_DCHECK_EQ(Perspective::IS_SERVER, perspective_);
|
|
6926
|
+
std::vector<QuicConnectionId> result;
|
|
6930
6927
|
if (self_issued_cid_manager_ == nullptr) {
|
|
6931
|
-
|
|
6928
|
+
result.push_back(default_path_.server_connection_id);
|
|
6929
|
+
} else {
|
|
6930
|
+
QUICHE_DCHECK(version().HasIetfQuicFrames());
|
|
6931
|
+
result = self_issued_cid_manager_->GetUnretiredConnectionIds();
|
|
6932
6932
|
}
|
|
6933
|
-
|
|
6934
|
-
|
|
6933
|
+
if (GetQuicReloadableFlag(
|
|
6934
|
+
quic_consider_original_connection_id_as_active_pre_handshake)) {
|
|
6935
|
+
QUIC_RELOADABLE_FLAG_COUNT(
|
|
6936
|
+
quic_consider_original_connection_id_as_active_pre_handshake);
|
|
6937
|
+
if (!IsHandshakeComplete() &&
|
|
6938
|
+
original_destination_connection_id_.has_value()) {
|
|
6939
|
+
// Consider original_destination_connection_id_ as active before handshake
|
|
6940
|
+
// completes.
|
|
6941
|
+
if (std::find(result.begin(), result.end(),
|
|
6942
|
+
original_destination_connection_id_.value()) !=
|
|
6943
|
+
result.end()) {
|
|
6944
|
+
QUIC_BUG(quic_unexpected_original_destination_connection_id)
|
|
6945
|
+
<< "original_destination_connection_id: "
|
|
6946
|
+
<< original_destination_connection_id_.value()
|
|
6947
|
+
<< " is unexpectedly in active "
|
|
6948
|
+
"list";
|
|
6949
|
+
} else {
|
|
6950
|
+
result.insert(result.end(),
|
|
6951
|
+
original_destination_connection_id_.value());
|
|
6952
|
+
}
|
|
6953
|
+
QUIC_CODE_COUNT(quic_active_original_connection_id_pre_handshake);
|
|
6954
|
+
}
|
|
6955
|
+
}
|
|
6956
|
+
return result;
|
|
6935
6957
|
}
|
|
6936
6958
|
|
|
6937
6959
|
void QuicConnection::CreateConnectionIdManager() {
|
|
@@ -1863,6 +1863,10 @@ class QUIC_EXPORT_PRIVATE QuicConnection
|
|
|
1863
1863
|
bool ShouldSetRetransmissionAlarmOnPacketSent(bool in_flight,
|
|
1864
1864
|
EncryptionLevel level) const;
|
|
1865
1865
|
|
|
1866
|
+
// Determines encryption level to send ping in `packet_number_space`.
|
|
1867
|
+
EncryptionLevel GetEncryptionLevelToSendPingForSpace(
|
|
1868
|
+
PacketNumberSpace space) const;
|
|
1869
|
+
|
|
1866
1870
|
QuicConnectionContext context_;
|
|
1867
1871
|
|
|
1868
1872
|
QuicFramer framer_;
|
|
@@ -1991,7 +1995,7 @@ class QUIC_EXPORT_PRIVATE QuicConnection
|
|
|
1991
1995
|
bool defer_send_in_response_to_packets_;
|
|
1992
1996
|
|
|
1993
1997
|
// TODO(fayang): remove PING related fields below when deprecating
|
|
1994
|
-
//
|
|
1998
|
+
// quic_use_ping_manager2.
|
|
1995
1999
|
// The timeout for keep-alive PING.
|
|
1996
2000
|
QuicTime::Delta keep_alive_ping_timeout_;
|
|
1997
2001
|
|
|
@@ -2015,7 +2019,7 @@ class QUIC_EXPORT_PRIVATE QuicConnection
|
|
|
2015
2019
|
// An alarm that is scheduled when the SentPacketManager requires a delay
|
|
2016
2020
|
// before sending packets and fires when the packet may be sent.
|
|
2017
2021
|
QuicArenaScopedPtr<QuicAlarm> send_alarm_;
|
|
2018
|
-
// TODO(fayang): remove ping_alarm_ when deprecating
|
|
2022
|
+
// TODO(fayang): remove ping_alarm_ when deprecating quic_use_ping_manager2.
|
|
2019
2023
|
// An alarm that fires when a ping should be sent.
|
|
2020
2024
|
QuicArenaScopedPtr<QuicAlarm> ping_alarm_;
|
|
2021
2025
|
// An alarm that fires when an MTU probe should be sent.
|
|
@@ -2246,13 +2250,10 @@ class QUIC_EXPORT_PRIVATE QuicConnection
|
|
|
2246
2250
|
// Enable this via reloadable flag once this feature is complete.
|
|
2247
2251
|
bool connection_migration_use_new_cid_ = false;
|
|
2248
2252
|
|
|
2249
|
-
const bool flush_after_coalesce_higher_space_packets_ =
|
|
2250
|
-
GetQuicReloadableFlag(quic_flush_after_coalesce_higher_space_packets);
|
|
2251
|
-
|
|
2252
2253
|
// If true, send connection close packet on INVALID_VERSION.
|
|
2253
2254
|
bool send_connection_close_for_invalid_version_ = false;
|
|
2254
2255
|
|
|
2255
|
-
const bool use_ping_manager_ = GetQuicReloadableFlag(
|
|
2256
|
+
const bool use_ping_manager_ = GetQuicReloadableFlag(quic_use_ping_manager2);
|
|
2256
2257
|
|
|
2257
2258
|
QuicPingManager ping_manager_;
|
|
2258
2259
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
using testing::ElementsAre;
|
|
11
11
|
|
|
12
|
-
namespace quic {
|
|
12
|
+
namespace quic::test {
|
|
13
13
|
namespace {
|
|
14
14
|
|
|
15
15
|
class TraceCollector : public QuicConnectionTracer {
|
|
@@ -170,4 +170,4 @@ TEST_F(QuicConnectionContextTest, TestAlternatingSwitch) {
|
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
} // namespace
|
|
173
|
-
} // namespace quic
|
|
173
|
+
} // namespace quic::test
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
#include "quiche/quic/test_tools/quic_connection_id_manager_peer.h"
|
|
14
14
|
#include "quiche/quic/test_tools/quic_test_utils.h"
|
|
15
15
|
|
|
16
|
-
namespace quic {
|
|
16
|
+
namespace quic::test {
|
|
17
17
|
namespace {
|
|
18
18
|
|
|
19
19
|
using ::quic::test::IsError;
|
|
@@ -953,4 +953,4 @@ TEST_F(QuicSelfIssuedConnectionIdManagerTest,
|
|
|
953
953
|
}
|
|
954
954
|
|
|
955
955
|
} // namespace
|
|
956
|
-
} // namespace quic
|
|
956
|
+
} // namespace quic::test
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
#include "quiche/quic/platform/api/quic_test.h"
|
|
14
14
|
#include "quiche/quic/test_tools/quic_test_utils.h"
|
|
15
15
|
|
|
16
|
-
namespace quic {
|
|
16
|
+
namespace quic::test {
|
|
17
17
|
|
|
18
18
|
namespace {
|
|
19
19
|
|
|
@@ -178,4 +178,4 @@ TEST_F(QuicConnectionIdTest, ChangeLength) {
|
|
|
178
178
|
|
|
179
179
|
} // namespace
|
|
180
180
|
|
|
181
|
-
} // namespace quic
|
|
181
|
+
} // namespace quic::test
|
|
@@ -1563,23 +1563,9 @@ TEST_P(QuicConnectionTest, SelfAddressChangeAtServer) {
|
|
|
1563
1563
|
QuicSocketAddress self_address(host, 123);
|
|
1564
1564
|
EXPECT_EQ(0u, connection_.GetStats().packets_dropped);
|
|
1565
1565
|
EXPECT_CALL(visitor_, AllowSelfAddressChange()).WillOnce(Return(false));
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
EXPECT_TRUE(connection_.connected());
|
|
1570
|
-
EXPECT_EQ(1u, connection_.GetStats().packets_dropped);
|
|
1571
|
-
return;
|
|
1572
|
-
}
|
|
1573
|
-
if (version().handshake_protocol == PROTOCOL_TLS1_3) {
|
|
1574
|
-
EXPECT_CALL(visitor_, BeforeConnectionCloseSent());
|
|
1575
|
-
}
|
|
1576
|
-
EXPECT_CALL(visitor_, OnConnectionClosed(_, _));
|
|
1577
|
-
EXPECT_QUIC_PEER_BUG(
|
|
1578
|
-
ProcessFramePacketWithAddresses(MakeCryptoFrame(), self_address,
|
|
1579
|
-
kPeerAddress, ENCRYPTION_INITIAL),
|
|
1580
|
-
"Self address migration is not supported at the server");
|
|
1581
|
-
EXPECT_FALSE(connection_.connected());
|
|
1582
|
-
TestConnectionCloseQuicErrorCode(QUIC_ERROR_MIGRATING_ADDRESS);
|
|
1566
|
+
ProcessFramePacketWithAddresses(MakeCryptoFrame(), self_address, kPeerAddress,
|
|
1567
|
+
ENCRYPTION_INITIAL);
|
|
1568
|
+
EXPECT_TRUE(connection_.connected());
|
|
1583
1569
|
EXPECT_EQ(1u, connection_.GetStats().packets_dropped);
|
|
1584
1570
|
}
|
|
1585
1571
|
|
|
@@ -6945,7 +6931,7 @@ TEST_P(QuicConnectionTest, SendBlockedImmediately) {
|
|
|
6945
6931
|
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1);
|
|
6946
6932
|
EXPECT_CALL(debug_visitor, OnPacketSent(_, _, _, _, _, _, _, _)).Times(1);
|
|
6947
6933
|
EXPECT_EQ(0u, connection_.GetStats().blocked_frames_sent);
|
|
6948
|
-
connection_.SendControlFrame(QuicFrame(QuicBlockedFrame(1, 3)));
|
|
6934
|
+
connection_.SendControlFrame(QuicFrame(QuicBlockedFrame(1, 3, 0)));
|
|
6949
6935
|
EXPECT_EQ(1u, connection_.GetStats().blocked_frames_sent);
|
|
6950
6936
|
EXPECT_FALSE(connection_.HasQueuedData());
|
|
6951
6937
|
}
|
|
@@ -6956,7 +6942,7 @@ TEST_P(QuicConnectionTest, FailedToSendBlockedFrames) {
|
|
|
6956
6942
|
}
|
|
6957
6943
|
MockQuicConnectionDebugVisitor debug_visitor;
|
|
6958
6944
|
connection_.set_debug_visitor(&debug_visitor);
|
|
6959
|
-
QuicBlockedFrame blocked(1, 3);
|
|
6945
|
+
QuicBlockedFrame blocked(1, 3, 0);
|
|
6960
6946
|
|
|
6961
6947
|
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0);
|
|
6962
6948
|
EXPECT_CALL(debug_visitor, OnPacketSent(_, _, _, _, _, _, _, _)).Times(0);
|
|
@@ -7185,7 +7171,7 @@ TEST_P(QuicConnectionTest, ServerRetransmittableOnWire) {
|
|
|
7185
7171
|
}
|
|
7186
7172
|
|
|
7187
7173
|
TEST_P(QuicConnectionTest, RetransmittableOnWireSendFirstPacket) {
|
|
7188
|
-
if (!GetQuicReloadableFlag(
|
|
7174
|
+
if (!GetQuicReloadableFlag(quic_use_ping_manager2) ||
|
|
7189
7175
|
!VersionHasIetfQuicFrames(connection_.version().transport_version)) {
|
|
7190
7176
|
return;
|
|
7191
7177
|
}
|
|
@@ -7231,7 +7217,7 @@ TEST_P(QuicConnectionTest, RetransmittableOnWireSendFirstPacket) {
|
|
|
7231
7217
|
}
|
|
7232
7218
|
|
|
7233
7219
|
TEST_P(QuicConnectionTest, RetransmittableOnWireSendRandomBytes) {
|
|
7234
|
-
if (!GetQuicReloadableFlag(
|
|
7220
|
+
if (!GetQuicReloadableFlag(quic_use_ping_manager2) ||
|
|
7235
7221
|
!VersionHasIetfQuicFrames(connection_.version().transport_version)) {
|
|
7236
7222
|
return;
|
|
7237
7223
|
}
|
|
@@ -7280,7 +7266,7 @@ TEST_P(QuicConnectionTest, RetransmittableOnWireSendRandomBytes) {
|
|
|
7280
7266
|
|
|
7281
7267
|
TEST_P(QuicConnectionTest,
|
|
7282
7268
|
RetransmittableOnWireSendRandomBytesWithWriterBlocked) {
|
|
7283
|
-
if (!GetQuicReloadableFlag(
|
|
7269
|
+
if (!GetQuicReloadableFlag(quic_use_ping_manager2) ||
|
|
7284
7270
|
!VersionHasIetfQuicFrames(connection_.version().transport_version)) {
|
|
7285
7271
|
return;
|
|
7286
7272
|
}
|
|
@@ -8250,6 +8236,8 @@ TEST_P(QuicConnectionTest, ResetBackOffRetransmitableOnWireTimeout) {
|
|
|
8250
8236
|
peer_creator_.packet_number() + 1);
|
|
8251
8237
|
EXPECT_EQ(initial_retransmittable_on_wire_timeout,
|
|
8252
8238
|
connection_.GetPingAlarm()->deadline() - clock_.ApproximateNow());
|
|
8239
|
+
clock_.AdvanceTime(initial_retransmittable_on_wire_timeout);
|
|
8240
|
+
connection_.GetPingAlarm()->Fire();
|
|
8253
8241
|
|
|
8254
8242
|
// Verify the count of consecutive aggressive pings is reset.
|
|
8255
8243
|
for (int i = 0; i < max_aggressive_retransmittable_on_wire_ping_count; i++) {
|
|
@@ -9276,14 +9264,14 @@ TEST_P(QuicConnectionTest, CoalescedPacketThatSavesFrames) {
|
|
|
9276
9264
|
.Times(3)
|
|
9277
9265
|
.WillRepeatedly([this](const QuicCryptoFrame& /*frame*/) {
|
|
9278
9266
|
// QuicFrame takes ownership of the QuicBlockedFrame.
|
|
9279
|
-
connection_.SendControlFrame(QuicFrame(QuicBlockedFrame(1, 3)));
|
|
9267
|
+
connection_.SendControlFrame(QuicFrame(QuicBlockedFrame(1, 3, 0)));
|
|
9280
9268
|
});
|
|
9281
9269
|
} else {
|
|
9282
9270
|
EXPECT_CALL(visitor_, OnStreamFrame(_))
|
|
9283
9271
|
.Times(3)
|
|
9284
9272
|
.WillRepeatedly([this](const QuicStreamFrame& /*frame*/) {
|
|
9285
9273
|
// QuicFrame takes ownership of the QuicBlockedFrame.
|
|
9286
|
-
connection_.SendControlFrame(QuicFrame(QuicBlockedFrame(1, 3)));
|
|
9274
|
+
connection_.SendControlFrame(QuicFrame(QuicBlockedFrame(1, 3, 0)));
|
|
9287
9275
|
});
|
|
9288
9276
|
}
|
|
9289
9277
|
|
|
@@ -9919,12 +9907,8 @@ TEST_P(QuicConnectionTest, FailToCoalescePacket) {
|
|
|
9919
9907
|
|
|
9920
9908
|
EXPECT_CALL(visitor_, OnHandshakePacketSent());
|
|
9921
9909
|
|
|
9922
|
-
|
|
9923
|
-
|
|
9924
|
-
EXPECT_CALL(visitor_,
|
|
9925
|
-
OnConnectionClosed(_, ConnectionCloseSource::FROM_SELF))
|
|
9926
|
-
.WillOnce(Invoke(this, &QuicConnectionTest::SaveConnectionCloseFrame));
|
|
9927
|
-
}
|
|
9910
|
+
EXPECT_CALL(visitor_, OnConnectionClosed(_, ConnectionCloseSource::FROM_SELF))
|
|
9911
|
+
.WillOnce(Invoke(this, &QuicConnectionTest::SaveConnectionCloseFrame));
|
|
9928
9912
|
|
|
9929
9913
|
ProcessDataPacketAtLevel(1, !kHasStopWaiting, ENCRYPTION_INITIAL);
|
|
9930
9914
|
auto test_body = [&] {
|
|
@@ -9970,16 +9954,11 @@ TEST_P(QuicConnectionTest, FailToCoalescePacket) {
|
|
|
9970
9954
|
|
|
9971
9955
|
EXPECT_QUIC_BUG(test_body(), "SerializeCoalescedPacket failed.");
|
|
9972
9956
|
|
|
9973
|
-
|
|
9974
|
-
|
|
9975
|
-
|
|
9976
|
-
|
|
9977
|
-
|
|
9978
|
-
EXPECT_EQ(saved_connection_close_frame_.error_details,
|
|
9979
|
-
"Failed to serialize coalesced packet.");
|
|
9980
|
-
} else {
|
|
9981
|
-
EXPECT_TRUE(connection_.connected());
|
|
9982
|
-
}
|
|
9957
|
+
EXPECT_FALSE(connection_.connected());
|
|
9958
|
+
EXPECT_THAT(saved_connection_close_frame_.quic_error_code,
|
|
9959
|
+
IsError(QUIC_FAILED_TO_SERIALIZE_PACKET));
|
|
9960
|
+
EXPECT_EQ(saved_connection_close_frame_.error_details,
|
|
9961
|
+
"Failed to serialize coalesced packet.");
|
|
9983
9962
|
}
|
|
9984
9963
|
|
|
9985
9964
|
TEST_P(QuicConnectionTest, LegacyVersionEncapsulation) {
|
|
@@ -11203,40 +11182,13 @@ TEST_P(QuicConnectionTest, ClientAckDelayForAsyncPacketProcessing) {
|
|
|
11203
11182
|
std::make_unique<TaggingEncrypter>(0x01));
|
|
11204
11183
|
connection_.SetDefaultEncryptionLevel(ENCRYPTION_HANDSHAKE);
|
|
11205
11184
|
// Verify HANDSHAKE packet gets processed.
|
|
11206
|
-
|
|
11207
|
-
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1);
|
|
11208
|
-
} else {
|
|
11209
|
-
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(2);
|
|
11210
|
-
}
|
|
11185
|
+
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1);
|
|
11211
11186
|
connection_.GetProcessUndecryptablePacketsAlarm()->Fire();
|
|
11212
|
-
|
|
11213
|
-
|
|
11214
|
-
ASSERT_FALSE(connection_.HasPendingAcks());
|
|
11215
|
-
} else {
|
|
11216
|
-
ASSERT_TRUE(connection_.HasPendingAcks());
|
|
11217
|
-
// Send ACKs.
|
|
11218
|
-
clock_.AdvanceTime(connection_.GetAckAlarm()->deadline() - clock_.Now());
|
|
11219
|
-
connection_.GetAckAlarm()->Fire();
|
|
11220
|
-
}
|
|
11187
|
+
// Verify immediate ACK has been sent out when flush went out of scope.
|
|
11188
|
+
ASSERT_FALSE(connection_.HasPendingAcks());
|
|
11221
11189
|
ASSERT_FALSE(writer_->ack_frames().empty());
|
|
11222
|
-
|
|
11223
|
-
|
|
11224
|
-
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100),
|
|
11225
|
-
writer_->ack_frames()[0].ack_delay_time);
|
|
11226
|
-
ASSERT_TRUE(writer_->coalesced_packet() == nullptr);
|
|
11227
|
-
return;
|
|
11228
|
-
}
|
|
11229
|
-
// Verify the ack_delay_time in the INITIAL ACK frame is 1ms.
|
|
11230
|
-
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(1),
|
|
11231
|
-
writer_->ack_frames()[0].ack_delay_time);
|
|
11232
|
-
// Process the coalesced HANDSHAKE packet.
|
|
11233
|
-
ASSERT_TRUE(writer_->coalesced_packet() != nullptr);
|
|
11234
|
-
auto packet = writer_->coalesced_packet()->Clone();
|
|
11235
|
-
writer_->framer()->ProcessPacket(*packet);
|
|
11236
|
-
ASSERT_FALSE(writer_->ack_frames().empty());
|
|
11237
|
-
// Verify the ack_delay_time in the HANDSHAKE ACK frame includes the
|
|
11238
|
-
// buffering time.
|
|
11239
|
-
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(101),
|
|
11190
|
+
// Verify the ack_delay_time in the sent HANDSHAKE ACK frame is 100ms.
|
|
11191
|
+
EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100),
|
|
11240
11192
|
writer_->ack_frames()[0].ack_delay_time);
|
|
11241
11193
|
ASSERT_TRUE(writer_->coalesced_packet() == nullptr);
|
|
11242
11194
|
}
|
|
@@ -14999,21 +14951,12 @@ TEST_P(QuicConnectionTest, FailedToRetransmitShlo) {
|
|
|
14999
14951
|
connection_.GetAckAlarm()->deadline());
|
|
15000
14952
|
// ACK is not throttled by amplification limit, and SHLO is bundled. Also
|
|
15001
14953
|
// HANDSHAKE + 1RTT packets get coalesced.
|
|
15002
|
-
|
|
15003
|
-
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(3);
|
|
15004
|
-
} else {
|
|
15005
|
-
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(2);
|
|
15006
|
-
}
|
|
14954
|
+
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(3);
|
|
15007
14955
|
// ACK alarm fires.
|
|
15008
14956
|
clock_.AdvanceTime(kAlarmGranularity);
|
|
15009
14957
|
connection_.GetAckAlarm()->Fire();
|
|
15010
|
-
|
|
15011
|
-
|
|
15012
|
-
EXPECT_EQ(0x04040404u, writer_->final_bytes_of_last_packet());
|
|
15013
|
-
} else {
|
|
15014
|
-
// Verify HANDSHAKE packet is coalesced with INITIAL ACK + SHLO.
|
|
15015
|
-
EXPECT_EQ(0x03030303u, writer_->final_bytes_of_last_packet());
|
|
15016
|
-
}
|
|
14958
|
+
// Verify 1-RTT packet is coalesced.
|
|
14959
|
+
EXPECT_EQ(0x04040404u, writer_->final_bytes_of_last_packet());
|
|
15017
14960
|
// Only the first packet in the coalesced packet has been processed,
|
|
15018
14961
|
// verify SHLO is bundled with INITIAL ACK.
|
|
15019
14962
|
EXPECT_EQ(1u, writer_->ack_frames().size());
|
|
@@ -15024,16 +14967,12 @@ TEST_P(QuicConnectionTest, FailedToRetransmitShlo) {
|
|
|
15024
14967
|
writer_->framer()->ProcessPacket(*packet);
|
|
15025
14968
|
EXPECT_EQ(0u, writer_->ack_frames().size());
|
|
15026
14969
|
EXPECT_EQ(1u, writer_->crypto_frames().size());
|
|
15027
|
-
|
|
15028
|
-
|
|
15029
|
-
|
|
15030
|
-
|
|
15031
|
-
|
|
15032
|
-
|
|
15033
|
-
EXPECT_EQ(1u, writer_->stream_frames().size());
|
|
15034
|
-
} else {
|
|
15035
|
-
ASSERT_TRUE(writer_->coalesced_packet() == nullptr);
|
|
15036
|
-
}
|
|
14970
|
+
// Process the coalesced 1-RTT packet.
|
|
14971
|
+
ASSERT_TRUE(writer_->coalesced_packet() != nullptr);
|
|
14972
|
+
packet = writer_->coalesced_packet()->Clone();
|
|
14973
|
+
writer_->framer()->ProcessPacket(*packet);
|
|
14974
|
+
EXPECT_EQ(0u, writer_->crypto_frames().size());
|
|
14975
|
+
EXPECT_EQ(1u, writer_->stream_frames().size());
|
|
15037
14976
|
|
|
15038
14977
|
// Received INITIAL 3.
|
|
15039
14978
|
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(AnyNumber());
|
|
@@ -15272,22 +15211,12 @@ TEST_P(QuicConnectionTest, NoExtraPaddingInReserializedInitial) {
|
|
|
15272
15211
|
// Server receives INITIAL 3, this will serialzie FS 7 (stream 4, stream 8),
|
|
15273
15212
|
// which will trigger a flush of a coalesced packet consists of INITIAL 4,
|
|
15274
15213
|
// HS 5 and FS 6 (stream 4).
|
|
15275
|
-
|
|
15276
|
-
|
|
15277
|
-
|
|
15278
|
-
|
|
15279
|
-
|
|
15280
|
-
|
|
15281
|
-
connection_.sent_packet_manager().GetLargestSentPacket().ToUint64());
|
|
15282
|
-
} else {
|
|
15283
|
-
// Expect QUIC_BUG due to extra padding.
|
|
15284
|
-
EXPECT_QUIC_BUG(
|
|
15285
|
-
{ ProcessDataPacketAtLevel(3, !kHasStopWaiting, ENCRYPTION_INITIAL); },
|
|
15286
|
-
"Reserialize initial packet in coalescer has unexpected size");
|
|
15287
|
-
EXPECT_EQ(
|
|
15288
|
-
debug_visitor_sent_count + 1,
|
|
15289
|
-
connection_.sent_packet_manager().GetLargestSentPacket().ToUint64());
|
|
15290
|
-
}
|
|
15214
|
+
|
|
15215
|
+
// Expect no QUIC_BUG.
|
|
15216
|
+
ProcessDataPacketAtLevel(3, !kHasStopWaiting, ENCRYPTION_INITIAL);
|
|
15217
|
+
EXPECT_EQ(
|
|
15218
|
+
debug_visitor_sent_count,
|
|
15219
|
+
connection_.sent_packet_manager().GetLargestSentPacket().ToUint64());
|
|
15291
15220
|
|
|
15292
15221
|
// The error only happens if after serializing the second 1RTT packet(pkt #7),
|
|
15293
15222
|
// the pending padding bytes is non zero.
|
|
@@ -15339,27 +15268,15 @@ TEST_P(QuicConnectionTest, ReportedAckDelayIncludesQueuingDelay) {
|
|
|
15339
15268
|
|
|
15340
15269
|
connection_.GetProcessUndecryptablePacketsAlarm()->Fire();
|
|
15341
15270
|
ASSERT_TRUE(connection_.HasPendingAcks());
|
|
15342
|
-
|
|
15343
|
-
|
|
15344
|
-
|
|
15345
|
-
|
|
15346
|
-
clock_.Now());
|
|
15347
|
-
} else {
|
|
15348
|
-
EXPECT_EQ(clock_.Now() + DefaultDelayedAckTime(),
|
|
15349
|
-
connection_.GetAckAlarm()->deadline());
|
|
15350
|
-
clock_.AdvanceTime(DefaultDelayedAckTime());
|
|
15351
|
-
}
|
|
15271
|
+
EXPECT_EQ(packet_receipt_time + DefaultDelayedAckTime(),
|
|
15272
|
+
connection_.GetAckAlarm()->deadline());
|
|
15273
|
+
clock_.AdvanceTime(packet_receipt_time + DefaultDelayedAckTime() -
|
|
15274
|
+
clock_.Now());
|
|
15352
15275
|
// Fire ACK alarm.
|
|
15353
15276
|
connection_.GetAckAlarm()->Fire();
|
|
15354
15277
|
ASSERT_EQ(1u, writer_->ack_frames().size());
|
|
15355
|
-
|
|
15356
|
-
|
|
15357
|
-
EXPECT_EQ(DefaultDelayedAckTime(), writer_->ack_frames()[0].ack_delay_time);
|
|
15358
|
-
} else {
|
|
15359
|
-
// Verify ACK delay time = queuing delay + ack delay
|
|
15360
|
-
EXPECT_EQ(DefaultDelayedAckTime() + kQueuingDelay,
|
|
15361
|
-
writer_->ack_frames()[0].ack_delay_time);
|
|
15362
|
-
}
|
|
15278
|
+
// Verify ACK delay time does not include queuing delay.
|
|
15279
|
+
EXPECT_EQ(DefaultDelayedAckTime(), writer_->ack_frames()[0].ack_delay_time);
|
|
15363
15280
|
}
|
|
15364
15281
|
|
|
15365
15282
|
TEST_P(QuicConnectionTest, CoalesceOneRTTPacketWithInitialAndHandshakePackets) {
|
|
@@ -15424,10 +15341,6 @@ TEST_P(QuicConnectionTest, CoalesceOneRTTPacketWithInitialAndHandshakePackets) {
|
|
|
15424
15341
|
auto packet = writer_->coalesced_packet()->Clone();
|
|
15425
15342
|
writer_->framer()->ProcessPacket(*packet);
|
|
15426
15343
|
EXPECT_EQ(1u, writer_->crypto_frames().size());
|
|
15427
|
-
if (!GetQuicReloadableFlag(quic_flush_after_coalesce_higher_space_packets)) {
|
|
15428
|
-
ASSERT_TRUE(writer_->coalesced_packet() == nullptr);
|
|
15429
|
-
return;
|
|
15430
|
-
}
|
|
15431
15344
|
// Process 1-RTT packet.
|
|
15432
15345
|
ASSERT_TRUE(writer_->coalesced_packet() != nullptr);
|
|
15433
15346
|
packet = writer_->coalesced_packet()->Clone();
|
|
@@ -307,13 +307,6 @@ QUIC_EXPORT_PRIVATE QuicPacketNumber FirstSendingPacketNumber();
|
|
|
307
307
|
QUIC_EXPORT_PRIVATE extern const char* const kEPIDGoogleFrontEnd;
|
|
308
308
|
QUIC_EXPORT_PRIVATE extern const char* const kEPIDGoogleFrontEnd0;
|
|
309
309
|
|
|
310
|
-
// HTTP/3 Datagrams.
|
|
311
|
-
enum : QuicDatagramContextId {
|
|
312
|
-
kFirstDatagramContextIdClient = 0,
|
|
313
|
-
kFirstDatagramContextIdServer = 1,
|
|
314
|
-
kDatagramContextIdIncrement = 2,
|
|
315
|
-
};
|
|
316
|
-
|
|
317
310
|
enum : uint64_t {
|
|
318
311
|
kHttpDatagramStreamIdDivisor = 4,
|
|
319
312
|
};
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
#include "quiche/quic/core/quic_utils.h"
|
|
18
18
|
#include "quiche/quic/platform/api/quic_bug_tracker.h"
|
|
19
19
|
#include "quiche/quic/platform/api/quic_flag_utils.h"
|
|
20
|
+
#include "quiche/quic/platform/api/quic_flags.h"
|
|
20
21
|
|
|
21
22
|
namespace quic {
|
|
22
23
|
|
|
@@ -81,10 +82,17 @@ void QuicControlFrameManager::WriteOrBufferWindowUpdate(
|
|
|
81
82
|
QuicWindowUpdateFrame(++last_control_frame_id_, id, byte_offset)));
|
|
82
83
|
}
|
|
83
84
|
|
|
84
|
-
void QuicControlFrameManager::WriteOrBufferBlocked(
|
|
85
|
+
void QuicControlFrameManager::WriteOrBufferBlocked(
|
|
86
|
+
QuicStreamId id, QuicStreamOffset byte_offset) {
|
|
85
87
|
QUIC_DVLOG(1) << "Writing BLOCKED_FRAME";
|
|
86
|
-
|
|
87
|
-
|
|
88
|
+
if (GetQuicReloadableFlag(quic_include_offset_in_blocked_frames)) {
|
|
89
|
+
QUIC_RELOADABLE_FLAG_COUNT(quic_include_offset_in_blocked_frames);
|
|
90
|
+
WriteOrBufferQuicFrame(
|
|
91
|
+
QuicFrame(QuicBlockedFrame(++last_control_frame_id_, id, byte_offset)));
|
|
92
|
+
} else {
|
|
93
|
+
WriteOrBufferQuicFrame(
|
|
94
|
+
QuicFrame(QuicBlockedFrame(++last_control_frame_id_, id, 0)));
|
|
95
|
+
}
|
|
88
96
|
}
|
|
89
97
|
|
|
90
98
|
void QuicControlFrameManager::WriteOrBufferStreamsBlocked(QuicStreamCount count,
|
|
@@ -69,7 +69,7 @@ class QUIC_EXPORT_PRIVATE QuicControlFrameManager {
|
|
|
69
69
|
|
|
70
70
|
// Tries to send a BLOCKED_FRAME. Buffers the frame if it cannot be sent
|
|
71
71
|
// immediately.
|
|
72
|
-
void WriteOrBufferBlocked(QuicStreamId id);
|
|
72
|
+
void WriteOrBufferBlocked(QuicStreamId id, QuicStreamOffset byte_offset);
|
|
73
73
|
|
|
74
74
|
// Tries to send a STREAMS_BLOCKED Frame. Buffers the frame if it cannot be
|
|
75
75
|
// sent immediately.
|
|
@@ -72,7 +72,7 @@ class QuicControlFrameManagerTest : public QuicTest {
|
|
|
72
72
|
manager_->WriteOrBufferGoAway(QUIC_PEER_GOING_AWAY, kTestStreamId,
|
|
73
73
|
"Going away.");
|
|
74
74
|
manager_->WriteOrBufferWindowUpdate(kTestStreamId, 100);
|
|
75
|
-
manager_->WriteOrBufferBlocked(kTestStreamId);
|
|
75
|
+
manager_->WriteOrBufferBlocked(kTestStreamId, 0);
|
|
76
76
|
manager_->WriteOrBufferStopSending(
|
|
77
77
|
QuicResetStreamError::FromInternal(kTestStopSendingCode),
|
|
78
78
|
kTestStreamId);
|
|
@@ -93,7 +93,7 @@ class QuicControlFrameManagerTest : public QuicTest {
|
|
|
93
93
|
QuicGoAwayFrame goaway_ = {2, QUIC_PEER_GOING_AWAY, kTestStreamId,
|
|
94
94
|
"Going away."};
|
|
95
95
|
QuicWindowUpdateFrame window_update_ = {3, kTestStreamId, 100};
|
|
96
|
-
QuicBlockedFrame blocked_ = {4, kTestStreamId};
|
|
96
|
+
QuicBlockedFrame blocked_ = {4, kTestStreamId, 0};
|
|
97
97
|
QuicStopSendingFrame stop_sending_ = {5, kTestStreamId, kTestStopSendingCode};
|
|
98
98
|
MockQuicConnectionHelper helper_;
|
|
99
99
|
MockAlarmFactory alarm_factory_;
|