@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.
Files changed (230) hide show
  1. package/CMakeLists.txt +5 -2
  2. package/package.json +1 -1
  3. package/platform/net/quiche/common/platform/impl/quiche_flags_impl.h +1 -54
  4. package/platform/quiche_platform_impl/quic_flags_impl.h +1 -27
  5. package/platform/quiche_platform_impl/quiche_flag_utils_impl.h +1 -16
  6. package/platform/quiche_platform_impl/quiche_flags_impl.h +6 -1
  7. package/src/http3client.cc +14 -2
  8. package/src/http3client.h +10 -15
  9. package/src/webtransport.js +4 -1
  10. package/third_party/boringssl/src/.clang-format +11 -0
  11. package/third_party/boringssl/src/crypto/CMakeLists.txt +0 -1
  12. package/third_party/boringssl/src/crypto/asn1/a_strex.c +61 -95
  13. package/third_party/boringssl/src/crypto/asn1/asn1_par.c +31 -9
  14. package/third_party/boringssl/src/crypto/asn1/tasn_dec.c +33 -19
  15. package/third_party/boringssl/src/crypto/cipher_extra/asm/chacha20_poly1305_armv8.pl +8 -8
  16. package/third_party/boringssl/src/crypto/cipher_extra/derive_key.c +4 -4
  17. package/third_party/boringssl/src/crypto/cipher_extra/e_des.c +1 -0
  18. package/third_party/boringssl/src/crypto/cipher_extra/e_null.c +1 -0
  19. package/third_party/boringssl/src/crypto/cipher_extra/e_rc2.c +1 -0
  20. package/third_party/boringssl/src/crypto/cipher_extra/e_rc4.c +2 -0
  21. package/third_party/boringssl/src/crypto/fipsmodule/bcm.c +1 -0
  22. package/third_party/boringssl/src/crypto/fipsmodule/bn/asm/x86_64-mont5.pl +0 -197
  23. package/third_party/boringssl/src/crypto/fipsmodule/bn/bn_test.cc +0 -9
  24. package/third_party/boringssl/src/crypto/fipsmodule/bn/bn_tests.txt +68 -0
  25. package/third_party/boringssl/src/crypto/fipsmodule/bn/exponentiation.c +45 -40
  26. package/third_party/boringssl/src/crypto/fipsmodule/bn/internal.h +11 -8
  27. package/third_party/boringssl/src/crypto/fipsmodule/bn/rsaz_exp.c +15 -106
  28. package/third_party/boringssl/src/crypto/fipsmodule/bn/rsaz_exp.h +5 -1
  29. package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +12 -32
  30. package/third_party/boringssl/src/crypto/fipsmodule/cipher/internal.h +39 -0
  31. package/third_party/boringssl/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +7 -9
  32. package/third_party/boringssl/src/crypto/fipsmodule/ec/ec_key.c +1 -0
  33. package/third_party/boringssl/src/crypto/fipsmodule/ecdh/ecdh.c +2 -1
  34. package/third_party/boringssl/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -0
  35. package/third_party/boringssl/src/crypto/fipsmodule/hmac/hmac.c +1 -0
  36. package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator.c +1 -0
  37. package/third_party/boringssl/src/crypto/pkcs8/pkcs8_x509.c +4 -4
  38. package/third_party/boringssl/src/crypto/x509/algorithm.c +18 -1
  39. package/third_party/boringssl/src/crypto/x509/x_algor.c +1 -1
  40. package/third_party/boringssl/src/crypto/x509/x_crl.c +3 -3
  41. package/third_party/boringssl/src/crypto/x509/x_exten.c +1 -1
  42. package/third_party/boringssl/src/crypto/x509/x_name.c +1 -1
  43. package/third_party/boringssl/src/crypto/x509/x_pubkey.c +1 -1
  44. package/third_party/boringssl/src/crypto/x509/x_req.c +2 -2
  45. package/third_party/boringssl/src/crypto/x509/x_sig.c +1 -1
  46. package/third_party/boringssl/src/crypto/x509/x_spki.c +2 -2
  47. package/third_party/boringssl/src/crypto/x509/x_val.c +1 -1
  48. package/third_party/boringssl/src/crypto/x509/x_x509.c +2 -2
  49. package/third_party/boringssl/src/crypto/x509v3/v3_akey.c +1 -1
  50. package/third_party/boringssl/src/crypto/x509v3/v3_akeya.c +1 -1
  51. package/third_party/boringssl/src/crypto/x509v3/v3_bcons.c +2 -2
  52. package/third_party/boringssl/src/crypto/x509v3/v3_cpols.c +6 -6
  53. package/third_party/boringssl/src/crypto/x509v3/v3_crld.c +6 -6
  54. package/third_party/boringssl/src/crypto/x509v3/v3_enum.c +1 -1
  55. package/third_party/boringssl/src/crypto/x509v3/v3_extku.c +2 -2
  56. package/third_party/boringssl/src/crypto/x509v3/v3_genn.c +3 -3
  57. package/third_party/boringssl/src/crypto/x509v3/v3_info.c +3 -3
  58. package/third_party/boringssl/src/crypto/x509v3/v3_int.c +3 -3
  59. package/third_party/boringssl/src/crypto/x509v3/v3_ncons.c +2 -2
  60. package/third_party/boringssl/src/crypto/x509v3/v3_ocsp.c +2 -2
  61. package/third_party/boringssl/src/crypto/x509v3/v3_pcons.c +1 -1
  62. package/third_party/boringssl/src/crypto/x509v3/v3_pmaps.c +2 -2
  63. package/third_party/boringssl/src/crypto/x509v3/v3_skey.c +1 -1
  64. package/third_party/boringssl/src/decrepit/blowfish/blowfish.c +1 -0
  65. package/third_party/boringssl/src/decrepit/cast/cast.c +1 -0
  66. package/third_party/boringssl/src/decrepit/cfb/cfb.c +1 -0
  67. package/third_party/boringssl/src/decrepit/xts/xts.c +2 -1
  68. package/third_party/boringssl/src/fuzz/CMakeLists.txt +1 -0
  69. package/third_party/boringssl/src/fuzz/der_roundtrip.cc +57 -0
  70. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/0461791e54b4840c109637952eab43d9b938cab8 +0 -0
  71. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/06e57a7b98a403a00822739739924b97ae6c74e9 +0 -0
  72. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/078c3c1199930781466871c8dda69bec379286a4 +0 -0
  73. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/082a991742f652549e4b207100ee521f474e0a99 +1 -0
  74. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/091e3389548686c5038d04e3d76b9c4d30502074 +0 -0
  75. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/13e484c406efe97dc9d91f8b80a27b0e597c34da +1 -0
  76. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/153d254254345b61e20e7b37637dd6f6fd71ba01 +0 -0
  77. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/163605136e22f5b5302fe60d1f17837bee6b6b2b +1 -0
  78. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/1a96ec99b487b93052cd860c447e6d126dcc36d4 +1 -0
  79. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/1cc9ad96fcee279e8589b7071c7a0ccd111098f2 +1 -0
  80. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/229b8e1825512868e0e11a199ed71231dd41bb4f +1 -0
  81. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/236d820eadf7f84d70de7bb8be5f1c57a4005de2 +0 -0
  82. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/24fd9742dbdee3167509db4af245ad6f8c4c1e99 +0 -0
  83. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/2896f8deb3c4e8bdfeab743b22c64c92316880f7 +0 -0
  84. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/29b6252fe9c4d1186394b1664c421cca795b61a5 +0 -0
  85. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/2b4955132275314d1d377f37f93d8c1879a3519a +0 -0
  86. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/2e7112ac524a7a663632397cbb41f7dfd22e92c6 +0 -0
  87. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/396d197005432accf99bf0f483286e459eb24063 +1 -0
  88. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/3c75fe79266cf639f2180722a3f03f8fc3e25685 +1 -0
  89. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/3fbb104fb0eb6cae4af34d8a516998336b3a6778 +1 -0
  90. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/422fa995b3fdfed572b68b292062c330d6d05272 +0 -0
  91. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/428b48fc494cee828f0c27f77aef477cb2e1fd80 +0 -0
  92. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4bd69e424b6fa38f9e63e58b8d0e95ac2d38d598 +1 -0
  93. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4be7e1f134e1c55aeadeead515200f6f1e6254ba +0 -0
  94. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/4de268400e174db2dc306f45c833cf968a6c6546 +0 -0
  95. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/52d2c7efcd7da0eb7463829e05a598e36729bfae +1 -0
  96. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/53cf415eb9de49fb5a0cb46e745e413a99aa0779 +0 -0
  97. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/53ea84c48a5792281a46eb5a9c896d54ea3f1838 +1 -0
  98. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5ba93c9db0cff93f52b521d7420e43f6eda2784f +0 -0
  99. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5bab61eb53176449e25c2c82f172b82cb13ffb9d +1 -0
  100. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/5e5361730362736fe3e2804d8566e3c91454509b +0 -0
  101. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6654fedb1fc4b07095695b062b5af4c2f12d59ae +0 -0
  102. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6cad8b2a41194372ec897bece6512fe8331e274d +1 -0
  103. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/6f40330ec07e8e22f113f982b297ff7f86b8e485 +0 -0
  104. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/738f291e53e97c08dae378c71ef70a60e31ae900 +0 -0
  105. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7396791821e64fc9340249a4bcbd2198e9f237db +0 -0
  106. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7653595e28f23e62ea6707c99ca08c780a69335f +0 -0
  107. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/77de68daecd823babbb58edb1c8e14d7106e83bb +1 -0
  108. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/7cb5c71603a787032973d6ddc9c2c34638005784 +0 -0
  109. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/80a1e1ae75c1e5ef7bbde5f5877e3e5b26b3cf58 +0 -0
  110. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/872ba8af52a8c1380c388bab0e20bec2e729db80 +1 -0
  111. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/8855f2d904cf1bbaffc54e68d98890fdc9ec14cc +0 -0
  112. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/8a22f56ee86cc2d67e9610a6b0ed59f21008a341 +0 -0
  113. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/935a69e9f3bfa1dd3bf058fa3e1b953e82195de6 +1 -0
  114. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/951ccb49640c8f9e81fb4e0d82730321f4e15bb3 +0 -0
  115. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/9af1f3ed10c7a54f6b57c344015141cc082db23b +0 -0
  116. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a0b7dd1684089c63a4aac2e4a832544df4d639d6 +0 -0
  117. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a22d0d3565a509a4bfedce078090d8c6a908d950 +0 -0
  118. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a22f1185582f66227118c8e9002a5c29728f0650 +0 -0
  119. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a457945cb86ec812235f407ed70fe72fbaf694a1 +1 -0
  120. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a4ee44c4e8728d4924642ef8765063262e8c4601 +0 -0
  121. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a4fc609a6546fc0061f499f0faed9054fd388c9a +1 -0
  122. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a7c13e6fe60eee08b9aac00a095a9301ea1a9824 +1 -0
  123. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/a98e22a5a8c2f5dda365d55e76536931010e1560 +0 -0
  124. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/aca6ed86348b1176bfbe4ebf32b2d48a0aa42f9f +0 -0
  125. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/aeefb82d7f5cc69168aade3b196a84d0f5c14bf2 +0 -0
  126. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b37e0f6fa42840c773747c4cb608c278ab65021d +1 -0
  127. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b5d4e67f0ec5b1a90100d8ad424d77aea8e16353 +0 -0
  128. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b65ea16ba4dae8599ebbad7c4cb9fcd505edf485 +0 -0
  129. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/b95311782071c4d9182c0effe32487fc5cdbd33d +1 -0
  130. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bbcaf4d15f92bfc6d624eee967fade1a74329f30 +0 -0
  131. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bc26b8c794ac0adf948cbca02e88b3901824ef17 +1 -0
  132. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bc7b23c2c68e4ad33ecea493ff6e60d423371cd0 +1 -0
  133. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/bd8daf3e78d8ba3a25838053b6993edc7a21c30e +0 -0
  134. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/c4d94647e646f02da1736b3179804ad6083acde9 +0 -0
  135. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/c869b259f9f81bec8ed24a9bc2cef35a513fb9fc +0 -0
  136. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/ceee46f04a09ef5d3342ef25d9f483e861727575 +1 -0
  137. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d05c069216b54f35bc7e3ee08371baee243c089a +0 -0
  138. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d18c30ba21e0d085dd983ad528f2c9001285d3d2 +1 -0
  139. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d2c00146b2f2bcb4c6cecb731d2062273523d8c8 +1 -0
  140. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/d9bc7157a485958a5fce35ce777f551fe3f7d94c +0 -0
  141. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/defce76f0d3c3e057bb623986bacee7bbd07d1a1 +1 -0
  142. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/df9b696736847e43672b7a99ca05655af8a81135 +0 -0
  143. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/e5b420f71cf412bd9fdebdd46245fabd1f3462e5 +1 -0
  144. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/e7979b0e6e3e9cd64ceab99778c55205d6f92a73 +0 -0
  145. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/ee629f1935abc05fdc32ba314ec1f80f4bff2a17 +0 -0
  146. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/f944dcd635f9801f7ac90a407fbc479964dec024 +0 -0
  147. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/fadcde7d914246ca04bd56e68fd4045b1cf1c5ef +0 -0
  148. package/third_party/boringssl/src/fuzz/der_roundtrip_corpus/fd8be6506a9995f626eef831b9c981a80b0e3640 +0 -0
  149. package/third_party/boringssl/src/include/openssl/cipher.h +21 -48
  150. package/third_party/boringssl/src/include/openssl/ssl.h +38 -0
  151. package/third_party/boringssl/src/ssl/handshake_client.cc +8 -2
  152. package/third_party/boringssl/src/ssl/internal.h +16 -3
  153. package/third_party/boringssl/src/ssl/s3_both.cc +23 -1
  154. package/third_party/boringssl/src/ssl/ssl_lib.cc +94 -1
  155. package/third_party/boringssl/src/ssl/test/runner/runner.go +192 -0
  156. package/third_party/boringssl/src/ssl/test/test_config.cc +6 -0
  157. package/third_party/boringssl/src/ssl/test/test_config.h +1 -0
  158. package/third_party/boringssl/src/ssl/tls13_client.cc +7 -3
  159. package/third_party/boringssl/src/ssl/tls13_server.cc +2 -1
  160. package/third_party/boringssl/src/util/convert_comments.go +23 -0
  161. package/third_party/boringssl/src/util/fipstools/acvp/acvptool/acvp/acvp.go +1 -1
  162. package/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/modulewrapper.cc +32 -21
  163. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc +1 -1
  164. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.h +1 -1
  165. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h +3 -2
  166. package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.cc +2 -2
  167. package/third_party/quiche/quiche/http2/adapter/http2_protocol.h +5 -1
  168. package/third_party/quiche/quiche/http2/adapter/http2_util.cc +2 -0
  169. package/third_party/quiche/quiche/http2/adapter/http2_visitor_interface.h +2 -0
  170. package/third_party/quiche/quiche/http2/adapter/nghttp2_adapter_test.cc +119 -0
  171. package/third_party/quiche/quiche/http2/adapter/oghttp2_adapter_test.cc +130 -0
  172. package/third_party/quiche/quiche/http2/adapter/oghttp2_session.cc +23 -12
  173. package/third_party/quiche/quiche/http2/decoder/decode_buffer_test.cc +6 -11
  174. package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.cc +0 -5
  175. package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.h +0 -2
  176. package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender.cc +0 -10
  177. package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender.h +0 -1
  178. package/third_party/quiche/quiche/quic/core/congestion_control/send_algorithm_interface.h +0 -6
  179. package/third_party/quiche/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.cc +0 -2
  180. package/third_party/quiche/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.h +0 -1
  181. package/third_party/quiche/quiche/quic/core/crypto/transport_parameters_test.cc +1 -3
  182. package/third_party/quiche/quiche/quic/core/http/end_to_end_test.cc +19 -9
  183. package/third_party/quiche/quiche/quic/core/http/http_decoder_test.cc +6 -3
  184. package/third_party/quiche/quiche/quic/core/http/quic_server_session_base.cc +4 -16
  185. package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.h +6 -6
  186. package/third_party/quiche/quiche/quic/core/http/quic_spdy_session_test.cc +25 -15
  187. package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream_test.cc +6 -5
  188. package/third_party/quiche/quiche/quic/core/http/web_transport_http3.cc +1 -2
  189. package/third_party/quiche/quiche/quic/core/quic_bandwidth_test.cc +12 -12
  190. package/third_party/quiche/quiche/quic/core/quic_connection.cc +5 -95
  191. package/third_party/quiche/quiche/quic/core/quic_connection.h +0 -35
  192. package/third_party/quiche/quiche/quic/core/quic_connection_test.cc +80 -196
  193. package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.cc +1 -1
  194. package/third_party/quiche/quiche/quic/core/quic_crypto_stream.cc +29 -5
  195. package/third_party/quiche/quiche/quic/core/quic_crypto_stream_test.cc +46 -0
  196. package/third_party/quiche/quiche/quic/core/quic_dispatcher_test.cc +17 -14
  197. package/third_party/quiche/quiche/quic/core/quic_flags_list.h +54 -54
  198. package/third_party/quiche/quiche/quic/core/quic_flow_controller_test.cc +8 -5
  199. package/third_party/quiche/quiche/quic/core/quic_framer_test.cc +8 -5
  200. package/third_party/quiche/quiche/quic/core/quic_idle_network_detector.cc +1 -0
  201. package/third_party/quiche/quiche/quic/core/quic_idle_network_detector_test.cc +29 -0
  202. package/third_party/quiche/quiche/quic/core/quic_packet_creator.cc +1 -5
  203. package/third_party/quiche/quiche/quic/core/quic_packet_creator_test.cc +18 -11
  204. package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager.cc +9 -28
  205. package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager.h +0 -13
  206. package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager_test.cc +1 -49
  207. package/third_party/quiche/quiche/quic/core/quic_session.cc +0 -8
  208. package/third_party/quiche/quiche/quic/core/quic_session.h +0 -1
  209. package/third_party/quiche/quiche/quic/core/quic_stream.cc +1 -1
  210. package/third_party/quiche/quiche/quic/core/quic_stream_sequencer.cc +5 -0
  211. package/third_party/quiche/quiche/quic/core/quic_stream_sequencer.h +4 -0
  212. package/third_party/quiche/quiche/quic/core/quic_stream_sequencer_test.cc +12 -5
  213. package/third_party/quiche/quiche/quic/core/quic_stream_test.cc +27 -12
  214. package/third_party/quiche/quiche/quic/core/quic_types.cc +0 -1
  215. package/third_party/quiche/quiche/quic/core/quic_types.h +0 -3
  216. package/third_party/quiche/quiche/quic/core/quic_utils.cc +0 -3
  217. package/third_party/quiche/quiche/quic/core/quic_utils_test.cc +0 -2
  218. package/third_party/quiche/quiche/quic/core/tls_client_handshaker_test.cc +16 -12
  219. package/third_party/quiche/quiche/quic/core/tls_handshaker.cc +18 -3
  220. package/third_party/quiche/quiche/quic/qbone/platform/internet_checksum.cc +7 -2
  221. package/third_party/quiche/quiche/quic/test_tools/crypto_test_utils.cc +20 -12
  222. package/third_party/quiche/quiche/quic/test_tools/crypto_test_utils.h +10 -5
  223. package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.h +0 -2
  224. package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint.cc +0 -8
  225. package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint.h +0 -1
  226. package/third_party/quiche/quiche/quic/tools/quic_simple_server_stream_test.cc +2 -1
  227. package/platform/net/quiche/common/platform/impl/quic_flags_list_add.h +0 -379
  228. package/platform/net/quiche/common/platform/impl/quiche_flags_impl.cc +0 -21
  229. package/third_party/boringssl/src/crypto/asn1/charmap.h +0 -15
  230. package/third_party/boringssl/src/crypto/asn1/charmap.pl +0 -135
@@ -5883,6 +5883,35 @@ TEST(NgHttp2AdapterTest, AutomaticPingAcksDisabled) {
5883
5883
  EXPECT_THAT(visitor.data(), EqualsFrames({SpdyFrameType::SETTINGS}));
5884
5884
  }
5885
5885
 
5886
+ TEST(NgHttp2AdapterTest, InvalidMaxFrameSize) {
5887
+ DataSavingVisitor visitor;
5888
+ auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor);
5889
+
5890
+ const std::string frames =
5891
+ TestFrameSequence().ClientPreface({{MAX_FRAME_SIZE, 3}}).Serialize();
5892
+ testing::InSequence s;
5893
+
5894
+ // Client preface
5895
+ EXPECT_CALL(visitor, OnFrameHeader(0, 6, SETTINGS, 0));
5896
+ EXPECT_CALL(
5897
+ visitor,
5898
+ OnInvalidFrame(0, Http2VisitorInterface::InvalidFrameError::kProtocol));
5899
+
5900
+ const int64_t read_result = adapter->ProcessBytes(frames);
5901
+ EXPECT_EQ(static_cast<size_t>(read_result), frames.size());
5902
+
5903
+ EXPECT_TRUE(adapter->want_write());
5904
+
5905
+ EXPECT_CALL(visitor, OnBeforeFrameSent(GOAWAY, 0, _, 0x0));
5906
+ EXPECT_CALL(visitor,
5907
+ OnFrameSent(GOAWAY, 0, _, 0x0,
5908
+ static_cast<int>(Http2ErrorCode::PROTOCOL_ERROR)));
5909
+
5910
+ int send_result = adapter->Send();
5911
+ EXPECT_EQ(0, send_result);
5912
+ EXPECT_THAT(visitor.data(), EqualsFrames({SpdyFrameType::GOAWAY}));
5913
+ }
5914
+
5886
5915
  TEST(NgHttp2AdapterTest, ServerForbidsProtocolPseudoheaderBeforeAck) {
5887
5916
  DataSavingVisitor visitor;
5888
5917
  auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor);
@@ -6793,6 +6822,96 @@ TEST(NgHttp2AdapterTest, ServerHandlesConnectionSpecificHeaders) {
6793
6822
  SpdyFrameType::RST_STREAM, SpdyFrameType::RST_STREAM}));
6794
6823
  }
6795
6824
 
6825
+ TEST(NgHttp2AdapterTest, NegativeFlowControlStreamResumption) {
6826
+ DataSavingVisitor visitor;
6827
+ auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor);
6828
+
6829
+ const std::string frames =
6830
+ TestFrameSequence()
6831
+ .ClientPreface({{INITIAL_WINDOW_SIZE, 128u * 1024u}})
6832
+ .WindowUpdate(0, 1 << 20)
6833
+ .Headers(1,
6834
+ {{":method", "GET"},
6835
+ {":scheme", "https"},
6836
+ {":authority", "example.com"},
6837
+ {":path", "/this/is/request/one"}},
6838
+ /*fin=*/true)
6839
+ .Serialize();
6840
+ testing::InSequence s;
6841
+
6842
+ // Client preface (empty SETTINGS)
6843
+ EXPECT_CALL(visitor, OnFrameHeader(0, 6, SETTINGS, 0));
6844
+ EXPECT_CALL(visitor, OnSettingsStart());
6845
+ EXPECT_CALL(visitor,
6846
+ OnSetting(Http2Setting{Http2KnownSettingsId::INITIAL_WINDOW_SIZE,
6847
+ 128u * 1024u}));
6848
+ EXPECT_CALL(visitor, OnSettingsEnd());
6849
+
6850
+ EXPECT_CALL(visitor, OnFrameHeader(0, 4, WINDOW_UPDATE, 0));
6851
+ EXPECT_CALL(visitor, OnWindowUpdate(0, 1 << 20));
6852
+
6853
+ // Stream 1
6854
+ EXPECT_CALL(visitor, OnFrameHeader(1, _, HEADERS, 0x5));
6855
+ EXPECT_CALL(visitor, OnBeginHeadersForStream(1));
6856
+ EXPECT_CALL(visitor, OnHeaderForStream(1, _, _)).Times(4);
6857
+ EXPECT_CALL(visitor, OnEndHeadersForStream(1));
6858
+ EXPECT_CALL(visitor, OnEndStream(1));
6859
+
6860
+ const int64_t read_result = adapter->ProcessBytes(frames);
6861
+ EXPECT_EQ(static_cast<size_t>(read_result), frames.size());
6862
+
6863
+ // Submit a response for the stream.
6864
+ auto body = absl::make_unique<TestDataFrameSource>(visitor, true);
6865
+ TestDataFrameSource& body_ref = *body;
6866
+ body_ref.AppendPayload(std::string(70000, 'a'));
6867
+ int submit_result = adapter->SubmitResponse(
6868
+ 1, ToHeaders({{":status", "200"}}), std::move(body));
6869
+ ASSERT_EQ(0, submit_result);
6870
+
6871
+ EXPECT_CALL(visitor, OnBeforeFrameSent(SETTINGS, 0, _, 0x1));
6872
+ EXPECT_CALL(visitor, OnFrameSent(SETTINGS, 0, _, 0x1, 0));
6873
+ EXPECT_CALL(visitor, OnBeforeFrameSent(HEADERS, 1, _, 0x4));
6874
+ EXPECT_CALL(visitor, OnFrameSent(HEADERS, 1, _, 0x4, 0));
6875
+ EXPECT_CALL(visitor, OnFrameSent(DATA, 1, _, 0x0, 0)).Times(5);
6876
+
6877
+ adapter->Send();
6878
+ EXPECT_FALSE(adapter->want_write());
6879
+
6880
+ EXPECT_CALL(visitor, OnFrameHeader(0, 6, SETTINGS, 0));
6881
+ EXPECT_CALL(visitor, OnSettingsStart());
6882
+ EXPECT_CALL(visitor,
6883
+ OnSetting(Http2Setting{Http2KnownSettingsId::INITIAL_WINDOW_SIZE,
6884
+ 64u * 1024u}));
6885
+ EXPECT_CALL(visitor, OnSettingsEnd());
6886
+
6887
+ // Processing these SETTINGS will cause stream 1's send window to become
6888
+ // negative.
6889
+ adapter->ProcessBytes(TestFrameSequence()
6890
+ .Settings({{INITIAL_WINDOW_SIZE, 64u * 1024u}})
6891
+ .Serialize());
6892
+ EXPECT_TRUE(adapter->want_write());
6893
+ // nghttp2 does not expose the fact that the send window size is negative.
6894
+ EXPECT_EQ(adapter->GetStreamSendWindowSize(1), 0);
6895
+
6896
+ body_ref.AppendPayload("Stream should be resumed.");
6897
+ adapter->ResumeStream(1);
6898
+
6899
+ EXPECT_CALL(visitor, OnBeforeFrameSent(SETTINGS, 0, _, 0x1));
6900
+ EXPECT_CALL(visitor, OnFrameSent(SETTINGS, 0, _, 0x1, 0));
6901
+ adapter->Send();
6902
+ EXPECT_FALSE(adapter->want_write());
6903
+
6904
+ // Upon receiving the WINDOW_UPDATE, stream 1 should be ready to write.
6905
+ EXPECT_CALL(visitor, OnFrameHeader(1, 4, WINDOW_UPDATE, 0));
6906
+ EXPECT_CALL(visitor, OnWindowUpdate(1, 10000));
6907
+ adapter->ProcessBytes(TestFrameSequence().WindowUpdate(1, 10000).Serialize());
6908
+ EXPECT_TRUE(adapter->want_write());
6909
+ EXPECT_GT(adapter->GetStreamSendWindowSize(1), 0);
6910
+
6911
+ EXPECT_CALL(visitor, OnFrameSent(DATA, 1, _, 0x0, 0));
6912
+ adapter->Send();
6913
+ }
6914
+
6796
6915
  } // namespace
6797
6916
  } // namespace test
6798
6917
  } // namespace adapter
@@ -347,6 +347,42 @@ TEST(OgHttp2AdapterTest, AutomaticPingAcksDisabled) {
347
347
  EqualsFrames({SpdyFrameType::SETTINGS, SpdyFrameType::SETTINGS}));
348
348
  }
349
349
 
350
+ TEST(OgHttp2AdapterTest, InvalidMaxFrameSize) {
351
+ DataSavingVisitor visitor;
352
+ OgHttp2Adapter::Options options;
353
+ options.perspective = Perspective::kServer;
354
+ auto adapter = OgHttp2Adapter::Create(visitor, options);
355
+
356
+ const std::string frames =
357
+ TestFrameSequence().ClientPreface({{MAX_FRAME_SIZE, 3}}).Serialize();
358
+ testing::InSequence s;
359
+
360
+ // Client preface
361
+ EXPECT_CALL(visitor, OnFrameHeader(0, 6, SETTINGS, 0));
362
+ EXPECT_CALL(visitor, OnSettingsStart());
363
+ EXPECT_CALL(
364
+ visitor,
365
+ OnInvalidFrame(0, Http2VisitorInterface::InvalidFrameError::kProtocol));
366
+ EXPECT_CALL(visitor, OnConnectionError(ConnectionError::kInvalidSetting));
367
+
368
+ const int64_t read_result = adapter->ProcessBytes(frames);
369
+ EXPECT_EQ(static_cast<size_t>(read_result), frames.size());
370
+
371
+ EXPECT_TRUE(adapter->want_write());
372
+
373
+ EXPECT_CALL(visitor, OnBeforeFrameSent(SETTINGS, 0, _, 0x0));
374
+ EXPECT_CALL(visitor, OnFrameSent(SETTINGS, 0, _, 0x0, 0));
375
+ EXPECT_CALL(visitor, OnBeforeFrameSent(GOAWAY, 0, _, 0x0));
376
+ EXPECT_CALL(visitor,
377
+ OnFrameSent(GOAWAY, 0, _, 0x0,
378
+ static_cast<int>(Http2ErrorCode::PROTOCOL_ERROR)));
379
+
380
+ int send_result = adapter->Send();
381
+ EXPECT_EQ(0, send_result);
382
+ EXPECT_THAT(visitor.data(),
383
+ EqualsFrames({SpdyFrameType::SETTINGS, SpdyFrameType::GOAWAY}));
384
+ }
385
+
350
386
  TEST(OgHttp2AdapterTest, ClientHandles100Headers) {
351
387
  DataSavingVisitor visitor;
352
388
  OgHttp2Adapter::Options options;
@@ -7556,6 +7592,100 @@ TEST(OgHttp2AdapterTest, NoopHeaderValidatorTest) {
7556
7592
  EXPECT_EQ(frames.size(), static_cast<size_t>(result));
7557
7593
  }
7558
7594
 
7595
+ TEST(OgHttp2AdapterTest, NegativeFlowControlStreamResumption) {
7596
+ DataSavingVisitor visitor;
7597
+ OgHttp2Adapter::Options options;
7598
+ options.perspective = Perspective::kServer;
7599
+ auto adapter = OgHttp2Adapter::Create(visitor, options);
7600
+
7601
+ const std::string frames =
7602
+ TestFrameSequence()
7603
+ .ClientPreface({{INITIAL_WINDOW_SIZE, 128u * 1024u}})
7604
+ .WindowUpdate(0, 1 << 20)
7605
+ .Headers(1,
7606
+ {{":method", "GET"},
7607
+ {":scheme", "https"},
7608
+ {":authority", "example.com"},
7609
+ {":path", "/this/is/request/one"}},
7610
+ /*fin=*/true)
7611
+ .Serialize();
7612
+ testing::InSequence s;
7613
+
7614
+ // Client preface (empty SETTINGS)
7615
+ EXPECT_CALL(visitor, OnFrameHeader(0, 6, SETTINGS, 0));
7616
+ EXPECT_CALL(visitor, OnSettingsStart());
7617
+ EXPECT_CALL(visitor,
7618
+ OnSetting(Http2Setting{Http2KnownSettingsId::INITIAL_WINDOW_SIZE,
7619
+ 128u * 1024u}));
7620
+ EXPECT_CALL(visitor, OnSettingsEnd());
7621
+
7622
+ EXPECT_CALL(visitor, OnFrameHeader(0, 4, WINDOW_UPDATE, 0));
7623
+ EXPECT_CALL(visitor, OnWindowUpdate(0, 1 << 20));
7624
+
7625
+ // Stream 1
7626
+ EXPECT_CALL(visitor, OnFrameHeader(1, _, HEADERS, 0x5));
7627
+ EXPECT_CALL(visitor, OnBeginHeadersForStream(1));
7628
+ EXPECT_CALL(visitor, OnHeaderForStream(1, _, _)).Times(4);
7629
+ EXPECT_CALL(visitor, OnEndHeadersForStream(1));
7630
+ EXPECT_CALL(visitor, OnEndStream(1));
7631
+
7632
+ const int64_t read_result = adapter->ProcessBytes(frames);
7633
+ EXPECT_EQ(static_cast<size_t>(read_result), frames.size());
7634
+
7635
+ // Submit a response for the stream.
7636
+ auto body = absl::make_unique<TestDataFrameSource>(visitor, true);
7637
+ TestDataFrameSource& body_ref = *body;
7638
+ body_ref.AppendPayload(std::string(70000, 'a'));
7639
+ int submit_result = adapter->SubmitResponse(
7640
+ 1, ToHeaders({{":status", "200"}}), std::move(body));
7641
+ ASSERT_EQ(0, submit_result);
7642
+
7643
+ EXPECT_CALL(visitor, OnBeforeFrameSent(SETTINGS, 0, _, 0x0));
7644
+ EXPECT_CALL(visitor, OnFrameSent(SETTINGS, 0, _, 0x0, 0));
7645
+
7646
+ EXPECT_CALL(visitor, OnBeforeFrameSent(SETTINGS, 0, _, 0x1));
7647
+ EXPECT_CALL(visitor, OnFrameSent(SETTINGS, 0, _, 0x1, 0));
7648
+ EXPECT_CALL(visitor, OnBeforeFrameSent(HEADERS, 1, _, 0x4));
7649
+ EXPECT_CALL(visitor, OnFrameSent(HEADERS, 1, _, 0x4, 0));
7650
+ EXPECT_CALL(visitor, OnFrameSent(DATA, 1, _, 0x0, 0)).Times(5);
7651
+
7652
+ adapter->Send();
7653
+ EXPECT_FALSE(adapter->want_write());
7654
+
7655
+ EXPECT_CALL(visitor, OnFrameHeader(0, 6, SETTINGS, 0));
7656
+ EXPECT_CALL(visitor, OnSettingsStart());
7657
+ EXPECT_CALL(visitor,
7658
+ OnSetting(Http2Setting{Http2KnownSettingsId::INITIAL_WINDOW_SIZE,
7659
+ 64u * 1024u}));
7660
+ EXPECT_CALL(visitor, OnSettingsEnd());
7661
+
7662
+ // Processing these SETTINGS will cause stream 1's send window to become
7663
+ // negative.
7664
+ adapter->ProcessBytes(TestFrameSequence()
7665
+ .Settings({{INITIAL_WINDOW_SIZE, 64u * 1024u}})
7666
+ .Serialize());
7667
+ EXPECT_TRUE(adapter->want_write());
7668
+ EXPECT_LT(adapter->GetStreamSendWindowSize(1), 0);
7669
+
7670
+ body_ref.AppendPayload("Stream should be resumed.");
7671
+ adapter->ResumeStream(1);
7672
+
7673
+ EXPECT_CALL(visitor, OnBeforeFrameSent(SETTINGS, 0, _, 0x1));
7674
+ EXPECT_CALL(visitor, OnFrameSent(SETTINGS, 0, _, 0x1, 0));
7675
+ adapter->Send();
7676
+ EXPECT_FALSE(adapter->want_write());
7677
+
7678
+ // Upon receiving the WINDOW_UPDATE, stream 1 should be ready to write.
7679
+ EXPECT_CALL(visitor, OnFrameHeader(1, 4, WINDOW_UPDATE, 0));
7680
+ EXPECT_CALL(visitor, OnWindowUpdate(1, 10000));
7681
+ adapter->ProcessBytes(TestFrameSequence().WindowUpdate(1, 10000).Serialize());
7682
+ EXPECT_TRUE(adapter->want_write());
7683
+ EXPECT_GT(adapter->GetStreamSendWindowSize(1), 0);
7684
+
7685
+ EXPECT_CALL(visitor, OnFrameSent(DATA, 1, _, 0x0, 0));
7686
+ adapter->Send();
7687
+ }
7688
+
7559
7689
  } // namespace
7560
7690
  } // namespace test
7561
7691
  } // namespace adapter
@@ -1218,16 +1218,6 @@ void OgHttp2Session::OnSettings() {
1218
1218
 
1219
1219
  void OgHttp2Session::OnSetting(spdy::SpdySettingsId id, uint32_t value) {
1220
1220
  switch (id) {
1221
- case MAX_FRAME_SIZE:
1222
- max_frame_payload_ = value;
1223
- break;
1224
- case MAX_CONCURRENT_STREAMS:
1225
- max_outbound_concurrent_streams_ = value;
1226
- if (!IsServerSession()) {
1227
- // We may now be able to start pending streams.
1228
- StartPendingStreams();
1229
- }
1230
- break;
1231
1221
  case HEADER_TABLE_SIZE:
1232
1222
  value = std::min(value, HpackCapacityBound(options_));
1233
1223
  if (value < framer_.GetHpackEncoder()->CurrentHeaderTableSizeSetting()) {
@@ -1243,6 +1233,13 @@ void OgHttp2Session::OnSetting(spdy::SpdySettingsId id, uint32_t value) {
1243
1233
  encoder_header_table_capacity_when_acking_ = value;
1244
1234
  }
1245
1235
  break;
1236
+ case MAX_CONCURRENT_STREAMS:
1237
+ max_outbound_concurrent_streams_ = value;
1238
+ if (!IsServerSession()) {
1239
+ // We may now be able to start pending streams.
1240
+ StartPendingStreams();
1241
+ }
1242
+ break;
1246
1243
  case INITIAL_WINDOW_SIZE:
1247
1244
  if (value > spdy::kSpdyMaximumWindowSize) {
1248
1245
  visitor_.OnInvalidFrame(
@@ -1256,6 +1253,19 @@ void OgHttp2Session::OnSetting(spdy::SpdySettingsId id, uint32_t value) {
1256
1253
  UpdateStreamSendWindowSizes(value);
1257
1254
  }
1258
1255
  break;
1256
+ case MAX_FRAME_SIZE:
1257
+ if (value < kDefaultFramePayloadSizeLimit ||
1258
+ value > kMaximumFramePayloadSizeLimit) {
1259
+ visitor_.OnInvalidFrame(
1260
+ 0, Http2VisitorInterface::InvalidFrameError::kProtocol);
1261
+ // The specification says this is a connection-level protocol error.
1262
+ LatchErrorAndNotify(
1263
+ Http2ErrorCode::PROTOCOL_ERROR,
1264
+ Http2VisitorInterface::ConnectionError::kInvalidSetting);
1265
+ return;
1266
+ }
1267
+ max_frame_payload_ = value;
1268
+ break;
1259
1269
  default:
1260
1270
  // TODO(bnc): See if C++17 inline constants are allowed in QUICHE.
1261
1271
  if (id == kMetadataExtensionId) {
@@ -1416,12 +1426,13 @@ void OgHttp2Session::OnWindowUpdate(spdy::SpdyStreamId stream_id,
1416
1426
  if (streams_reset_.contains(stream_id)) {
1417
1427
  return;
1418
1428
  }
1419
- if (it->second.send_window == 0) {
1429
+ const bool was_blocked = (it->second.send_window <= 0);
1430
+ it->second.send_window += delta_window_size;
1431
+ if (was_blocked && it->second.send_window > 0) {
1420
1432
  // The stream was blocked on flow control.
1421
1433
  QUICHE_VLOG(1) << "Marking stream " << stream_id << " ready to write.";
1422
1434
  write_scheduler_.MarkStreamReady(stream_id, false);
1423
1435
  }
1424
- it->second.send_window += delta_window_size;
1425
1436
  }
1426
1437
  }
1427
1438
  visitor_.OnWindowUpdate(stream_id, delta_window_size);
@@ -131,14 +131,9 @@ TEST(DecodeBufferDeathTest, NonNullBufferRequired) {
131
131
  TEST(DecodeBufferDeathTest, ModestBufferSizeRequired) {
132
132
  EXPECT_QUICHE_DEBUG_DEATH(
133
133
  {
134
- // This depends on being able to allocate a fairly large array on the
135
- // stack. If that fails, we can instead do this:
136
- //
137
- // std::string data(DecodeBuffer::kMaxDecodeBufferLength + 1, ' ');
138
- // DecodeBuffer b(data.data(), data.size());
139
-
140
- const char data[DecodeBuffer::kMaxDecodeBufferLength + 1] = {};
141
- DecodeBuffer b(data, sizeof data);
134
+ constexpr size_t kLength = DecodeBuffer::kMaxDecodeBufferLength + 1;
135
+ auto data = std::make_unique<char[]>(kLength);
136
+ DecodeBuffer b(data.get(), kLength);
142
137
  },
143
138
  "Max.*Length");
144
139
  }
@@ -159,7 +154,7 @@ TEST(DecodeBufferDeathTest, LimitedAdvance) {
159
154
  DecodeBuffer b(data, 3);
160
155
  b.AdvanceCursor(4);
161
156
  },
162
- "4 vs. 3");
157
+ "Remaining");
163
158
  }
164
159
 
165
160
  // Make sure that DecodeBuffer detects decode beyond end, in debug mode.
@@ -168,7 +163,7 @@ TEST(DecodeBufferDeathTest, DecodeUInt8PastEnd) {
168
163
  DecodeBuffer b(data, sizeof data);
169
164
  EXPECT_EQ(2u, b.FullSize());
170
165
  EXPECT_EQ(0x1223, b.DecodeUInt16());
171
- EXPECT_QUICHE_DEBUG_DEATH({ b.DecodeUInt8(); }, "1 vs. 0");
166
+ EXPECT_QUICHE_DEBUG_DEATH({ b.DecodeUInt8(); }, "Remaining");
172
167
  }
173
168
 
174
169
  // Make sure that DecodeBuffer detects decode beyond end, in debug mode.
@@ -177,7 +172,7 @@ TEST(DecodeBufferDeathTest, DecodeUInt16OverEnd) {
177
172
  DecodeBuffer b(data, sizeof data);
178
173
  EXPECT_EQ(3u, b.FullSize());
179
174
  EXPECT_EQ(0x1223, b.DecodeUInt16());
180
- EXPECT_QUICHE_DEBUG_DEATH({ b.DecodeUInt16(); }, "2 vs. 1");
175
+ EXPECT_QUICHE_DEBUG_DEATH({ b.DecodeUInt16(); }, "Remaining");
181
176
  }
182
177
 
183
178
  // Make sure that DecodeBuffer doesn't agree with having two subsets.
@@ -505,11 +505,6 @@ void Bbr2Sender::OnExitQuiescence(QuicTime now) {
505
505
  }
506
506
  }
507
507
 
508
- bool Bbr2Sender::ShouldSendProbingPacket() const {
509
- // TODO(wub): Implement ShouldSendProbingPacket properly.
510
- return BBR2_MODE_DISPATCH(IsProbingForBandwidth());
511
- }
512
-
513
508
  std::string Bbr2Sender::GetDebugState() const {
514
509
  std::ostringstream stream;
515
510
  stream << ExportDebugState();
@@ -42,8 +42,6 @@ class QUIC_EXPORT_PRIVATE Bbr2Sender final : public SendAlgorithmInterface {
42
42
  return false;
43
43
  }
44
44
 
45
- bool ShouldSendProbingPacket() const override;
46
-
47
45
  void SetFromConfig(const QuicConfig& config,
48
46
  Perspective perspective) override;
49
47
 
@@ -204,16 +204,6 @@ bool BbrSender::InRecovery() const {
204
204
  return recovery_state_ != NOT_IN_RECOVERY;
205
205
  }
206
206
 
207
- bool BbrSender::ShouldSendProbingPacket() const {
208
- if (pacing_gain_ <= 1) {
209
- return false;
210
- }
211
-
212
- // TODO(b/77975811): If the pipe is highly under-utilized, consider not
213
- // sending a probing transmission, because the extra bandwidth is not needed.
214
- return true;
215
- }
216
-
217
207
  void BbrSender::SetFromConfig(const QuicConfig& config,
218
208
  Perspective perspective) {
219
209
  if (config.HasClientRequestedIndependentOption(k1RTT, perspective)) {
@@ -100,7 +100,6 @@ class QUIC_EXPORT_PRIVATE BbrSender : public SendAlgorithmInterface {
100
100
  // Start implementation of SendAlgorithmInterface.
101
101
  bool InSlowStart() const override;
102
102
  bool InRecovery() const override;
103
- bool ShouldSendProbingPacket() const override;
104
103
 
105
104
  void SetFromConfig(const QuicConfig& config,
106
105
  Perspective perspective) override;
@@ -129,12 +129,6 @@ class QUIC_EXPORT_PRIVATE SendAlgorithmInterface {
129
129
  // Whether the send algorithm is currently in recovery.
130
130
  virtual bool InRecovery() const = 0;
131
131
 
132
- // True when the congestion control is probing for more bandwidth and needs
133
- // enough data to not be app-limited to do so.
134
- // TODO(ianswett): In the future, this API may want to indicate the size of
135
- // the probing packet.
136
- virtual bool ShouldSendProbingPacket() const = 0;
137
-
138
132
  // Returns the size of the slow start congestion window in bytes,
139
133
  // aka ssthresh. Only defined for Cubic and Reno, other algorithms return 0.
140
134
  virtual QuicByteCount GetSlowStartThreshold() const = 0;
@@ -233,8 +233,6 @@ bool TcpCubicSenderBytes::InRecovery() const {
233
233
  largest_acked_packet_number_ <= largest_sent_at_last_cutback_;
234
234
  }
235
235
 
236
- bool TcpCubicSenderBytes::ShouldSendProbingPacket() const { return false; }
237
-
238
236
  void TcpCubicSenderBytes::OnRetransmissionTimeout(bool packets_retransmitted) {
239
237
  largest_sent_at_last_cutback_.Clear();
240
238
  if (!packets_retransmitted) {
@@ -69,7 +69,6 @@ class QUIC_EXPORT_PRIVATE TcpCubicSenderBytes : public SendAlgorithmInterface {
69
69
  CongestionControlType GetCongestionControlType() const override;
70
70
  bool InSlowStart() const override;
71
71
  bool InRecovery() const override;
72
- bool ShouldSendProbingPacket() const override;
73
72
  std::string GetDebugState() const override;
74
73
  void OnApplicationLimited(QuicByteCount bytes_in_flight) override;
75
74
  void PopulateConnectionStats(QuicConnectionStats* /*stats*/) const override {}
@@ -484,12 +484,10 @@ TEST_P(TransportParametersTest, NoClientParamsWithStatelessResetToken) {
484
484
  orig_params.max_udp_payload_size.set_value(kMaxPacketSizeForTest);
485
485
 
486
486
  std::vector<uint8_t> out;
487
- bool ok = true;
488
487
  EXPECT_QUIC_BUG(
489
- ok = SerializeTransportParameters(orig_params, &out),
488
+ EXPECT_FALSE(SerializeTransportParameters(orig_params, &out)),
490
489
  "Not serializing invalid transport parameters: Client cannot send "
491
490
  "stateless reset token");
492
- EXPECT_FALSE(ok);
493
491
  }
494
492
 
495
493
  TEST_P(TransportParametersTest, ParseClientParams) {
@@ -1508,7 +1508,8 @@ TEST_P(EndToEndTest, LargePostNoPacketLoss) {
1508
1508
  VerifyCleanConnection(true);
1509
1509
  }
1510
1510
 
1511
- TEST_P(EndToEndTest, LargePostNoPacketLoss1sRTT) {
1511
+ // Marked as slow since this adds a real-clock one second of delay.
1512
+ TEST_P(EndToEndTest, QUICHE_SLOW_TEST(LargePostNoPacketLoss1sRTT)) {
1512
1513
  ASSERT_TRUE(Initialize());
1513
1514
  SetPacketSendDelay(QuicTime::Delta::FromMilliseconds(1000));
1514
1515
 
@@ -1637,7 +1638,13 @@ TEST_P(EndToEndTest, LargePostNoPacketLossWithDelayAndReordering) {
1637
1638
  client_->SendCustomSynchronousRequest(headers, body));
1638
1639
  }
1639
1640
 
1640
- TEST_P(EndToEndTest, AddressToken) {
1641
+ // TODO(b/214587920): make this test not rely on timeouts.
1642
+ TEST_P(EndToEndTest, QUICHE_SLOW_TEST(AddressToken)) {
1643
+ client_config_.set_max_time_before_crypto_handshake(
1644
+ QuicTime::Delta::FromSeconds(3));
1645
+ client_config_.set_max_idle_time_before_crypto_handshake(
1646
+ QuicTime::Delta::FromSeconds(1));
1647
+
1641
1648
  client_extra_copts_.push_back(kTRTT);
1642
1649
  ASSERT_TRUE(Initialize());
1643
1650
  if (!version_.HasIetfQuicFrames()) {
@@ -1686,11 +1693,7 @@ TEST_P(EndToEndTest, AddressToken) {
1686
1693
  // QuicSentPacketManager::SetInitialRtt clamps the initial_rtt to between
1687
1694
  // [min_initial_rtt, max_initial_rtt].
1688
1695
  const QuicTime::Delta min_initial_rtt =
1689
- server_connection->sent_packet_manager().use_lower_min_irtt()
1690
- ? QuicTime::Delta::FromMicroseconds(
1691
- kMinTrustedInitialRoundTripTimeUs)
1692
- : QuicTime::Delta::FromMicroseconds(
1693
- kMinUntrustedInitialRoundTripTimeUs);
1696
+ QuicTime::Delta::FromMicroseconds(kMinTrustedInitialRoundTripTimeUs);
1694
1697
  const QuicTime::Delta max_initial_rtt =
1695
1698
  QuicTime::Delta::FromMicroseconds(kMaxInitialRoundTripTimeUs);
1696
1699
  const QuicTime::Delta expected_initial_rtt =
@@ -1753,7 +1756,13 @@ TEST_P(EndToEndTest, AddressToken) {
1753
1756
  }
1754
1757
 
1755
1758
  // Verify that client does not reuse a source address token.
1756
- TEST_P(EndToEndTest, AddressTokenNotReusedByClient) {
1759
+ // TODO(b/214587920): make this test not rely on timeouts.
1760
+ TEST_P(EndToEndTest, QUICHE_SLOW_TEST(AddressTokenNotReusedByClient)) {
1761
+ client_config_.set_max_time_before_crypto_handshake(
1762
+ QuicTime::Delta::FromSeconds(3));
1763
+ client_config_.set_max_idle_time_before_crypto_handshake(
1764
+ QuicTime::Delta::FromSeconds(1));
1765
+
1757
1766
  ASSERT_TRUE(Initialize());
1758
1767
  if (!version_.HasIetfQuicFrames()) {
1759
1768
  return;
@@ -4254,7 +4263,8 @@ TEST_P(EndToEndTest, BadPacketHeaderFlags) {
4254
4263
 
4255
4264
  // Send a packet from the client with bad encrypted data. The server should not
4256
4265
  // tear down the connection.
4257
- TEST_P(EndToEndTest, BadEncryptedData) {
4266
+ // Marked as slow since it calls absl::SleepFor().
4267
+ TEST_P(EndToEndTest, QUICHE_SLOW_TEST(BadEncryptedData)) {
4258
4268
  ASSERT_TRUE(Initialize());
4259
4269
 
4260
4270
  // Start the connection.
@@ -1066,9 +1066,12 @@ TEST(HttpDecoderTestNoFixture, WebTransportStreamError) {
1066
1066
  EXPECT_CALL(visitor, OnWebTransportStreamFrameType(_, _));
1067
1067
  decoder.ProcessInput(input.data(), input.size());
1068
1068
 
1069
- EXPECT_CALL(visitor, OnError(_));
1070
- EXPECT_QUIC_BUG(decoder.ProcessInput(input.data(), input.size()),
1071
- "HttpDecoder called after an indefinite-length frame");
1069
+ EXPECT_QUIC_BUG(
1070
+ {
1071
+ EXPECT_CALL(visitor, OnError(_));
1072
+ decoder.ProcessInput(input.data(), input.size());
1073
+ },
1074
+ "HttpDecoder called after an indefinite-length frame");
1072
1075
  }
1073
1076
 
1074
1077
  TEST_F(HttpDecoderTest, DecodeSettings) {
@@ -47,15 +47,6 @@ void QuicServerSessionBase::Initialize() {
47
47
  void QuicServerSessionBase::OnConfigNegotiated() {
48
48
  QuicSpdySession::OnConfigNegotiated();
49
49
 
50
- const bool use_lower_min_irtt =
51
- connection()->sent_packet_manager().use_lower_min_irtt();
52
-
53
- if (!use_lower_min_irtt) {
54
- if (!config()->HasReceivedConnectionOptions()) {
55
- return;
56
- }
57
- }
58
-
59
50
  const CachedNetworkParameters* cached_network_params =
60
51
  crypto_stream_->PreviousCachedNetworkParams();
61
52
 
@@ -65,7 +56,7 @@ void QuicServerSessionBase::OnConfigNegotiated() {
65
56
  if (version().UsesTls() && cached_network_params != nullptr) {
66
57
  if (cached_network_params->serving_region() == serving_region_) {
67
58
  QUIC_CODE_COUNT(quic_server_received_network_params_at_same_region);
68
- if ((!use_lower_min_irtt || config()->HasReceivedConnectionOptions()) &&
59
+ if (config()->HasReceivedConnectionOptions() &&
69
60
  ContainsQuicTag(config()->ReceivedConnectionOptions(), kTRTT)) {
70
61
  QUIC_DLOG(INFO)
71
62
  << "Server: Setting initial rtt to "
@@ -74,18 +65,15 @@ void QuicServerSessionBase::OnConfigNegotiated() {
74
65
  connection()->sent_packet_manager().SetInitialRtt(
75
66
  QuicTime::Delta::FromMilliseconds(
76
67
  cached_network_params->min_rtt_ms()),
77
- /*trusted=*/use_lower_min_irtt);
68
+ /*trusted=*/true);
78
69
  }
79
70
  } else {
80
71
  QUIC_CODE_COUNT(quic_server_received_network_params_at_different_region);
81
72
  }
82
73
  }
83
74
 
84
- if (use_lower_min_irtt) {
85
- QUIC_RELOADABLE_FLAG_COUNT_N(quic_use_lower_min_for_trusted_irtt, 1, 2);
86
- if (!config()->HasReceivedConnectionOptions()) {
87
- return;
88
- }
75
+ if (!config()->HasReceivedConnectionOptions()) {
76
+ return;
89
77
  }
90
78
 
91
79
  if (GetQuicReloadableFlag(quic_enable_disable_resumption) &&
@@ -515,6 +515,12 @@ class QUIC_EXPORT_PRIVATE QuicSpdySession
515
515
  // in settings and accept remote settings for.
516
516
  virtual HttpDatagramSupport LocalHttpDatagramSupport();
517
517
 
518
+ // Sends any data which should be sent at the start of a connection, including
519
+ // the initial SETTINGS frame. When using 0-RTT, this method is called twice:
520
+ // once when encryption is established, and again when 1-RTT keys are
521
+ // available.
522
+ void SendInitialData();
523
+
518
524
  private:
519
525
  friend class test::QuicSpdySessionPeer;
520
526
 
@@ -549,12 +555,6 @@ class QUIC_EXPORT_PRIVATE QuicSpdySession
549
555
  void CloseConnectionOnDuplicateHttp3UnidirectionalStreams(
550
556
  absl::string_view type);
551
557
 
552
- // Sends any data which should be sent at the start of a connection, including
553
- // the initial SETTINGS frame. When using 0-RTT, this method is called twice:
554
- // once when encryption is established, and again when 1-RTT keys are
555
- // available.
556
- void SendInitialData();
557
-
558
558
  void FillSettingsFrame();
559
559
 
560
560
  bool VerifySettingIsZeroOrOne(uint64_t id, uint64_t value);