@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
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
#include "quiche/quic/platform/api/quic_test.h"
|
|
10
10
|
|
|
11
|
-
namespace quic {
|
|
11
|
+
namespace quic::test {
|
|
12
12
|
|
|
13
13
|
namespace {
|
|
14
14
|
|
|
@@ -121,4 +121,4 @@ TEST_F(QuicServerIdTest, Equals) {
|
|
|
121
121
|
|
|
122
122
|
} // namespace
|
|
123
123
|
|
|
124
|
-
} // namespace quic
|
|
124
|
+
} // namespace quic::test
|
|
@@ -543,7 +543,7 @@ void QuicSession::OnBlockedFrame(const QuicBlockedFrame& frame) {
|
|
|
543
543
|
// streams: if we have a large window then maybe something
|
|
544
544
|
// had gone wrong with the flow control accounting.
|
|
545
545
|
QUIC_DLOG(INFO) << ENDPOINT << "Received BLOCKED frame with stream id: "
|
|
546
|
-
<< frame.stream_id;
|
|
546
|
+
<< frame.stream_id << ", offset: " << frame.offset;
|
|
547
547
|
}
|
|
548
548
|
|
|
549
549
|
bool QuicSession::CheckStreamNotBusyLooping(QuicStream* stream,
|
|
@@ -939,8 +939,8 @@ void QuicSession::SendGoAway(QuicErrorCode error_code,
|
|
|
939
939
|
reason);
|
|
940
940
|
}
|
|
941
941
|
|
|
942
|
-
void QuicSession::SendBlocked(QuicStreamId id) {
|
|
943
|
-
control_frame_manager_.WriteOrBufferBlocked(id);
|
|
942
|
+
void QuicSession::SendBlocked(QuicStreamId id, QuicStreamOffset byte_offset) {
|
|
943
|
+
control_frame_manager_.WriteOrBufferBlocked(id, byte_offset);
|
|
944
944
|
}
|
|
945
945
|
|
|
946
946
|
void QuicSession::SendWindowUpdate(QuicStreamId id,
|
|
@@ -1558,7 +1558,7 @@ bool QuicSession::OnNewDecryptionKeyAvailable(
|
|
|
1558
1558
|
bool set_alternative_decrypter, bool latch_once_used) {
|
|
1559
1559
|
if (connection_->version().handshake_protocol == PROTOCOL_TLS1_3 &&
|
|
1560
1560
|
!connection()->framer().HasEncrypterOfEncryptionLevel(
|
|
1561
|
-
QuicUtils::
|
|
1561
|
+
QuicUtils::GetEncryptionLevelToSendAckofSpace(
|
|
1562
1562
|
QuicUtils::GetPacketNumberSpace(level)))) {
|
|
1563
1563
|
// This should never happen because connection should never decrypt a packet
|
|
1564
1564
|
// while an ACK for it cannot be encrypted.
|
|
@@ -266,7 +266,7 @@ class QUIC_EXPORT_PRIVATE QuicSession
|
|
|
266
266
|
virtual void SendGoAway(QuicErrorCode error_code, const std::string& reason);
|
|
267
267
|
|
|
268
268
|
// Sends a BLOCKED frame.
|
|
269
|
-
virtual void SendBlocked(QuicStreamId id);
|
|
269
|
+
virtual void SendBlocked(QuicStreamId id, QuicStreamOffset byte_offset);
|
|
270
270
|
|
|
271
271
|
// Sends a WINDOW_UPDATE frame.
|
|
272
272
|
virtual void SendWindowUpdate(QuicStreamId id, QuicStreamOffset byte_offset);
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
#include "quiche/quic/test_tools/quic_stream_peer.h"
|
|
39
39
|
#include "quiche/quic/test_tools/quic_stream_send_buffer_peer.h"
|
|
40
40
|
#include "quiche/quic/test_tools/quic_test_utils.h"
|
|
41
|
+
#include "quiche/common/platform/api/quiche_logging.h"
|
|
41
42
|
#include "quiche/common/quiche_mem_slice_storage.h"
|
|
42
43
|
|
|
43
44
|
using spdy::kV3HighestPriority;
|
|
@@ -186,6 +187,21 @@ class TestCryptoStream : public QuicCryptoStream, public QuicCryptoHandshaker {
|
|
|
186
187
|
return level != ENCRYPTION_ZERO_RTT;
|
|
187
188
|
}
|
|
188
189
|
|
|
190
|
+
EncryptionLevel GetEncryptionLevelToSendCryptoDataOfSpace(
|
|
191
|
+
PacketNumberSpace space) const override {
|
|
192
|
+
switch (space) {
|
|
193
|
+
case INITIAL_DATA:
|
|
194
|
+
return ENCRYPTION_INITIAL;
|
|
195
|
+
case HANDSHAKE_DATA:
|
|
196
|
+
return ENCRYPTION_HANDSHAKE;
|
|
197
|
+
case APPLICATION_DATA:
|
|
198
|
+
return ENCRYPTION_FORWARD_SECURE;
|
|
199
|
+
default:
|
|
200
|
+
QUICHE_DCHECK(false);
|
|
201
|
+
return NUM_ENCRYPTION_LEVELS;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
189
205
|
private:
|
|
190
206
|
using QuicCryptoStream::session;
|
|
191
207
|
|
|
@@ -2959,7 +2975,11 @@ TEST_P(QuicSessionTestServer, WriteBufferedCryptoFrames) {
|
|
|
2959
2975
|
|
|
2960
2976
|
EXPECT_CALL(*connection_, SendCryptoData(ENCRYPTION_INITIAL, 350, 1000))
|
|
2961
2977
|
.WillOnce(Return(350));
|
|
2962
|
-
EXPECT_CALL(
|
|
2978
|
+
EXPECT_CALL(
|
|
2979
|
+
*connection_,
|
|
2980
|
+
SendCryptoData(crypto_stream->GetEncryptionLevelToSendCryptoDataOfSpace(
|
|
2981
|
+
QuicUtils::GetPacketNumberSpace(ENCRYPTION_ZERO_RTT)),
|
|
2982
|
+
1350, 0))
|
|
2963
2983
|
.WillOnce(Return(1350));
|
|
2964
2984
|
session_.OnCanWrite();
|
|
2965
2985
|
EXPECT_FALSE(session_.HasPendingHandshake());
|
|
@@ -150,7 +150,7 @@ void PendingStream::AddBytesConsumed(QuicByteCount bytes) {
|
|
|
150
150
|
void PendingStream::ResetWithError(QuicResetStreamError /*error*/) {
|
|
151
151
|
// Currently PendingStream is only read-unidirectional. It shouldn't send
|
|
152
152
|
// Reset.
|
|
153
|
-
|
|
153
|
+
QUICHE_NOTREACHED();
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
void PendingStream::OnUnrecoverableError(QuicErrorCode error,
|
|
@@ -741,15 +741,12 @@ void QuicStream::MaybeSendBlocked() {
|
|
|
741
741
|
<< ENDPOINT << "MaybeSendBlocked called on stream without flow control";
|
|
742
742
|
return;
|
|
743
743
|
}
|
|
744
|
-
|
|
745
|
-
session_->SendBlocked(id_);
|
|
746
|
-
}
|
|
744
|
+
flow_controller_->MaybeSendBlocked();
|
|
747
745
|
if (!stream_contributes_to_connection_flow_control_) {
|
|
748
746
|
return;
|
|
749
747
|
}
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
}
|
|
748
|
+
connection_flow_controller_->MaybeSendBlocked();
|
|
749
|
+
|
|
753
750
|
// If the stream is blocked by connection-level flow control but not by
|
|
754
751
|
// stream-level flow control, add the stream to the write blocked list so that
|
|
755
752
|
// the stream will be given a chance to write when a connection-level
|
|
@@ -1510,8 +1510,7 @@ TEST_P(QuicStreamTest, MarkConnectionLevelWriteBlockedOnWindowUpdateFrame) {
|
|
|
1510
1510
|
|
|
1511
1511
|
EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _))
|
|
1512
1512
|
.WillRepeatedly(Invoke(session_.get(), &MockQuicSession::ConsumeData));
|
|
1513
|
-
EXPECT_CALL(*session_,
|
|
1514
|
-
.WillOnce(Invoke(&ClearControlFrameWithTransmissionType));
|
|
1513
|
+
EXPECT_CALL(*session_, SendBlocked(_, _)).Times(1);
|
|
1515
1514
|
std::string data(1024, '.');
|
|
1516
1515
|
stream->WriteOrBufferData(data, false, nullptr);
|
|
1517
1516
|
EXPECT_FALSE(HasWriteBlockedStreams());
|
|
@@ -1544,8 +1543,7 @@ TEST_P(QuicStreamTest,
|
|
|
1544
1543
|
std::string data(100, '.');
|
|
1545
1544
|
EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _))
|
|
1546
1545
|
.WillRepeatedly(Invoke(session_.get(), &MockQuicSession::ConsumeData));
|
|
1547
|
-
EXPECT_CALL(*session_,
|
|
1548
|
-
.WillOnce(Invoke(&ClearControlFrameWithTransmissionType));
|
|
1546
|
+
EXPECT_CALL(*session_, SendBlocked(_, _)).Times(1);
|
|
1549
1547
|
stream->WriteOrBufferData(data, false, nullptr);
|
|
1550
1548
|
EXPECT_FALSE(HasWriteBlockedStreams());
|
|
1551
1549
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
#include "quiche/quic/test_tools/simulator/simulator.h"
|
|
12
12
|
#include "quiche/quic/test_tools/simulator/switch.h"
|
|
13
13
|
|
|
14
|
-
namespace quic {
|
|
14
|
+
namespace quic::test {
|
|
15
15
|
namespace {
|
|
16
16
|
|
|
17
17
|
const QuicByteCount kTransferSize = 1000 * kMaxOutgoingPacketSize;
|
|
@@ -181,4 +181,4 @@ TEST_F(QuicTraceVisitorTest, EncryptionLevels) {
|
|
|
181
181
|
}
|
|
182
182
|
|
|
183
183
|
} // namespace
|
|
184
|
-
} // namespace quic
|
|
184
|
+
} // namespace quic::test
|
|
@@ -28,13 +28,6 @@ using QuicPacketLength = uint16_t;
|
|
|
28
28
|
using QuicControlFrameId = uint32_t;
|
|
29
29
|
using QuicMessageId = uint32_t;
|
|
30
30
|
|
|
31
|
-
// TODO(b/181256914) replace QuicDatagramStreamId with QuicStreamId once we
|
|
32
|
-
// remove support for draft-ietf-masque-h3-datagram-00 in favor of later drafts.
|
|
33
|
-
using QuicDatagramStreamId = uint64_t;
|
|
34
|
-
using QuicDatagramContextId = uint64_t;
|
|
35
|
-
// Note that for draft-ietf-masque-h3-datagram-00, we represent the flow ID as a
|
|
36
|
-
// QuicDatagramStreamId.
|
|
37
|
-
|
|
38
31
|
// IMPORTANT: IETF QUIC defines stream IDs and stream counts as being unsigned
|
|
39
32
|
// 62-bit numbers. However, we have decided to only support up to 2^32-1 streams
|
|
40
33
|
// in order to reduce the size of data structures such as QuicStreamFrame
|
|
@@ -836,6 +829,8 @@ QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
|
|
|
836
829
|
|
|
837
830
|
QUIC_EXPORT_PRIVATE std::string KeyUpdateReasonString(KeyUpdateReason reason);
|
|
838
831
|
|
|
832
|
+
using QuicSignatureAlgorithmVector = absl::InlinedVector<uint16_t, 8>;
|
|
833
|
+
|
|
839
834
|
// QuicSSLConfig contains configurations to be applied on a SSL object, which
|
|
840
835
|
// overrides the configurations in SSL_CTX.
|
|
841
836
|
struct QUIC_NO_EXPORT QuicSSLConfig {
|
|
@@ -846,7 +841,7 @@ struct QUIC_NO_EXPORT QuicSSLConfig {
|
|
|
846
841
|
absl::optional<bool> disable_ticket_support;
|
|
847
842
|
// If set, used to configure the SSL object with
|
|
848
843
|
// SSL_set_signing_algorithm_prefs.
|
|
849
|
-
absl::optional<
|
|
844
|
+
absl::optional<QuicSignatureAlgorithmVector> signing_algorithm_prefs;
|
|
850
845
|
// Client certificate mode for mTLS support. Only used at server side.
|
|
851
846
|
ClientCertMode client_cert_mode = ClientCertMode::kNone;
|
|
852
847
|
};
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#include <sys/socket.h>
|
|
10
10
|
#include <sys/types.h>
|
|
11
11
|
|
|
12
|
+
#include "absl/base/optimization.h"
|
|
12
13
|
#include "quiche/quic/core/quic_udp_socket.h"
|
|
13
14
|
#include "quiche/quic/platform/api/quic_bug_tracker.h"
|
|
14
15
|
#include "quiche/quic/platform/api/quic_udp_socket_platform_api.h"
|
|
@@ -413,13 +414,13 @@ void QuicUdpSocketApi::ReadPacket(QuicUdpSocketFd fd,
|
|
|
413
414
|
return;
|
|
414
415
|
}
|
|
415
416
|
|
|
416
|
-
if (
|
|
417
|
+
if (ABSL_PREDICT_FALSE(hdr.msg_flags & MSG_CTRUNC)) {
|
|
417
418
|
QUIC_BUG(quic_bug_10751_3)
|
|
418
419
|
<< "Control buffer too small. size:" << control_buffer.buffer_len;
|
|
419
420
|
return;
|
|
420
421
|
}
|
|
421
422
|
|
|
422
|
-
if (
|
|
423
|
+
if (ABSL_PREDICT_FALSE(hdr.msg_flags & MSG_TRUNC) ||
|
|
423
424
|
// Normally "bytes_read > packet_buffer.buffer_len" implies the MSG_TRUNC
|
|
424
425
|
// bit is set, but it is not the case if tested with config=android_arm64.
|
|
425
426
|
static_cast<size_t>(bytes_read) > packet_buffer.buffer_len) {
|
|
@@ -502,14 +503,14 @@ size_t QuicUdpSocketApi::ReadMultiplePackets(QuicUdpSocketFd fd,
|
|
|
502
503
|
}
|
|
503
504
|
|
|
504
505
|
msghdr& hdr = hdrs[i].msg_hdr;
|
|
505
|
-
if (
|
|
506
|
+
if (ABSL_PREDICT_FALSE(hdr.msg_flags & MSG_CTRUNC)) {
|
|
506
507
|
QUIC_BUG(quic_bug_10751_4) << "Control buffer too small. size:"
|
|
507
508
|
<< (*results)[i].control_buffer.buffer_len
|
|
508
509
|
<< ", need:" << hdr.msg_controllen;
|
|
509
510
|
continue;
|
|
510
511
|
}
|
|
511
512
|
|
|
512
|
-
if (
|
|
513
|
+
if (ABSL_PREDICT_FALSE(hdr.msg_flags & MSG_TRUNC)) {
|
|
513
514
|
QUIC_LOG_FIRST_N(WARNING, 100)
|
|
514
515
|
<< "Received truncated QUIC packet: buffer size:"
|
|
515
516
|
<< (*results)[i].packet_buffer.buffer_len
|
|
@@ -551,7 +551,7 @@ TEST_P(QuicUnackedPacketMapTest, CannotAggregateAckedControlFrames) {
|
|
|
551
551
|
QuicWindowUpdateFrame window_update(1, 5, 100);
|
|
552
552
|
QuicStreamFrame stream_frame1(3, false, 0, 100);
|
|
553
553
|
QuicStreamFrame stream_frame2(3, false, 100, 100);
|
|
554
|
-
QuicBlockedFrame blocked(2, 5);
|
|
554
|
+
QuicBlockedFrame blocked(2, 5, 0);
|
|
555
555
|
QuicGoAwayFrame go_away(3, QUIC_PEER_GOING_AWAY, 5, "Going away.");
|
|
556
556
|
|
|
557
557
|
QuicTransmissionInfo info1;
|
|
@@ -595,7 +595,7 @@ PacketNumberSpace QuicUtils::GetPacketNumberSpace(
|
|
|
595
595
|
}
|
|
596
596
|
|
|
597
597
|
// static
|
|
598
|
-
EncryptionLevel QuicUtils::
|
|
598
|
+
EncryptionLevel QuicUtils::GetEncryptionLevelToSendAckofSpace(
|
|
599
599
|
PacketNumberSpace packet_number_space) {
|
|
600
600
|
switch (packet_number_space) {
|
|
601
601
|
case INITIAL_DATA:
|
|
@@ -209,8 +209,8 @@ class QUIC_EXPORT_PRIVATE QuicUtils {
|
|
|
209
209
|
static PacketNumberSpace GetPacketNumberSpace(
|
|
210
210
|
EncryptionLevel encryption_level);
|
|
211
211
|
|
|
212
|
-
// Determines encryption level to send
|
|
213
|
-
static EncryptionLevel
|
|
212
|
+
// Determines encryption level to send ACK in |packet_number_space|.
|
|
213
|
+
static EncryptionLevel GetEncryptionLevelToSendAckofSpace(
|
|
214
214
|
PacketNumberSpace packet_number_space);
|
|
215
215
|
|
|
216
216
|
// Get the maximum value for a V99/IETF QUIC stream count. If a count
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
#include "quiche/quic/platform/api/quic_expect_bug.h"
|
|
9
9
|
#include "quiche/quic/platform/api/quic_flags.h"
|
|
10
10
|
#include "quiche/quic/platform/api/quic_logging.h"
|
|
11
|
-
#include "quiche/quic/platform/api/quic_mock_log.h"
|
|
12
11
|
#include "quiche/quic/platform/api/quic_test.h"
|
|
13
12
|
|
|
14
13
|
namespace quic {
|
|
@@ -361,6 +361,19 @@ bool TlsClientHandshaker::IsCryptoFrameExpectedForEncryptionLevel(
|
|
|
361
361
|
return level != ENCRYPTION_ZERO_RTT;
|
|
362
362
|
}
|
|
363
363
|
|
|
364
|
+
EncryptionLevel TlsClientHandshaker::GetEncryptionLevelToSendCryptoDataOfSpace(
|
|
365
|
+
PacketNumberSpace space) const {
|
|
366
|
+
switch (space) {
|
|
367
|
+
case INITIAL_DATA:
|
|
368
|
+
return ENCRYPTION_INITIAL;
|
|
369
|
+
case HANDSHAKE_DATA:
|
|
370
|
+
return ENCRYPTION_HANDSHAKE;
|
|
371
|
+
default:
|
|
372
|
+
QUICHE_DCHECK(false);
|
|
373
|
+
return NUM_ENCRYPTION_LEVELS;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
364
377
|
bool TlsClientHandshaker::one_rtt_keys_available() const {
|
|
365
378
|
return state_ >= HANDSHAKE_COMPLETE;
|
|
366
379
|
}
|
|
@@ -56,6 +56,8 @@ class QUIC_EXPORT_PRIVATE TlsClientHandshaker
|
|
|
56
56
|
bool encryption_established() const override;
|
|
57
57
|
bool IsCryptoFrameExpectedForEncryptionLevel(
|
|
58
58
|
EncryptionLevel level) const override;
|
|
59
|
+
EncryptionLevel GetEncryptionLevelToSendCryptoDataOfSpace(
|
|
60
|
+
PacketNumberSpace space) const override;
|
|
59
61
|
bool one_rtt_keys_available() const override;
|
|
60
62
|
const QuicCryptoNegotiatedParameters& crypto_negotiated_params()
|
|
61
63
|
const override;
|
|
@@ -742,9 +742,8 @@ ssl_ticket_aead_result_t TlsServerHandshaker::SessionTicketOpen(
|
|
|
742
742
|
}
|
|
743
743
|
|
|
744
744
|
if (!ticket_decryption_callback_) {
|
|
745
|
-
ticket_decryption_callback_ =
|
|
746
|
-
proof_source_->GetTicketCrypter()->Decrypt(
|
|
747
|
-
in, std::unique_ptr<DecryptCallback>(ticket_decryption_callback_));
|
|
745
|
+
ticket_decryption_callback_ = std::make_shared<DecryptCallback>(this);
|
|
746
|
+
proof_source_->GetTicketCrypter()->Decrypt(in, ticket_decryption_callback_);
|
|
748
747
|
|
|
749
748
|
// Decrypt can run the callback synchronously. In that case, the callback
|
|
750
749
|
// will clear the ticket_decryption_callback_ pointer, and instead of
|
|
@@ -1130,4 +1129,19 @@ bool TlsServerHandshaker::IsCryptoFrameExpectedForEncryptionLevel(
|
|
|
1130
1129
|
return level != ENCRYPTION_ZERO_RTT;
|
|
1131
1130
|
}
|
|
1132
1131
|
|
|
1132
|
+
EncryptionLevel TlsServerHandshaker::GetEncryptionLevelToSendCryptoDataOfSpace(
|
|
1133
|
+
PacketNumberSpace space) const {
|
|
1134
|
+
switch (space) {
|
|
1135
|
+
case INITIAL_DATA:
|
|
1136
|
+
return ENCRYPTION_INITIAL;
|
|
1137
|
+
case HANDSHAKE_DATA:
|
|
1138
|
+
return ENCRYPTION_HANDSHAKE;
|
|
1139
|
+
case APPLICATION_DATA:
|
|
1140
|
+
return ENCRYPTION_FORWARD_SECURE;
|
|
1141
|
+
default:
|
|
1142
|
+
QUICHE_DCHECK(false);
|
|
1143
|
+
return NUM_ENCRYPTION_LEVELS;
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1133
1147
|
} // namespace quic
|
|
@@ -73,6 +73,8 @@ class QUIC_EXPORT_PRIVATE TlsServerHandshaker
|
|
|
73
73
|
SSL* GetSsl() const override;
|
|
74
74
|
bool IsCryptoFrameExpectedForEncryptionLevel(
|
|
75
75
|
EncryptionLevel level) const override;
|
|
76
|
+
EncryptionLevel GetEncryptionLevelToSendCryptoDataOfSpace(
|
|
77
|
+
PacketNumberSpace space) const override;
|
|
76
78
|
|
|
77
79
|
// From QuicCryptoServerStreamBase and TlsHandshaker
|
|
78
80
|
ssl_early_data_reason_t EarlyDataReason() const override;
|
|
@@ -323,7 +325,7 @@ class QUIC_EXPORT_PRIVATE TlsServerHandshaker
|
|
|
323
325
|
// |ticket_decryption_callback_| points to the non-owned callback that was
|
|
324
326
|
// passed to ProofSource::TicketCrypter::Decrypt but hasn't finished running
|
|
325
327
|
// yet.
|
|
326
|
-
DecryptCallback
|
|
328
|
+
std::shared_ptr<DecryptCallback> ticket_decryption_callback_;
|
|
327
329
|
// |decrypted_session_ticket_| contains the decrypted session ticket after the
|
|
328
330
|
// callback has run but before it is passed to BoringSSL.
|
|
329
331
|
std::vector<uint8_t> decrypted_session_ticket_;
|
|
@@ -33,6 +33,20 @@ const QuicTime::Delta kMinRttMs = QuicTime::Delta::FromMilliseconds(40);
|
|
|
33
33
|
const QuicTime::Delta kDelayedAckTime =
|
|
34
34
|
QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
|
|
35
35
|
|
|
36
|
+
EncryptionLevel GetEncryptionLevel(PacketNumberSpace packet_number_space) {
|
|
37
|
+
switch (packet_number_space) {
|
|
38
|
+
case INITIAL_DATA:
|
|
39
|
+
return ENCRYPTION_INITIAL;
|
|
40
|
+
case HANDSHAKE_DATA:
|
|
41
|
+
return ENCRYPTION_HANDSHAKE;
|
|
42
|
+
case APPLICATION_DATA:
|
|
43
|
+
return ENCRYPTION_FORWARD_SECURE;
|
|
44
|
+
default:
|
|
45
|
+
QUICHE_DCHECK(false);
|
|
46
|
+
return NUM_ENCRYPTION_LEVELS;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
36
50
|
class UberReceivedPacketManagerTest : public QuicTest {
|
|
37
51
|
protected:
|
|
38
52
|
UberReceivedPacketManagerTest() {
|
|
@@ -108,7 +122,7 @@ class UberReceivedPacketManagerTest : public QuicTest {
|
|
|
108
122
|
continue;
|
|
109
123
|
}
|
|
110
124
|
manager_->ResetAckStates(
|
|
111
|
-
|
|
125
|
+
GetEncryptionLevel(static_cast<PacketNumberSpace>(i)));
|
|
112
126
|
}
|
|
113
127
|
}
|
|
114
128
|
|
|
@@ -544,15 +558,9 @@ TEST_F(UberReceivedPacketManagerTest,
|
|
|
544
558
|
CheckAckTimeout(clock_.ApproximateNow());
|
|
545
559
|
|
|
546
560
|
EXPECT_TRUE(HasPendingAck());
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
QuicTime::Delta::FromMilliseconds(11) + kDelayedAckTime);
|
|
551
|
-
} else {
|
|
552
|
-
// Delayed ack is scheduled.
|
|
553
|
-
CheckAckTimeout(clock_.ApproximateNow() -
|
|
554
|
-
QuicTime::Delta::FromMilliseconds(1) + kDelayedAckTime);
|
|
555
|
-
}
|
|
561
|
+
// Verify ACK delay is based on packet receipt time.
|
|
562
|
+
CheckAckTimeout(clock_.ApproximateNow() -
|
|
563
|
+
QuicTime::Delta::FromMilliseconds(11) + kDelayedAckTime);
|
|
556
564
|
}
|
|
557
565
|
|
|
558
566
|
} // namespace
|
|
@@ -54,14 +54,16 @@ int RunMasqueClient(int argc, char* argv[]) {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
const bool disable_certificate_verification =
|
|
57
|
-
|
|
57
|
+
quiche::GetQuicheCommandLineFlag(FLAGS_disable_certificate_verification);
|
|
58
58
|
QuicEpollServer epoll_server;
|
|
59
59
|
|
|
60
60
|
std::string uri_template = urls[0];
|
|
61
61
|
if (!absl::StrContains(uri_template, '/')) {
|
|
62
|
-
//
|
|
62
|
+
// If an authority is passed in instead of a URI template, use the default
|
|
63
|
+
// URI template.
|
|
63
64
|
uri_template =
|
|
64
|
-
absl::StrCat("https://", uri_template,
|
|
65
|
+
absl::StrCat("https://", uri_template,
|
|
66
|
+
"/.well-known/masque/udp/{target_host}/{target_port}/");
|
|
65
67
|
}
|
|
66
68
|
url::Parsed parsed_uri_template;
|
|
67
69
|
url::ParseStandardURL(uri_template.c_str(), uri_template.length(),
|
|
@@ -82,7 +84,7 @@ int RunMasqueClient(int argc, char* argv[]) {
|
|
|
82
84
|
proof_verifier = CreateDefaultProofVerifier(host);
|
|
83
85
|
}
|
|
84
86
|
MasqueMode masque_mode = MasqueMode::kOpen;
|
|
85
|
-
std::string mode_string =
|
|
87
|
+
std::string mode_string = quiche::GetQuicheCommandLineFlag(FLAGS_masque_mode);
|
|
86
88
|
if (!mode_string.empty() && mode_string != "open") {
|
|
87
89
|
std::cerr << "Invalid masque_mode \"" << mode_string << "\"" << std::endl;
|
|
88
90
|
return 1;
|
|
@@ -4,12 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
#include "quiche/quic/masque/masque_client_session.h"
|
|
6
6
|
|
|
7
|
+
#include <cstring>
|
|
7
8
|
#include <string>
|
|
8
9
|
|
|
9
10
|
#include "absl/algorithm/container.h"
|
|
10
11
|
#include "absl/container/flat_hash_map.h"
|
|
11
12
|
#include "absl/container/flat_hash_set.h"
|
|
12
13
|
#include "absl/strings/str_cat.h"
|
|
14
|
+
#include "absl/strings/string_view.h"
|
|
13
15
|
#include "url/url_canon.h"
|
|
14
16
|
#include "quiche/quic/core/http/spdy_utils.h"
|
|
15
17
|
#include "quiche/quic/core/quic_data_reader.h"
|
|
@@ -122,10 +124,7 @@ MasqueClientSession::GetOrCreateConnectUdpClientState(
|
|
|
122
124
|
headers[":scheme"] = scheme;
|
|
123
125
|
headers[":authority"] = authority;
|
|
124
126
|
headers[":path"] = canonicalized_path;
|
|
125
|
-
headers["connect-udp-version"] = "
|
|
126
|
-
if (http_datagram_support() == HttpDatagramSupport::kDraft00) {
|
|
127
|
-
SpdyUtils::AddDatagramFlowIdHeader(&headers, stream->id());
|
|
128
|
-
}
|
|
127
|
+
headers["connect-udp-version"] = "12";
|
|
129
128
|
size_t bytes_sent =
|
|
130
129
|
stream->SendRequest(std::move(headers), /*body=*/"", /*fin=*/false);
|
|
131
130
|
if (bytes_sent == 0) {
|
|
@@ -148,8 +147,12 @@ void MasqueClientSession::SendPacket(
|
|
|
148
147
|
return;
|
|
149
148
|
}
|
|
150
149
|
|
|
150
|
+
std::string http_payload;
|
|
151
|
+
http_payload.resize(1 + packet.size());
|
|
152
|
+
http_payload[0] = 0;
|
|
153
|
+
memcpy(&http_payload[1], packet.data(), packet.size());
|
|
151
154
|
MessageStatus message_status =
|
|
152
|
-
SendHttp3Datagram(connect_udp->stream()->id(),
|
|
155
|
+
SendHttp3Datagram(connect_udp->stream()->id(), http_payload);
|
|
153
156
|
|
|
154
157
|
QUIC_DVLOG(1) << "Sent packet to " << target_server_address
|
|
155
158
|
<< " compressed with stream ID " << connect_udp->stream()->id()
|
|
@@ -271,8 +274,21 @@ MasqueClientSession::ConnectUdpClientState::operator=(
|
|
|
271
274
|
void MasqueClientSession::ConnectUdpClientState::OnHttp3Datagram(
|
|
272
275
|
QuicStreamId stream_id, absl::string_view payload) {
|
|
273
276
|
QUICHE_DCHECK_EQ(stream_id, stream()->id());
|
|
274
|
-
|
|
275
|
-
|
|
277
|
+
QuicDataReader reader(payload);
|
|
278
|
+
uint64_t context_id;
|
|
279
|
+
if (!reader.ReadVarInt62(&context_id)) {
|
|
280
|
+
QUIC_DLOG(ERROR) << "Failed to read context ID";
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
if (context_id != 0) {
|
|
284
|
+
QUIC_DLOG(ERROR) << "Ignoring HTTP Datagram with unexpected context ID "
|
|
285
|
+
<< context_id;
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
absl::string_view http_payload = reader.ReadRemainingPayload();
|
|
289
|
+
encapsulated_client_session_->ProcessPacket(http_payload,
|
|
290
|
+
target_server_address_);
|
|
291
|
+
QUIC_DVLOG(1) << "Sent " << http_payload.size()
|
|
276
292
|
<< " bytes to connection for stream ID " << stream_id;
|
|
277
293
|
}
|
|
278
294
|
|
|
@@ -125,7 +125,7 @@ class QUIC_NO_EXPORT MasqueClientSession : public QuicSpdyClientSession {
|
|
|
125
125
|
};
|
|
126
126
|
|
|
127
127
|
HttpDatagramSupport LocalHttpDatagramSupport() override {
|
|
128
|
-
return HttpDatagramSupport::
|
|
128
|
+
return HttpDatagramSupport::kDraft09;
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
const ConnectUdpClientState* GetOrCreateConnectUdpClientState(
|
|
@@ -88,6 +88,19 @@ void MasqueServerBackend::FetchResponseFromBackend(
|
|
|
88
88
|
request_headers, request_body, request_handler);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
void MasqueServerBackend::HandleConnectHeaders(
|
|
92
|
+
const spdy::Http2HeaderBlock& request_headers,
|
|
93
|
+
RequestHandler* request_handler) {
|
|
94
|
+
if (MaybeHandleMasqueRequest(request_headers, request_handler)) {
|
|
95
|
+
// Request was handled as a MASQUE request.
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
QUIC_DLOG(INFO) << "Fetching non-MASQUE CONNECT response for "
|
|
99
|
+
<< request_headers.DebugString();
|
|
100
|
+
QuicMemoryCacheBackend::HandleConnectHeaders(request_headers,
|
|
101
|
+
request_handler);
|
|
102
|
+
}
|
|
103
|
+
|
|
91
104
|
void MasqueServerBackend::CloseBackendResponseStream(
|
|
92
105
|
QuicSimpleServerBackend::RequestHandler* request_handler) {
|
|
93
106
|
QUIC_DLOG(INFO) << "Closing response stream";
|
|
@@ -39,6 +39,8 @@ class QUIC_NO_EXPORT MasqueServerBackend : public QuicMemoryCacheBackend {
|
|
|
39
39
|
const spdy::Http2HeaderBlock& request_headers,
|
|
40
40
|
const std::string& request_body,
|
|
41
41
|
QuicSimpleServerBackend::RequestHandler* request_handler) override;
|
|
42
|
+
void HandleConnectHeaders(const spdy::Http2HeaderBlock& request_headers,
|
|
43
|
+
RequestHandler* request_handler) override;
|
|
42
44
|
|
|
43
45
|
void CloseBackendResponseStream(
|
|
44
46
|
QuicSimpleServerBackend::RequestHandler* request_handler) override;
|
|
@@ -46,21 +46,22 @@ int main(int argc, char* argv[]) {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
quic::MasqueMode masque_mode = quic::MasqueMode::kOpen;
|
|
49
|
-
std::string mode_string =
|
|
49
|
+
std::string mode_string = quiche::GetQuicheCommandLineFlag(FLAGS_masque_mode);
|
|
50
50
|
if (!mode_string.empty() && mode_string != "open") {
|
|
51
51
|
std::cerr << "Invalid masque_mode \"" << mode_string << "\"" << std::endl;
|
|
52
52
|
return 1;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
auto backend = std::make_unique<quic::MasqueServerBackend>(
|
|
56
|
-
masque_mode,
|
|
57
|
-
|
|
56
|
+
masque_mode, quiche::GetQuicheCommandLineFlag(FLAGS_server_authority),
|
|
57
|
+
quiche::GetQuicheCommandLineFlag(FLAGS_cache_dir));
|
|
58
58
|
|
|
59
59
|
auto server =
|
|
60
60
|
std::make_unique<quic::MasqueEpollServer>(masque_mode, backend.get());
|
|
61
61
|
|
|
62
62
|
if (!server->CreateUDPSocketAndListen(quic::QuicSocketAddress(
|
|
63
|
-
quic::QuicIpAddress::Any6(),
|
|
63
|
+
quic::QuicIpAddress::Any6(),
|
|
64
|
+
quiche::GetQuicheCommandLineFlag(FLAGS_port)))) {
|
|
64
65
|
return 1;
|
|
65
66
|
}
|
|
66
67
|
|