@fails-components/webtransport 0.0.1-rc.2 → 0.0.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/CMakeLists.txt +5 -2
- package/package.json +1 -1
- package/platform/net/quiche/common/platform/impl/quiche_flags_impl.h +1 -54
- package/platform/quiche_platform_impl/quic_flags_impl.h +1 -27
- package/platform/quiche_platform_impl/quiche_flag_utils_impl.h +1 -16
- package/platform/quiche_platform_impl/quiche_flags_impl.h +6 -1
- package/src/http3client.cc +14 -2
- package/src/http3client.h +10 -15
- package/src/webtransport.js +4 -1
- package/third_party/boringssl/src/.clang-format +11 -0
- package/third_party/boringssl/src/crypto/CMakeLists.txt +0 -1
- package/third_party/boringssl/src/crypto/asn1/a_strex.c +61 -95
- package/third_party/boringssl/src/crypto/asn1/asn1_par.c +31 -9
- package/third_party/boringssl/src/crypto/asn1/tasn_dec.c +33 -19
- package/third_party/boringssl/src/crypto/cipher_extra/asm/chacha20_poly1305_armv8.pl +8 -8
- package/third_party/boringssl/src/crypto/cipher_extra/derive_key.c +4 -4
- package/third_party/boringssl/src/crypto/cipher_extra/e_des.c +1 -0
- package/third_party/boringssl/src/crypto/cipher_extra/e_null.c +1 -0
- package/third_party/boringssl/src/crypto/cipher_extra/e_rc2.c +1 -0
- package/third_party/boringssl/src/crypto/cipher_extra/e_rc4.c +2 -0
- package/third_party/boringssl/src/crypto/fipsmodule/bcm.c +1 -0
- package/third_party/boringssl/src/crypto/fipsmodule/bn/asm/x86_64-mont5.pl +0 -197
- package/third_party/boringssl/src/crypto/fipsmodule/bn/bn_test.cc +0 -9
- package/third_party/boringssl/src/crypto/fipsmodule/bn/bn_tests.txt +68 -0
- package/third_party/boringssl/src/crypto/fipsmodule/bn/exponentiation.c +45 -40
- package/third_party/boringssl/src/crypto/fipsmodule/bn/internal.h +11 -8
- package/third_party/boringssl/src/crypto/fipsmodule/bn/rsaz_exp.c +15 -106
- package/third_party/boringssl/src/crypto/fipsmodule/bn/rsaz_exp.h +5 -1
- package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +12 -32
- package/third_party/boringssl/src/crypto/fipsmodule/cipher/internal.h +39 -0
- package/third_party/boringssl/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +7 -9
- package/third_party/boringssl/src/crypto/fipsmodule/ec/ec_key.c +1 -0
- package/third_party/boringssl/src/crypto/fipsmodule/ecdh/ecdh.c +2 -1
- package/third_party/boringssl/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -0
- package/third_party/boringssl/src/crypto/fipsmodule/hmac/hmac.c +1 -0
- package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator.c +1 -0
- package/third_party/boringssl/src/crypto/pkcs8/pkcs8_x509.c +4 -4
- package/third_party/boringssl/src/crypto/x509/algorithm.c +18 -1
- package/third_party/boringssl/src/crypto/x509/x_algor.c +1 -1
- package/third_party/boringssl/src/crypto/x509/x_crl.c +3 -3
- package/third_party/boringssl/src/crypto/x509/x_exten.c +1 -1
- package/third_party/boringssl/src/crypto/x509/x_name.c +1 -1
- package/third_party/boringssl/src/crypto/x509/x_pubkey.c +1 -1
- package/third_party/boringssl/src/crypto/x509/x_req.c +2 -2
- package/third_party/boringssl/src/crypto/x509/x_sig.c +1 -1
- package/third_party/boringssl/src/crypto/x509/x_spki.c +2 -2
- package/third_party/boringssl/src/crypto/x509/x_val.c +1 -1
- package/third_party/boringssl/src/crypto/x509/x_x509.c +2 -2
- package/third_party/boringssl/src/crypto/x509v3/v3_akey.c +1 -1
- package/third_party/boringssl/src/crypto/x509v3/v3_akeya.c +1 -1
- package/third_party/boringssl/src/crypto/x509v3/v3_bcons.c +2 -2
- package/third_party/boringssl/src/crypto/x509v3/v3_cpols.c +6 -6
- package/third_party/boringssl/src/crypto/x509v3/v3_crld.c +6 -6
- package/third_party/boringssl/src/crypto/x509v3/v3_enum.c +1 -1
- package/third_party/boringssl/src/crypto/x509v3/v3_extku.c +2 -2
- package/third_party/boringssl/src/crypto/x509v3/v3_genn.c +3 -3
- package/third_party/boringssl/src/crypto/x509v3/v3_info.c +3 -3
- package/third_party/boringssl/src/crypto/x509v3/v3_int.c +3 -3
- package/third_party/boringssl/src/crypto/x509v3/v3_ncons.c +2 -2
- package/third_party/boringssl/src/crypto/x509v3/v3_ocsp.c +2 -2
- package/third_party/boringssl/src/crypto/x509v3/v3_pcons.c +1 -1
- package/third_party/boringssl/src/crypto/x509v3/v3_pmaps.c +2 -2
- package/third_party/boringssl/src/crypto/x509v3/v3_skey.c +1 -1
- package/third_party/boringssl/src/decrepit/blowfish/blowfish.c +1 -0
- package/third_party/boringssl/src/decrepit/cast/cast.c +1 -0
- package/third_party/boringssl/src/decrepit/cfb/cfb.c +1 -0
- package/third_party/boringssl/src/decrepit/xts/xts.c +2 -1
- package/third_party/boringssl/src/fuzz/CMakeLists.txt +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip.cc +57 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/0461791e54b4840c109637952eab43d9b938cab8 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/06e57a7b98a403a00822739739924b97ae6c74e9 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/078c3c1199930781466871c8dda69bec379286a4 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/082a991742f652549e4b207100ee521f474e0a99 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/091e3389548686c5038d04e3d76b9c4d30502074 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/13e484c406efe97dc9d91f8b80a27b0e597c34da +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/153d254254345b61e20e7b37637dd6f6fd71ba01 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/163605136e22f5b5302fe60d1f17837bee6b6b2b +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/1a96ec99b487b93052cd860c447e6d126dcc36d4 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/1cc9ad96fcee279e8589b7071c7a0ccd111098f2 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/229b8e1825512868e0e11a199ed71231dd41bb4f +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/236d820eadf7f84d70de7bb8be5f1c57a4005de2 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/24fd9742dbdee3167509db4af245ad6f8c4c1e99 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/2896f8deb3c4e8bdfeab743b22c64c92316880f7 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/29b6252fe9c4d1186394b1664c421cca795b61a5 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/2b4955132275314d1d377f37f93d8c1879a3519a +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/2e7112ac524a7a663632397cbb41f7dfd22e92c6 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/396d197005432accf99bf0f483286e459eb24063 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/3c75fe79266cf639f2180722a3f03f8fc3e25685 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/3fbb104fb0eb6cae4af34d8a516998336b3a6778 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/422fa995b3fdfed572b68b292062c330d6d05272 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/428b48fc494cee828f0c27f77aef477cb2e1fd80 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4bd69e424b6fa38f9e63e58b8d0e95ac2d38d598 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4be7e1f134e1c55aeadeead515200f6f1e6254ba +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4de268400e174db2dc306f45c833cf968a6c6546 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/52d2c7efcd7da0eb7463829e05a598e36729bfae +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/53cf415eb9de49fb5a0cb46e745e413a99aa0779 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/53ea84c48a5792281a46eb5a9c896d54ea3f1838 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5ba93c9db0cff93f52b521d7420e43f6eda2784f +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5bab61eb53176449e25c2c82f172b82cb13ffb9d +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5e5361730362736fe3e2804d8566e3c91454509b +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6654fedb1fc4b07095695b062b5af4c2f12d59ae +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6cad8b2a41194372ec897bece6512fe8331e274d +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6f40330ec07e8e22f113f982b297ff7f86b8e485 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/738f291e53e97c08dae378c71ef70a60e31ae900 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7396791821e64fc9340249a4bcbd2198e9f237db +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7653595e28f23e62ea6707c99ca08c780a69335f +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/77de68daecd823babbb58edb1c8e14d7106e83bb +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7cb5c71603a787032973d6ddc9c2c34638005784 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/80a1e1ae75c1e5ef7bbde5f5877e3e5b26b3cf58 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/872ba8af52a8c1380c388bab0e20bec2e729db80 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/8855f2d904cf1bbaffc54e68d98890fdc9ec14cc +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/8a22f56ee86cc2d67e9610a6b0ed59f21008a341 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/935a69e9f3bfa1dd3bf058fa3e1b953e82195de6 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/951ccb49640c8f9e81fb4e0d82730321f4e15bb3 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/9af1f3ed10c7a54f6b57c344015141cc082db23b +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a0b7dd1684089c63a4aac2e4a832544df4d639d6 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a22d0d3565a509a4bfedce078090d8c6a908d950 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a22f1185582f66227118c8e9002a5c29728f0650 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a457945cb86ec812235f407ed70fe72fbaf694a1 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a4ee44c4e8728d4924642ef8765063262e8c4601 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a4fc609a6546fc0061f499f0faed9054fd388c9a +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a7c13e6fe60eee08b9aac00a095a9301ea1a9824 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a98e22a5a8c2f5dda365d55e76536931010e1560 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/aca6ed86348b1176bfbe4ebf32b2d48a0aa42f9f +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/aeefb82d7f5cc69168aade3b196a84d0f5c14bf2 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b37e0f6fa42840c773747c4cb608c278ab65021d +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b5d4e67f0ec5b1a90100d8ad424d77aea8e16353 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b65ea16ba4dae8599ebbad7c4cb9fcd505edf485 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b95311782071c4d9182c0effe32487fc5cdbd33d +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bbcaf4d15f92bfc6d624eee967fade1a74329f30 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bc26b8c794ac0adf948cbca02e88b3901824ef17 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bc7b23c2c68e4ad33ecea493ff6e60d423371cd0 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bd8daf3e78d8ba3a25838053b6993edc7a21c30e +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/c4d94647e646f02da1736b3179804ad6083acde9 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/c869b259f9f81bec8ed24a9bc2cef35a513fb9fc +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/ceee46f04a09ef5d3342ef25d9f483e861727575 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d05c069216b54f35bc7e3ee08371baee243c089a +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d18c30ba21e0d085dd983ad528f2c9001285d3d2 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d2c00146b2f2bcb4c6cecb731d2062273523d8c8 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d9bc7157a485958a5fce35ce777f551fe3f7d94c +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/defce76f0d3c3e057bb623986bacee7bbd07d1a1 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/df9b696736847e43672b7a99ca05655af8a81135 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/e5b420f71cf412bd9fdebdd46245fabd1f3462e5 +1 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/e7979b0e6e3e9cd64ceab99778c55205d6f92a73 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/ee629f1935abc05fdc32ba314ec1f80f4bff2a17 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/f944dcd635f9801f7ac90a407fbc479964dec024 +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/fadcde7d914246ca04bd56e68fd4045b1cf1c5ef +0 -0
- package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/fd8be6506a9995f626eef831b9c981a80b0e3640 +0 -0
- package/third_party/boringssl/src/include/openssl/cipher.h +21 -48
- package/third_party/boringssl/src/include/openssl/ssl.h +38 -0
- package/third_party/boringssl/src/ssl/handshake_client.cc +8 -2
- package/third_party/boringssl/src/ssl/internal.h +16 -3
- package/third_party/boringssl/src/ssl/s3_both.cc +23 -1
- package/third_party/boringssl/src/ssl/ssl_lib.cc +94 -1
- package/third_party/boringssl/src/ssl/test/runner/runner.go +192 -0
- package/third_party/boringssl/src/ssl/test/test_config.cc +6 -0
- package/third_party/boringssl/src/ssl/test/test_config.h +1 -0
- package/third_party/boringssl/src/ssl/tls13_client.cc +7 -3
- package/third_party/boringssl/src/ssl/tls13_server.cc +2 -1
- package/third_party/boringssl/src/util/convert_comments.go +23 -0
- package/third_party/boringssl/src/util/fipstools/acvp/acvptool/acvp/acvp.go +1 -1
- package/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/modulewrapper.cc +32 -21
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc +1 -1
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.h +1 -1
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h +3 -2
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.cc +2 -2
- package/third_party/quiche/quiche/http2/adapter/http2_protocol.h +5 -1
- package/third_party/quiche/quiche/http2/adapter/http2_util.cc +2 -0
- package/third_party/quiche/quiche/http2/adapter/http2_visitor_interface.h +2 -0
- package/third_party/quiche/quiche/http2/adapter/nghttp2_adapter_test.cc +119 -0
- package/third_party/quiche/quiche/http2/adapter/oghttp2_adapter_test.cc +130 -0
- package/third_party/quiche/quiche/http2/adapter/oghttp2_session.cc +23 -12
- package/third_party/quiche/quiche/http2/decoder/decode_buffer_test.cc +6 -11
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.cc +0 -5
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.h +0 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender.cc +0 -10
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender.h +0 -1
- package/third_party/quiche/quiche/quic/core/congestion_control/send_algorithm_interface.h +0 -6
- package/third_party/quiche/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.cc +0 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.h +0 -1
- package/third_party/quiche/quiche/quic/core/crypto/transport_parameters_test.cc +1 -3
- package/third_party/quiche/quiche/quic/core/http/end_to_end_test.cc +19 -9
- package/third_party/quiche/quiche/quic/core/http/http_decoder_test.cc +6 -3
- package/third_party/quiche/quiche/quic/core/http/quic_server_session_base.cc +4 -16
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.h +6 -6
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session_test.cc +25 -15
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream_test.cc +6 -5
- package/third_party/quiche/quiche/quic/core/http/web_transport_http3.cc +1 -2
- package/third_party/quiche/quiche/quic/core/quic_bandwidth_test.cc +12 -12
- package/third_party/quiche/quiche/quic/core/quic_connection.cc +5 -95
- package/third_party/quiche/quiche/quic/core/quic_connection.h +0 -35
- package/third_party/quiche/quiche/quic/core/quic_connection_test.cc +80 -196
- package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream.cc +29 -5
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream_test.cc +46 -0
- package/third_party/quiche/quiche/quic/core/quic_dispatcher_test.cc +17 -14
- package/third_party/quiche/quiche/quic/core/quic_flags_list.h +54 -54
- package/third_party/quiche/quiche/quic/core/quic_flow_controller_test.cc +8 -5
- package/third_party/quiche/quiche/quic/core/quic_framer_test.cc +8 -5
- package/third_party/quiche/quiche/quic/core/quic_idle_network_detector.cc +1 -0
- package/third_party/quiche/quiche/quic/core/quic_idle_network_detector_test.cc +29 -0
- package/third_party/quiche/quiche/quic/core/quic_packet_creator.cc +1 -5
- package/third_party/quiche/quiche/quic/core/quic_packet_creator_test.cc +18 -11
- package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager.cc +9 -28
- package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager.h +0 -13
- package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager_test.cc +1 -49
- package/third_party/quiche/quiche/quic/core/quic_session.cc +0 -8
- package/third_party/quiche/quiche/quic/core/quic_session.h +0 -1
- package/third_party/quiche/quiche/quic/core/quic_stream.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_stream_sequencer.cc +5 -0
- package/third_party/quiche/quiche/quic/core/quic_stream_sequencer.h +4 -0
- package/third_party/quiche/quiche/quic/core/quic_stream_sequencer_test.cc +12 -5
- package/third_party/quiche/quiche/quic/core/quic_stream_test.cc +27 -12
- package/third_party/quiche/quiche/quic/core/quic_types.cc +0 -1
- package/third_party/quiche/quiche/quic/core/quic_types.h +0 -3
- package/third_party/quiche/quiche/quic/core/quic_utils.cc +0 -3
- package/third_party/quiche/quiche/quic/core/quic_utils_test.cc +0 -2
- package/third_party/quiche/quiche/quic/core/tls_client_handshaker_test.cc +16 -12
- package/third_party/quiche/quiche/quic/core/tls_handshaker.cc +18 -3
- package/third_party/quiche/quiche/quic/qbone/platform/internet_checksum.cc +7 -2
- package/third_party/quiche/quiche/quic/test_tools/crypto_test_utils.cc +20 -12
- package/third_party/quiche/quiche/quic/test_tools/crypto_test_utils.h +10 -5
- package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.h +0 -2
- package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint.cc +0 -8
- package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint.h +0 -1
- package/third_party/quiche/quiche/quic/tools/quic_simple_server_stream_test.cc +2 -1
- package/platform/net/quiche/common/platform/impl/quic_flags_list_add.h +0 -379
- package/platform/net/quiche/common/platform/impl/quiche_flags_impl.cc +0 -21
- package/third_party/boringssl/src/crypto/asn1/charmap.h +0 -15
- package/third_party/boringssl/src/crypto/asn1/charmap.pl +0 -135
|
@@ -6,109 +6,109 @@
|
|
|
6
6
|
|
|
7
7
|
#ifdef QUIC_FLAG
|
|
8
8
|
|
|
9
|
-
QUIC_FLAG(
|
|
9
|
+
QUIC_FLAG(quic_restart_flag_quic_offload_pacing_to_usps2, false)
|
|
10
10
|
// A testonly reloadable flag that will always default to false.
|
|
11
|
-
QUIC_FLAG(
|
|
11
|
+
QUIC_FLAG(quic_reloadable_flag_quic_testonly_default_false, false)
|
|
12
12
|
// A testonly reloadable flag that will always default to true.
|
|
13
|
-
QUIC_FLAG(
|
|
13
|
+
QUIC_FLAG(quic_reloadable_flag_quic_testonly_default_true, true)
|
|
14
14
|
// A testonly restart flag that will always default to false.
|
|
15
|
-
QUIC_FLAG(
|
|
15
|
+
QUIC_FLAG(quic_restart_flag_quic_testonly_default_false, false)
|
|
16
16
|
// A testonly restart flag that will always default to true.
|
|
17
|
-
QUIC_FLAG(
|
|
17
|
+
QUIC_FLAG(quic_restart_flag_quic_testonly_default_true, true)
|
|
18
18
|
// If bytes in flight has dipped below 1.25*MaxBW in the last round, do not exit PROBE_UP due to excess queue buildup.
|
|
19
|
-
QUIC_FLAG(
|
|
20
|
-
// If true, 1) QUIC connections will use a lower minimum for trusted initial rtt, 2) When TRTT is received, QUIC server sessions will mark the initial rtt from CachedNetworkParameters as trusted.
|
|
21
|
-
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_use_lower_min_for_trusted_irtt, true)
|
|
19
|
+
QUIC_FLAG(quic_reloadable_flag_quic_bbr2_no_probe_up_exit_if_no_queue, true)
|
|
22
20
|
// If true, QUIC will default enable MTU discovery at server, with a target of 1450 bytes.
|
|
23
|
-
QUIC_FLAG(
|
|
21
|
+
QUIC_FLAG(quic_reloadable_flag_quic_enable_mtu_discovery_at_server, false)
|
|
24
22
|
// If true, QuicGsoBatchWriter will support release time if it is available and the process has the permission to do so.
|
|
25
|
-
QUIC_FLAG(
|
|
23
|
+
QUIC_FLAG(quic_restart_flag_quic_support_release_time_for_gso, false)
|
|
24
|
+
// If true, TlsHandshaker::AdvanceHandshake will check if connection is closed after SSL_do_handshake.
|
|
25
|
+
QUIC_FLAG(quic_reloadable_flag_quic_tls_handshaker_check_connection_closed, true)
|
|
26
26
|
// If true, abort async QPACK header decompression in QuicSpdyStream::Reset() and in QuicSpdyStream::OnStreamReset().
|
|
27
|
-
QUIC_FLAG(
|
|
27
|
+
QUIC_FLAG(quic_reloadable_flag_quic_abort_qpack_on_stream_reset, true)
|
|
28
28
|
// If true, ack frequency frame can be sent from server to client.
|
|
29
|
-
QUIC_FLAG(
|
|
29
|
+
QUIC_FLAG(quic_reloadable_flag_quic_can_send_ack_frequency, true)
|
|
30
30
|
// If true, allow client to enable BBRv2 on server via connection option \'B2ON\'.
|
|
31
|
-
QUIC_FLAG(
|
|
31
|
+
QUIC_FLAG(quic_reloadable_flag_quic_allow_client_enabled_bbr_v2, true)
|
|
32
32
|
// If true, close read side but not write side in QuicSpdyStream::OnStreamReset().
|
|
33
|
-
QUIC_FLAG(
|
|
33
|
+
QUIC_FLAG(quic_reloadable_flag_quic_fix_on_stream_reset, true)
|
|
34
|
+
// If true, close the connection if a crypto send buffer exceeds its size limit.
|
|
35
|
+
QUIC_FLAG(quic_reloadable_flag_quic_bounded_crypto_send_buffer, false)
|
|
34
36
|
// If true, consider original connection ID as active before handshake completes.
|
|
35
|
-
QUIC_FLAG(
|
|
36
|
-
// If true, consolidate more logic into SetRetransmissionAlarm to ensure the logic is applied consistently.
|
|
37
|
-
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_simplify_set_retransmission_alarm, true)
|
|
37
|
+
QUIC_FLAG(quic_reloadable_flag_quic_consider_original_connection_id_as_active_pre_handshake, true)
|
|
38
38
|
// If true, default-enable 5RTO blachole detection.
|
|
39
|
-
QUIC_FLAG(
|
|
39
|
+
QUIC_FLAG(quic_reloadable_flag_quic_default_enable_5rto_blackhole_detection2, true)
|
|
40
40
|
// If true, deliver INITIAL packets before other types of packets in QuicBufferedPacketStore.
|
|
41
|
-
QUIC_FLAG(
|
|
41
|
+
QUIC_FLAG(quic_reloadable_flag_quic_deliver_initial_packets_first, true)
|
|
42
42
|
// If true, disable QUIC version Q043.
|
|
43
|
-
QUIC_FLAG(
|
|
43
|
+
QUIC_FLAG(quic_reloadable_flag_quic_disable_version_q043, false)
|
|
44
44
|
// If true, disable QUIC version Q046.
|
|
45
|
-
QUIC_FLAG(
|
|
45
|
+
QUIC_FLAG(quic_reloadable_flag_quic_disable_version_q046, false)
|
|
46
46
|
// If true, disable QUIC version Q050.
|
|
47
|
-
QUIC_FLAG(
|
|
47
|
+
QUIC_FLAG(quic_reloadable_flag_quic_disable_version_q050, false)
|
|
48
48
|
// If true, disable QUIC version h3 (RFCv1).
|
|
49
|
-
QUIC_FLAG(
|
|
49
|
+
QUIC_FLAG(quic_reloadable_flag_quic_disable_version_rfcv1, false)
|
|
50
50
|
// If true, disable QUIC version h3-29.
|
|
51
|
-
QUIC_FLAG(
|
|
51
|
+
QUIC_FLAG(quic_reloadable_flag_quic_disable_version_draft_29, false)
|
|
52
52
|
// If true, disable blackhole detection on server side.
|
|
53
|
-
QUIC_FLAG(
|
|
53
|
+
QUIC_FLAG(quic_reloadable_flag_quic_disable_server_blackhole_detection, false)
|
|
54
54
|
// If true, disable resumption when receiving NRES connection option.
|
|
55
|
-
QUIC_FLAG(
|
|
55
|
+
QUIC_FLAG(quic_reloadable_flag_quic_enable_disable_resumption, true)
|
|
56
56
|
// If true, discard INITIAL packet if the key has been dropped.
|
|
57
|
-
QUIC_FLAG(
|
|
57
|
+
QUIC_FLAG(quic_reloadable_flag_quic_discard_initial_packet_with_key_dropped, true)
|
|
58
58
|
// If true, do not bundle ACK while sending PATH_CHALLENGE on alternative path.
|
|
59
|
-
QUIC_FLAG(
|
|
59
|
+
QUIC_FLAG(quic_reloadable_flag_quic_not_bundle_ack_on_alternative_path, true)
|
|
60
60
|
// If true, enable server retransmittable on wire PING.
|
|
61
|
-
QUIC_FLAG(
|
|
61
|
+
QUIC_FLAG(quic_reloadable_flag_quic_enable_server_on_wire_ping, true)
|
|
62
62
|
// If true, flush pending frames as well as pending padding bytes on connection migration.
|
|
63
|
-
QUIC_FLAG(
|
|
63
|
+
QUIC_FLAG(quic_reloadable_flag_quic_flush_pending_frames_and_padding_bytes_on_migration, true)
|
|
64
64
|
// If true, ietf connection migration is no longer conditioned on connection option RVCM.
|
|
65
|
-
QUIC_FLAG(
|
|
65
|
+
QUIC_FLAG(quic_reloadable_flag_quic_remove_connection_migration_connection_option_v2, false)
|
|
66
66
|
// If true, include offset in QUIC STREAM_DATA_BLOCKED and DATA_BLOCKED frames.
|
|
67
|
-
QUIC_FLAG(
|
|
67
|
+
QUIC_FLAG(quic_reloadable_flag_quic_include_offset_in_blocked_frames, false)
|
|
68
68
|
// If true, include stream information in idle timeout connection close detail.
|
|
69
|
-
QUIC_FLAG(
|
|
69
|
+
QUIC_FLAG(quic_reloadable_flag_quic_add_stream_info_to_idle_close_detail, true)
|
|
70
70
|
// If true, quic server will send ENABLE_CONNECT_PROTOCOL setting and and endpoint will validate required request/response headers and extended CONNECT mechanism and update code counts of valid/invalid headers.
|
|
71
|
-
QUIC_FLAG(
|
|
71
|
+
QUIC_FLAG(quic_reloadable_flag_quic_verify_request_headers_2, true)
|
|
72
72
|
// If true, reject or send error response code upon receiving invalid request or response headers. This flag depends on --gfe2_reloadable_flag_quic_verify_request_headers_2.
|
|
73
|
-
QUIC_FLAG(
|
|
73
|
+
QUIC_FLAG(quic_reloadable_flag_quic_act_upon_invalid_header, false)
|
|
74
74
|
// If true, require handshake confirmation for QUIC connections, functionally disabling 0-rtt handshakes.
|
|
75
|
-
QUIC_FLAG(
|
|
75
|
+
QUIC_FLAG(quic_reloadable_flag_quic_require_handshake_confirmation, false)
|
|
76
76
|
// If true, server proactively retires client issued connection ID on reverse path validation failure.
|
|
77
|
-
QUIC_FLAG(
|
|
77
|
+
QUIC_FLAG(quic_reloadable_flag_quic_retire_cid_on_reverse_path_validation_failure, true)
|
|
78
78
|
// If true, server sends bandwidth eastimate when network is idle for a while.
|
|
79
|
-
QUIC_FLAG(
|
|
79
|
+
QUIC_FLAG(quic_restart_flag_quic_enable_sending_bandwidth_estimate_when_network_idle, true)
|
|
80
80
|
// If true, set burst token to 2 in cwnd bootstrapping experiment.
|
|
81
|
-
QUIC_FLAG(
|
|
81
|
+
QUIC_FLAG(quic_reloadable_flag_quic_conservative_bursts, false)
|
|
82
82
|
// If true, stop resetting ideal_next_packet_send_time_ in pacing sender.
|
|
83
|
-
QUIC_FLAG(
|
|
83
|
+
QUIC_FLAG(quic_reloadable_flag_quic_donot_reset_ideal_next_packet_send_time, false)
|
|
84
84
|
// If true, use BBRv2 as the default congestion controller. Takes precedence over --quic_default_to_bbr.
|
|
85
|
-
QUIC_FLAG(
|
|
85
|
+
QUIC_FLAG(quic_reloadable_flag_quic_default_to_bbr_v2, false)
|
|
86
86
|
// If true, use PING manager to manage the PING alarm.
|
|
87
|
-
QUIC_FLAG(
|
|
87
|
+
QUIC_FLAG(quic_reloadable_flag_quic_use_ping_manager2, true)
|
|
88
88
|
// If true, use new connection ID in connection migration.
|
|
89
|
-
QUIC_FLAG(
|
|
89
|
+
QUIC_FLAG(quic_reloadable_flag_quic_connection_migration_use_new_cid_v2, true)
|
|
90
90
|
// If true, uses conservative cwnd gain and pacing gain when cwnd gets bootstrapped.
|
|
91
|
-
QUIC_FLAG(
|
|
91
|
+
QUIC_FLAG(quic_reloadable_flag_quic_conservative_cwnd_and_pacing_gains, false)
|
|
92
92
|
// When the flag is true, exit STARTUP after the same number of loss events as PROBE_UP.
|
|
93
|
-
QUIC_FLAG(
|
|
93
|
+
QUIC_FLAG(quic_reloadable_flag_quic_bbr2_startup_probe_up_loss_events, true)
|
|
94
94
|
// When true, defaults to BBR congestion control instead of Cubic.
|
|
95
|
-
QUIC_FLAG(
|
|
95
|
+
QUIC_FLAG(quic_reloadable_flag_quic_default_to_bbr, false)
|
|
96
96
|
// When true, prevents QUIC\'s PacingSender from generating bursts when the congestion controller is CWND limited and not pacing limited.
|
|
97
|
-
QUIC_FLAG(
|
|
97
|
+
QUIC_FLAG(quic_reloadable_flag_quic_fix_pacing_sender_bursts, true)
|
|
98
98
|
// When true, set the initial congestion control window from connection options in QuicSentPacketManager rather than TcpCubicSenderBytes.
|
|
99
|
-
QUIC_FLAG(
|
|
99
|
+
QUIC_FLAG(quic_reloadable_flag_quic_unified_iw_options, true)
|
|
100
100
|
// When true, support draft-ietf-quic-v2-01
|
|
101
|
-
QUIC_FLAG(
|
|
101
|
+
QUIC_FLAG(quic_reloadable_flag_quic_enable_version_2_draft_01, false)
|
|
102
102
|
// When true, the B203 connection option causes the Bbr2Sender to ignore inflight_hi during PROBE_UP and increase it when the bytes delivered without loss are higher.
|
|
103
|
-
QUIC_FLAG(
|
|
103
|
+
QUIC_FLAG(quic_reloadable_flag_quic_bbr2_ignore_inflight_hi_in_probe_up, true)
|
|
104
104
|
// When true, the B205 connection option enables extra acked in STARTUP, and B204 adds new logic to decrease it whenever max bandwidth increases.
|
|
105
|
-
QUIC_FLAG(
|
|
105
|
+
QUIC_FLAG(quic_reloadable_flag_quic_bbr2_startup_extra_acked, true)
|
|
106
106
|
// When true, the B207 connection option causes BBR2 to exit STARTUP if a persistent queue of 2*BDP has existed for the entire round.
|
|
107
|
-
QUIC_FLAG(
|
|
107
|
+
QUIC_FLAG(quic_reloadable_flag_quic_bbr2_exit_startup_on_persistent_queue2, true)
|
|
108
108
|
// When true, the BBQ0 connection option causes QUIC BBR2 to add bytes_acked to probe_up_acked if the connection hasn\'t been app-limited since inflight_hi was utilized.
|
|
109
|
-
QUIC_FLAG(
|
|
109
|
+
QUIC_FLAG(quic_reloadable_flag_quic_bbr2_add_bytes_acked_after_inflight_hi_limited, true)
|
|
110
110
|
// When true, the BBR4 copt sets the extra_acked window to 20 RTTs and BBR5 sets it to 40 RTTs.
|
|
111
|
-
QUIC_FLAG(
|
|
111
|
+
QUIC_FLAG(quic_reloadable_flag_quic_bbr2_extra_acked_window, true)
|
|
112
112
|
|
|
113
113
|
#endif
|
|
114
114
|
|
|
@@ -95,13 +95,16 @@ TEST_F(QuicFlowControllerTest, SendingBytes) {
|
|
|
95
95
|
EXPECT_EQ(send_window_, flow_controller_->SendWindowSize());
|
|
96
96
|
|
|
97
97
|
// Try to send more bytes, violating flow control.
|
|
98
|
-
EXPECT_CALL(*connection_,
|
|
99
|
-
CloseConnection(QUIC_FLOW_CONTROL_SENT_TOO_MUCH_DATA, _, _));
|
|
100
98
|
EXPECT_QUIC_BUG(
|
|
101
|
-
|
|
99
|
+
{
|
|
100
|
+
EXPECT_CALL(
|
|
101
|
+
*connection_,
|
|
102
|
+
CloseConnection(QUIC_FLOW_CONTROL_SENT_TOO_MUCH_DATA, _, _));
|
|
103
|
+
flow_controller_->AddBytesSent(send_window_ * 10);
|
|
104
|
+
EXPECT_TRUE(flow_controller_->IsBlocked());
|
|
105
|
+
EXPECT_EQ(0u, flow_controller_->SendWindowSize());
|
|
106
|
+
},
|
|
102
107
|
absl::StrCat("Trying to send an extra ", send_window_ * 10, " bytes"));
|
|
103
|
-
EXPECT_TRUE(flow_controller_->IsBlocked());
|
|
104
|
-
EXPECT_EQ(0u, flow_controller_->SendWindowSize());
|
|
105
108
|
}
|
|
106
109
|
|
|
107
110
|
TEST_F(QuicFlowControllerTest, ReceivingBytes) {
|
|
@@ -10446,11 +10446,14 @@ TEST_P(QuicFramerTest, EncryptEmptyPacket) {
|
|
|
10446
10446
|
/*retry_token_length=*/0, VARIABLE_LENGTH_INTEGER_LENGTH_0);
|
|
10447
10447
|
char buffer[kMaxOutgoingPacketSize];
|
|
10448
10448
|
size_t encrypted_length = 1;
|
|
10449
|
-
EXPECT_QUIC_BUG(
|
|
10450
|
-
|
|
10451
|
-
|
|
10452
|
-
|
|
10453
|
-
|
|
10449
|
+
EXPECT_QUIC_BUG(
|
|
10450
|
+
{
|
|
10451
|
+
encrypted_length =
|
|
10452
|
+
framer_.EncryptPayload(ENCRYPTION_INITIAL, kPacketNumber, *packet,
|
|
10453
|
+
buffer, kMaxOutgoingPacketSize);
|
|
10454
|
+
EXPECT_EQ(0u, encrypted_length);
|
|
10455
|
+
},
|
|
10456
|
+
"packet is shorter than associated data length");
|
|
10454
10457
|
}
|
|
10455
10458
|
|
|
10456
10459
|
TEST_P(QuicFramerTest, EncryptPacketWithVersionFlag) {
|
|
@@ -71,6 +71,7 @@ void QuicIdleNetworkDetector::SetTimeouts(
|
|
|
71
71
|
QuicTime::Delta handshake_timeout, QuicTime::Delta idle_network_timeout) {
|
|
72
72
|
handshake_timeout_ = handshake_timeout;
|
|
73
73
|
idle_network_timeout_ = idle_network_timeout;
|
|
74
|
+
bandwidth_update_timeout_ = QuicTime::Delta::Infinite();
|
|
74
75
|
|
|
75
76
|
if (GetQuicRestartFlag(
|
|
76
77
|
quic_enable_sending_bandwidth_estimate_when_network_idle) &&
|
|
@@ -247,6 +247,35 @@ TEST_F(QuicIdleNetworkDetectorTest, NoAlarmAfterStopped) {
|
|
|
247
247
|
EXPECT_FALSE(alarm_->IsSet());
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
+
TEST_F(QuicIdleNetworkDetectorTest,
|
|
251
|
+
ResetBandwidthTimeoutWhenHandshakeTimeoutIsSet) {
|
|
252
|
+
if (!GetQuicRestartFlag(
|
|
253
|
+
quic_enable_sending_bandwidth_estimate_when_network_idle)) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
detector_->SetTimeouts(
|
|
257
|
+
/*handshake_timeout=*/QuicTime::Delta::Infinite(),
|
|
258
|
+
/*idle_network_timeout=*/QuicTime::Delta::FromSeconds(20));
|
|
259
|
+
// The deadline is set based on the bandwidth timeout.
|
|
260
|
+
EXPECT_EQ(clock_.Now() + QuicTime::Delta::FromSeconds(10),
|
|
261
|
+
alarm_->deadline());
|
|
262
|
+
|
|
263
|
+
detector_->SetTimeouts(
|
|
264
|
+
/*handshake_timeout=*/QuicTime::Delta::FromSeconds(15),
|
|
265
|
+
/*idle_network_timeout=*/QuicTime::Delta::FromSeconds(20));
|
|
266
|
+
// Bandwidth timeout is reset and the deadline is set based on the handshake
|
|
267
|
+
// timeout.
|
|
268
|
+
EXPECT_EQ(clock_.Now() + QuicTime::Delta::FromSeconds(15),
|
|
269
|
+
alarm_->deadline());
|
|
270
|
+
|
|
271
|
+
detector_->SetTimeouts(
|
|
272
|
+
/*handshake_timeout=*/QuicTime::Delta::Infinite(),
|
|
273
|
+
/*idle_network_timeout=*/QuicTime::Delta::FromSeconds(20));
|
|
274
|
+
// The deadline is set based on the bandwidth timeout.
|
|
275
|
+
EXPECT_EQ(clock_.Now() + QuicTime::Delta::FromSeconds(10),
|
|
276
|
+
alarm_->deadline());
|
|
277
|
+
}
|
|
278
|
+
|
|
250
279
|
} // namespace
|
|
251
280
|
|
|
252
281
|
} // namespace test
|
|
@@ -1875,10 +1875,6 @@ void QuicPacketCreator::MaybeAddPadding() {
|
|
|
1875
1875
|
return;
|
|
1876
1876
|
}
|
|
1877
1877
|
|
|
1878
|
-
if (packet_.transmission_type == PROBING_RETRANSMISSION) {
|
|
1879
|
-
needs_full_padding_ = true;
|
|
1880
|
-
}
|
|
1881
|
-
|
|
1882
1878
|
if (packet_.fate == COALESCE || packet_.fate == LEGACY_VERSION_ENCAPSULATE) {
|
|
1883
1879
|
// Do not add full padding if the packet is going to be coalesced or
|
|
1884
1880
|
// encapsulated.
|
|
@@ -2076,7 +2072,7 @@ size_t QuicPacketCreator::MinPlaintextPacketSize(
|
|
|
2076
2072
|
// 1.3 is used, unittests still use NullEncrypter/NullDecrypter (and other
|
|
2077
2073
|
// test crypters) which also only use 12 byte tags.
|
|
2078
2074
|
//
|
|
2079
|
-
// TODO(
|
|
2075
|
+
// TODO(b/234061734): Set this based on the handshake protocol in use.
|
|
2080
2076
|
return 7;
|
|
2081
2077
|
}
|
|
2082
2078
|
|
|
@@ -1549,11 +1549,13 @@ TEST_P(QuicPacketCreatorTest, AddUnencryptedStreamDataClosesConnection) {
|
|
|
1549
1549
|
}
|
|
1550
1550
|
|
|
1551
1551
|
creator_.set_encryption_level(ENCRYPTION_INITIAL);
|
|
1552
|
-
EXPECT_CALL(delegate_, OnUnrecoverableError(_, _));
|
|
1553
1552
|
QuicStreamFrame stream_frame(GetNthClientInitiatedStreamId(0),
|
|
1554
1553
|
/*fin=*/false, 0u, absl::string_view());
|
|
1555
1554
|
EXPECT_QUIC_BUG(
|
|
1556
|
-
|
|
1555
|
+
{
|
|
1556
|
+
EXPECT_CALL(delegate_, OnUnrecoverableError(_, _));
|
|
1557
|
+
creator_.AddFrame(QuicFrame(stream_frame), NOT_RETRANSMISSION);
|
|
1558
|
+
},
|
|
1557
1559
|
"Cannot send stream data with level: ENCRYPTION_INITIAL");
|
|
1558
1560
|
}
|
|
1559
1561
|
|
|
@@ -1564,11 +1566,13 @@ TEST_P(QuicPacketCreatorTest, SendStreamDataWithEncryptionHandshake) {
|
|
|
1564
1566
|
}
|
|
1565
1567
|
|
|
1566
1568
|
creator_.set_encryption_level(ENCRYPTION_HANDSHAKE);
|
|
1567
|
-
EXPECT_CALL(delegate_, OnUnrecoverableError(_, _));
|
|
1568
1569
|
QuicStreamFrame stream_frame(GetNthClientInitiatedStreamId(0),
|
|
1569
1570
|
/*fin=*/false, 0u, absl::string_view());
|
|
1570
1571
|
EXPECT_QUIC_BUG(
|
|
1571
|
-
|
|
1572
|
+
{
|
|
1573
|
+
EXPECT_CALL(delegate_, OnUnrecoverableError(_, _));
|
|
1574
|
+
creator_.AddFrame(QuicFrame(stream_frame), NOT_RETRANSMISSION);
|
|
1575
|
+
},
|
|
1572
1576
|
"Cannot send stream data with level: ENCRYPTION_HANDSHAKE");
|
|
1573
1577
|
}
|
|
1574
1578
|
|
|
@@ -1935,7 +1939,7 @@ TEST_P(QuicPacketCreatorTest, PacketTransmissionType) {
|
|
|
1935
1939
|
EXPECT_TRUE(creator_.AddFrame(stream_frame, PTO_RETRANSMISSION));
|
|
1936
1940
|
ASSERT_EQ(serialized_packet_, nullptr);
|
|
1937
1941
|
|
|
1938
|
-
EXPECT_TRUE(creator_.AddFrame(padding_frame,
|
|
1942
|
+
EXPECT_TRUE(creator_.AddFrame(padding_frame, LOSS_RETRANSMISSION));
|
|
1939
1943
|
creator_.FlushCurrentPacket();
|
|
1940
1944
|
ASSERT_TRUE(serialized_packet_->encrypted_buffer);
|
|
1941
1945
|
|
|
@@ -2563,12 +2567,15 @@ TEST_F(QuicPacketCreatorMultiplePacketsTest,
|
|
|
2563
2567
|
delegate_.SetCanWriteAnything();
|
|
2564
2568
|
const std::string data(10000, '?');
|
|
2565
2569
|
EXPECT_CALL(delegate_, OnSerializedPacket(_)).Times(0);
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2570
|
+
EXPECT_QUIC_BUG(
|
|
2571
|
+
{
|
|
2572
|
+
EXPECT_CALL(delegate_, OnUnrecoverableError(_, _));
|
|
2573
|
+
creator_.ConsumeDataFastPath(
|
|
2574
|
+
QuicUtils::GetFirstBidirectionalStreamId(
|
|
2575
|
+
framer_.transport_version(), Perspective::IS_CLIENT),
|
|
2576
|
+
data);
|
|
2577
|
+
},
|
|
2578
|
+
"");
|
|
2572
2579
|
}
|
|
2573
2580
|
|
|
2574
2581
|
TEST_F(QuicPacketCreatorMultiplePacketsTest, AddControlFrame_OnlyAckWritable) {
|
|
@@ -47,7 +47,6 @@ static const float kPtoMultiplierWithoutRttSamples = 3;
|
|
|
47
47
|
// the frames directly (as opposed to resulting in a loss notification).
|
|
48
48
|
inline bool ShouldForceRetransmission(TransmissionType transmission_type) {
|
|
49
49
|
return transmission_type == HANDSHAKE_RETRANSMISSION ||
|
|
50
|
-
transmission_type == PROBING_RETRANSMISSION ||
|
|
51
50
|
transmission_type == PTO_RETRANSMISSION;
|
|
52
51
|
}
|
|
53
52
|
|
|
@@ -286,24 +285,18 @@ void QuicSentPacketManager::AdjustNetworkParameters(
|
|
|
286
285
|
const QuicBandwidth& bandwidth = params.bandwidth;
|
|
287
286
|
const QuicTime::Delta& rtt = params.rtt;
|
|
288
287
|
|
|
289
|
-
if (
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
// Only set initial rtt if we are using the default. This avoids
|
|
298
|
-
// overwriting a trusted initial rtt by an untrusted one.
|
|
299
|
-
SetInitialRtt(rtt, /*trusted=*/false);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
} else {
|
|
303
|
-
if (!rtt.IsZero()) {
|
|
288
|
+
if (!rtt.IsZero()) {
|
|
289
|
+
if (params.is_rtt_trusted) {
|
|
290
|
+
// Always set initial rtt if it's trusted.
|
|
291
|
+
SetInitialRtt(rtt, /*trusted=*/true);
|
|
292
|
+
} else if (rtt_stats_.initial_rtt() ==
|
|
293
|
+
QuicTime::Delta::FromMilliseconds(kInitialRttMs)) {
|
|
294
|
+
// Only set initial rtt if we are using the default. This avoids
|
|
295
|
+
// overwriting a trusted initial rtt by an untrusted one.
|
|
304
296
|
SetInitialRtt(rtt, /*trusted=*/false);
|
|
305
297
|
}
|
|
306
298
|
}
|
|
299
|
+
|
|
307
300
|
const QuicByteCount old_cwnd = send_algorithm_->GetCongestionWindow();
|
|
308
301
|
if (GetQuicReloadableFlag(quic_conservative_bursts) && using_pacing_ &&
|
|
309
302
|
!bandwidth.IsZero()) {
|
|
@@ -509,9 +502,6 @@ void QuicSentPacketManager::MarkForRetransmission(
|
|
|
509
502
|
<< "packet number " << packet_number
|
|
510
503
|
<< " transmission_type: " << transmission_type << " transmission_info "
|
|
511
504
|
<< transmission_info->DebugString();
|
|
512
|
-
// Handshake packets should never be sent as probing retransmissions.
|
|
513
|
-
QUICHE_DCHECK(!transmission_info->has_crypto_handshake ||
|
|
514
|
-
transmission_type != PROBING_RETRANSMISSION);
|
|
515
505
|
if (ShouldForceRetransmission(transmission_type)) {
|
|
516
506
|
if (!unacked_packets_.RetransmitFrames(
|
|
517
507
|
QuicFrames(transmission_info->retransmittable_frames),
|
|
@@ -996,15 +986,6 @@ const QuicTime QuicSentPacketManager::GetRetransmissionTime() const {
|
|
|
996
986
|
// Do not set the timer if there is any credit left.
|
|
997
987
|
return QuicTime::Zero();
|
|
998
988
|
}
|
|
999
|
-
PacketNumberSpace packet_number_space;
|
|
1000
|
-
if (!simplify_set_retransmission_alarm_ &&
|
|
1001
|
-
supports_multiple_packet_number_spaces() &&
|
|
1002
|
-
unacked_packets_.perspective() == Perspective::IS_SERVER &&
|
|
1003
|
-
!GetEarliestPacketSentTimeForPto(&packet_number_space).IsInitialized()) {
|
|
1004
|
-
// Do not set the timer on the server side if the only in flight packets are
|
|
1005
|
-
// half RTT data.
|
|
1006
|
-
return QuicTime::Zero();
|
|
1007
|
-
}
|
|
1008
989
|
switch (GetRetransmissionMode()) {
|
|
1009
990
|
case HANDSHAKE_MODE:
|
|
1010
991
|
return unacked_packets_.GetLastCryptoPacketSentTime() +
|
|
@@ -464,12 +464,6 @@ class QUIC_EXPORT_PRIVATE QuicSentPacketManager {
|
|
|
464
464
|
// kMinUntrustedInitialRoundTripTimeUs if not |trusted|.
|
|
465
465
|
void SetInitialRtt(QuicTime::Delta rtt, bool trusted);
|
|
466
466
|
|
|
467
|
-
bool use_lower_min_irtt() const { return use_lower_min_irtt_; }
|
|
468
|
-
|
|
469
|
-
bool simplify_set_retransmission_alarm() const {
|
|
470
|
-
return simplify_set_retransmission_alarm_;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
467
|
private:
|
|
474
468
|
friend class test::QuicConnectionPeer;
|
|
475
469
|
friend class test::QuicSentPacketManagerPeer;
|
|
@@ -674,13 +668,6 @@ class QUIC_EXPORT_PRIVATE QuicSentPacketManager {
|
|
|
674
668
|
|
|
675
669
|
// Whether to ignore the ack_delay in received ACKs.
|
|
676
670
|
bool ignore_ack_delay_;
|
|
677
|
-
|
|
678
|
-
// Latched value of --quic_use_lower_min_for_trusted_irtt.
|
|
679
|
-
bool use_lower_min_irtt_ =
|
|
680
|
-
GetQuicReloadableFlag(quic_use_lower_min_for_trusted_irtt);
|
|
681
|
-
|
|
682
|
-
const bool simplify_set_retransmission_alarm_ =
|
|
683
|
-
GetQuicReloadableFlag(quic_simplify_set_retransmission_alarm);
|
|
684
671
|
};
|
|
685
672
|
|
|
686
673
|
} // namespace quic
|
|
@@ -208,8 +208,7 @@ class QuicSentPacketManagerTest : public QuicTest {
|
|
|
208
208
|
TransmissionType transmission_type) {
|
|
209
209
|
bool is_lost = false;
|
|
210
210
|
if (transmission_type == HANDSHAKE_RETRANSMISSION ||
|
|
211
|
-
transmission_type == PTO_RETRANSMISSION
|
|
212
|
-
transmission_type == PROBING_RETRANSMISSION) {
|
|
211
|
+
transmission_type == PTO_RETRANSMISSION) {
|
|
213
212
|
EXPECT_CALL(notifier_, RetransmitFrames(_, _))
|
|
214
213
|
.WillOnce(WithArgs<1>(
|
|
215
214
|
Invoke([this, new_packet_number](TransmissionType type) {
|
|
@@ -2699,53 +2698,6 @@ TEST_F(QuicSentPacketManagerTest, ClearLastInflightPacketsSentTime) {
|
|
|
2699
2698
|
EXPECT_EQ(packet2_sent_time + pto_delay, manager_.GetRetransmissionTime());
|
|
2700
2699
|
}
|
|
2701
2700
|
|
|
2702
|
-
// Regression test for b/157895910.
|
|
2703
|
-
TEST_F(QuicSentPacketManagerTest, EarliestSentTimeNotInitializedWhenPtoFires) {
|
|
2704
|
-
if (GetQuicReloadableFlag(quic_simplify_set_retransmission_alarm)) {
|
|
2705
|
-
return;
|
|
2706
|
-
}
|
|
2707
|
-
manager_.EnableMultiplePacketNumberSpacesSupport();
|
|
2708
|
-
EXPECT_CALL(*send_algorithm_, PacingRate(_))
|
|
2709
|
-
.WillRepeatedly(Return(QuicBandwidth::Zero()));
|
|
2710
|
-
EXPECT_CALL(*send_algorithm_, GetCongestionWindow())
|
|
2711
|
-
.WillRepeatedly(Return(10 * kDefaultTCPMSS));
|
|
2712
|
-
|
|
2713
|
-
// Send INITIAL 1.
|
|
2714
|
-
SendDataPacket(1, ENCRYPTION_INITIAL);
|
|
2715
|
-
|
|
2716
|
-
// Send HANDSHAKE packets.
|
|
2717
|
-
clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(10));
|
|
2718
|
-
SendDataPacket(2, ENCRYPTION_HANDSHAKE);
|
|
2719
|
-
SendDataPacket(3, ENCRYPTION_HANDSHAKE);
|
|
2720
|
-
SendDataPacket(4, ENCRYPTION_HANDSHAKE);
|
|
2721
|
-
|
|
2722
|
-
// Send half RTT packet.
|
|
2723
|
-
SendDataPacket(5, ENCRYPTION_FORWARD_SECURE);
|
|
2724
|
-
|
|
2725
|
-
// Received ACK for INITIAL packet 1.
|
|
2726
|
-
ExpectAck(1);
|
|
2727
|
-
clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(90));
|
|
2728
|
-
manager_.OnAckFrameStart(QuicPacketNumber(1), QuicTime::Delta::Infinite(),
|
|
2729
|
-
clock_.Now());
|
|
2730
|
-
manager_.OnAckRange(QuicPacketNumber(1), QuicPacketNumber(2));
|
|
2731
|
-
EXPECT_EQ(PACKETS_NEWLY_ACKED,
|
|
2732
|
-
manager_.OnAckFrameEnd(clock_.Now(), QuicPacketNumber(1),
|
|
2733
|
-
ENCRYPTION_INITIAL));
|
|
2734
|
-
|
|
2735
|
-
// Received ACK for HANDSHAKE packets.
|
|
2736
|
-
uint64_t acked[] = {2, 3, 4};
|
|
2737
|
-
ExpectAcksAndLosses(true, acked, ABSL_ARRAYSIZE(acked), nullptr, 0);
|
|
2738
|
-
clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(90));
|
|
2739
|
-
manager_.OnAckFrameStart(QuicPacketNumber(4), QuicTime::Delta::Infinite(),
|
|
2740
|
-
clock_.Now());
|
|
2741
|
-
manager_.OnAckRange(QuicPacketNumber(2), QuicPacketNumber(5));
|
|
2742
|
-
EXPECT_EQ(PACKETS_NEWLY_ACKED,
|
|
2743
|
-
manager_.OnAckFrameEnd(clock_.Now(), QuicPacketNumber(4),
|
|
2744
|
-
ENCRYPTION_HANDSHAKE));
|
|
2745
|
-
// Verify PTO will not be armed.
|
|
2746
|
-
EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime());
|
|
2747
|
-
}
|
|
2748
|
-
|
|
2749
2701
|
TEST_F(QuicSentPacketManagerTest, MaybeRetransmitInitialData) {
|
|
2750
2702
|
manager_.EnableMultiplePacketNumberSpacesSupport();
|
|
2751
2703
|
EXPECT_CALL(*send_algorithm_, PacingRate(_))
|
|
@@ -692,14 +692,6 @@ void QuicSession::OnCanWrite() {
|
|
|
692
692
|
}
|
|
693
693
|
}
|
|
694
694
|
|
|
695
|
-
bool QuicSession::SendProbingData() {
|
|
696
|
-
if (connection()->sent_packet_manager().MaybeRetransmitOldestPacket(
|
|
697
|
-
PROBING_RETRANSMISSION)) {
|
|
698
|
-
return true;
|
|
699
|
-
}
|
|
700
|
-
return false;
|
|
701
|
-
}
|
|
702
|
-
|
|
703
695
|
bool QuicSession::WillingAndAbleToWrite() const {
|
|
704
696
|
// Schedule a write when:
|
|
705
697
|
// 1) control frame manager has pending or new control frames, or
|
|
@@ -138,7 +138,6 @@ class QUIC_EXPORT_PRIVATE QuicSession
|
|
|
138
138
|
const QuicSocketAddress& peer_address,
|
|
139
139
|
bool is_connectivity_probe) override;
|
|
140
140
|
void OnCanWrite() override;
|
|
141
|
-
bool SendProbingData() override;
|
|
142
141
|
void OnCongestionWindowChange(QuicTime /*now*/) override {}
|
|
143
142
|
void OnConnectionMigration(AddressChangeType /*type*/) override {}
|
|
144
143
|
// Adds a connection level WINDOW_UPDATE frame.
|
|
@@ -1136,7 +1136,7 @@ void QuicStream::OnStreamFrameLost(QuicStreamOffset offset,
|
|
|
1136
1136
|
bool QuicStream::RetransmitStreamData(QuicStreamOffset offset,
|
|
1137
1137
|
QuicByteCount data_length, bool fin,
|
|
1138
1138
|
TransmissionType type) {
|
|
1139
|
-
QUICHE_DCHECK(type == PTO_RETRANSMISSION
|
|
1139
|
+
QUICHE_DCHECK(type == PTO_RETRANSMISSION);
|
|
1140
1140
|
if (HasDeadlinePassed()) {
|
|
1141
1141
|
OnDeadlinePassed();
|
|
1142
1142
|
return true;
|
|
@@ -292,6 +292,11 @@ QuicStreamOffset QuicStreamSequencer::NumBytesConsumed() const {
|
|
|
292
292
|
return buffered_frames_.BytesConsumed();
|
|
293
293
|
}
|
|
294
294
|
|
|
295
|
+
bool QuicStreamSequencer::IsAllDataAvailable() const {
|
|
296
|
+
QUICHE_DCHECK_LE(NumBytesConsumed() + NumBytesBuffered(), close_offset_);
|
|
297
|
+
return NumBytesConsumed() + NumBytesBuffered() >= close_offset_;
|
|
298
|
+
}
|
|
299
|
+
|
|
295
300
|
const std::string QuicStreamSequencer::DebugString() const {
|
|
296
301
|
// clang-format off
|
|
297
302
|
return absl::StrCat("QuicStreamSequencer:",
|
|
@@ -139,6 +139,10 @@ class QUIC_EXPORT_PRIVATE QuicStreamSequencer {
|
|
|
139
139
|
// Number of bytes has been consumed.
|
|
140
140
|
QuicStreamOffset NumBytesConsumed() const;
|
|
141
141
|
|
|
142
|
+
// Returns true if all of the data within the stream up until the FIN is
|
|
143
|
+
// available.
|
|
144
|
+
bool IsAllDataAvailable() const;
|
|
145
|
+
|
|
142
146
|
QuicStreamOffset close_offset() const { return close_offset_; }
|
|
143
147
|
|
|
144
148
|
int num_frames_received() const { return num_frames_received_; }
|
|
@@ -223,8 +223,10 @@ TEST_F(QuicStreamSequencerTest, BlockedThenFullFrameConsumed) {
|
|
|
223
223
|
ConsumeData(3);
|
|
224
224
|
}));
|
|
225
225
|
EXPECT_FALSE(sequencer_->IsClosed());
|
|
226
|
+
EXPECT_FALSE(sequencer_->IsAllDataAvailable());
|
|
226
227
|
OnFinFrame(3, "def");
|
|
227
228
|
EXPECT_TRUE(sequencer_->IsClosed());
|
|
229
|
+
EXPECT_TRUE(sequencer_->IsAllDataAvailable());
|
|
228
230
|
}
|
|
229
231
|
|
|
230
232
|
TEST_F(QuicStreamSequencerTest, BlockedThenFullFrameAndFinConsumed) {
|
|
@@ -239,6 +241,7 @@ TEST_F(QuicStreamSequencerTest, BlockedThenFullFrameAndFinConsumed) {
|
|
|
239
241
|
ConsumeData(3);
|
|
240
242
|
}));
|
|
241
243
|
EXPECT_FALSE(sequencer_->IsClosed());
|
|
244
|
+
EXPECT_TRUE(sequencer_->IsAllDataAvailable());
|
|
242
245
|
sequencer_->SetUnblocked();
|
|
243
246
|
EXPECT_TRUE(sequencer_->IsClosed());
|
|
244
247
|
EXPECT_EQ(0u, NumBufferedBytes());
|
|
@@ -260,6 +263,7 @@ TEST_F(QuicStreamSequencerTest, EmptyFinFrame) {
|
|
|
260
263
|
OnFinFrame(0, "");
|
|
261
264
|
EXPECT_EQ(0u, NumBufferedBytes());
|
|
262
265
|
EXPECT_EQ(0u, sequencer_->NumBytesConsumed());
|
|
266
|
+
EXPECT_TRUE(sequencer_->IsAllDataAvailable());
|
|
263
267
|
}
|
|
264
268
|
|
|
265
269
|
TEST_F(QuicStreamSequencerTest, PartialFrameConsumed) {
|
|
@@ -560,11 +564,14 @@ TEST_F(QuicStreamSequencerTest, MarkConsumedError) {
|
|
|
560
564
|
|
|
561
565
|
// Now, attempt to mark consumed more data than was readable and expect the
|
|
562
566
|
// stream to be closed.
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
567
|
+
EXPECT_QUIC_BUG(
|
|
568
|
+
{
|
|
569
|
+
EXPECT_CALL(stream_, ResetWithError(QuicResetStreamError::FromInternal(
|
|
570
|
+
QUIC_ERROR_PROCESSING_STREAM)));
|
|
571
|
+
sequencer_->MarkConsumed(4);
|
|
572
|
+
},
|
|
573
|
+
"Invalid argument to MarkConsumed."
|
|
574
|
+
" expect to consume: 4, but not enough bytes available.");
|
|
568
575
|
}
|
|
569
576
|
|
|
570
577
|
TEST_F(QuicStreamSequencerTest, MarkConsumedWithMissingPacket) {
|