grpc 1.84.0 → 1.85.0.pre1

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 (1004) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +40 -27
  3. data/include/grpc/event_engine/memory_allocator.h +1 -0
  4. data/include/grpc/grpc.h +3 -0
  5. data/include/grpc/grpc_security_constants.h +2 -0
  6. data/include/grpc/impl/channel_arg_names.h +4 -0
  7. data/src/core/call/call_filters.h +10 -10
  8. data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
  9. data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
  10. data/src/core/call/filter_fusion.h +15 -15
  11. data/src/core/call/interception_chain.h +3 -3
  12. data/src/core/call/metadata_batch.cc +1 -0
  13. data/src/core/call/metadata_batch.h +45 -33
  14. data/src/core/call/parsed_metadata.h +3 -3
  15. data/src/core/call/request_buffer.cc +6 -6
  16. data/src/core/call/request_buffer.h +1 -1
  17. data/src/core/channelz/channel_trace.cc +5 -5
  18. data/src/core/channelz/channel_trace.h +1 -1
  19. data/src/core/channelz/channelz.cc +9 -9
  20. data/src/core/channelz/channelz.h +12 -12
  21. data/src/core/channelz/channelz_registry.cc +10 -10
  22. data/src/core/channelz/ztrace_collector.h +5 -5
  23. data/src/core/client_channel/client_channel.cc +4 -4
  24. data/src/core/client_channel/client_channel_filter.cc +14 -14
  25. data/src/core/client_channel/global_subchannel_pool.cc +4 -4
  26. data/src/core/client_channel/subchannel.cc +24 -23
  27. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  28. data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
  29. data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
  30. data/src/core/credentials/call/external/external_account_credentials.cc +4 -4
  31. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +9 -9
  32. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +4 -4
  33. data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
  34. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +1 -1
  35. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +9 -9
  36. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +1 -1
  37. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +6 -6
  38. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  39. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +4 -4
  40. data/src/core/credentials/transport/tls/ssl_utils.cc +10 -0
  41. data/src/core/credentials/transport/tls/tls_security_connector.cc +10 -10
  42. data/src/core/credentials/transport/tls/tls_security_connector.h +6 -6
  43. data/src/core/credentials/transport/tls/tls_utils.h +9 -0
  44. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
  45. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  46. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  47. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
  48. data/src/core/ext/filters/http/message_compress/compression_filter.cc +15 -0
  49. data/src/core/ext/filters/rbac/rbac_filter.h +1 -1
  50. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -5
  51. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -21
  52. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -11
  53. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -11
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  55. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -4
  56. data/src/core/ext/transport/chttp2/transport/frame.h +9 -0
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -9
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -2
  59. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +16 -18
  60. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +2 -1
  61. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +277 -189
  62. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +40 -17
  63. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +12 -24
  64. data/src/core/ext/transport/chttp2/transport/http2_transport.h +3 -29
  65. data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
  66. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  67. data/src/core/ext/transport/chttp2/transport/read_context.h +96 -3
  68. data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
  69. data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
  70. data/src/core/ext/transport/chttp2/transport/security_frame.h +8 -8
  71. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +17 -9
  72. data/src/core/ext/transport/chttp2/transport/write_cycle.h +23 -3
  73. data/src/core/ext/transport/inproc/inproc_transport.cc +5 -5
  74. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb.h +137 -73
  75. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +45 -25
  76. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +6 -6
  77. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.c +4 -4
  78. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -5
  79. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +46 -26
  80. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.c +17 -14
  81. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -5
  82. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +5 -5
  83. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.c +3 -3
  84. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.h +5 -5
  85. data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
  86. data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
  87. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -5
  88. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +5 -5
  89. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.c +3 -3
  90. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.h +5 -5
  91. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb.h +185 -23
  92. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.c +20 -12
  93. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -5
  94. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +58 -42
  95. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.c +17 -12
  96. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.h +5 -5
  97. data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +567 -549
  98. data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
  99. data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
  100. data/src/core/filter/ext_proc/ext_proc_filter.cc +1603 -46
  101. data/src/core/filter/ext_proc/ext_proc_filter.h +55 -22
  102. data/src/core/filter/ext_proc/ext_proc_messages.cc +106 -51
  103. data/src/core/filter/ext_proc/ext_proc_messages.h +36 -9
  104. data/src/core/handshaker/handshaker.cc +4 -4
  105. data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
  106. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
  107. data/src/core/handshaker/security/secure_endpoint.cc +13 -13
  108. data/src/core/handshaker/security/security_handshaker.cc +6 -6
  109. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
  110. data/src/core/lib/channel/channel_args.cc +20 -0
  111. data/src/core/lib/channel/channel_args.h +17 -17
  112. data/src/core/lib/channel/promise_based_filter.cc +2 -2
  113. data/src/core/lib/channel/promise_based_filter.h +66 -27
  114. data/src/core/lib/debug/trace_flags.cc +2 -0
  115. data/src/core/lib/debug/trace_flags.h +1 -0
  116. data/src/core/lib/event_engine/ares_resolver.cc +14 -14
  117. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
  118. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
  119. data/src/core/lib/event_engine/default_event_engine.cc +5 -5
  120. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -9
  121. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +16 -14
  122. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
  123. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
  124. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1 -1
  125. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +7 -7
  126. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +17 -17
  127. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -3
  128. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
  129. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
  130. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  131. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
  132. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  133. data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
  134. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
  135. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
  136. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +3 -3
  137. data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
  139. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
  140. data/src/core/lib/experiments/experiments.cc +48 -0
  141. data/src/core/lib/experiments/experiments.h +24 -0
  142. data/src/core/lib/iomgr/buffer_list.cc +3 -3
  143. data/src/core/lib/iomgr/buffer_list.h +1 -1
  144. data/src/core/lib/iomgr/combiner.cc +0 -1
  145. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  146. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
  147. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  148. data/src/core/lib/iomgr/tcp_posix.cc +7 -7
  149. data/src/core/lib/promise/activity.cc +1 -1
  150. data/src/core/lib/promise/activity.h +1 -1
  151. data/src/core/lib/promise/arena_promise.h +7 -7
  152. data/src/core/lib/promise/detail/promise_factory.h +8 -8
  153. data/src/core/lib/promise/detail/promise_like.h +4 -4
  154. data/src/core/lib/promise/inter_activity_latch.h +6 -6
  155. data/src/core/lib/promise/inter_activity_pipe.h +1 -1
  156. data/src/core/lib/promise/observable.h +3 -3
  157. data/src/core/lib/promise/party.cc +1 -1
  158. data/src/core/lib/promise/try_seq.h +2 -2
  159. data/src/core/lib/resource_quota/arena.h +3 -3
  160. data/src/core/lib/resource_quota/memory_quota.cc +16 -16
  161. data/src/core/lib/resource_quota/memory_quota.h +1 -1
  162. data/src/core/lib/resource_quota/thread_quota.cc +3 -3
  163. data/src/core/lib/security/authorization/audit_logging.cc +5 -5
  164. data/src/core/lib/security/authorization/authorization_engine.h +1 -1
  165. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
  166. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  167. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  168. data/src/core/lib/security/authorization/matchers.h +1 -1
  169. data/src/core/lib/surface/call.cc +8 -7
  170. data/src/core/lib/surface/call.h +3 -3
  171. data/src/core/lib/surface/call_utils.h +4 -0
  172. data/src/core/lib/surface/channel.cc +1 -1
  173. data/src/core/lib/surface/channel.h +1 -1
  174. data/src/core/lib/surface/channel_init.cc +1 -1
  175. data/src/core/lib/surface/init.cc +7 -7
  176. data/src/core/lib/surface/lame_client.cc +1 -1
  177. data/src/core/lib/surface/legacy_channel.cc +2 -2
  178. data/src/core/lib/surface/version.cc +1 -1
  179. data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
  180. data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
  181. data/src/core/load_balancing/autosharding/autosharding.h +78 -0
  182. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
  183. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  184. data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
  185. data/src/core/load_balancing/health_check_client.cc +7 -7
  186. data/src/core/load_balancing/lb_policy.cc +1 -1
  187. data/src/core/load_balancing/oob_backend_metric.cc +5 -5
  188. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
  189. data/src/core/load_balancing/ring_hash/ring_hash.cc +109 -37
  190. data/src/core/load_balancing/rls/rls.cc +23 -17
  191. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +10 -10
  192. data/src/core/load_balancing/xds/cds.cc +6 -5
  193. data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -2
  194. data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
  195. data/src/core/mitigation_engine/mitigation_engine.h +28 -4
  196. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
  197. data/src/core/resolver/dns/dns_resolver.cc +7 -7
  198. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  199. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +38 -30
  200. data/src/core/server/server.cc +30 -30
  201. data/src/core/server/server.h +4 -3
  202. data/src/core/server/server_config_selector_filter.cc +3 -3
  203. data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -15
  204. data/src/core/telemetry/default_tcp_tracer.cc +1 -1
  205. data/src/core/telemetry/instrument.cc +30 -16
  206. data/src/core/telemetry/instrument.h +3 -3
  207. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
  208. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -4
  209. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +2 -2
  210. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  211. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
  212. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  213. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
  214. data/src/core/tsi/ssl_transport_security.cc +46 -13
  215. data/src/core/tsi/ssl_transport_security.h +7 -0
  216. data/src/core/tsi/ssl_transport_security_utils.cc +16 -6
  217. data/src/core/util/event_log.cc +3 -3
  218. data/src/core/util/http_client/httpcli.cc +5 -5
  219. data/src/core/util/http_client/httpcli.h +1 -1
  220. data/src/core/util/json/json_object_loader.cc +7 -0
  221. data/src/core/util/json/json_object_loader.h +17 -2
  222. data/src/core/util/latent_see.cc +123 -36
  223. data/src/core/util/latent_see.h +14 -1
  224. data/src/core/util/mpscq.cc +1 -1
  225. data/src/core/util/notification.h +4 -4
  226. data/src/core/util/sync.h +20 -6
  227. data/src/core/util/table.h +20 -22
  228. data/src/core/util/work_serializer.cc +2 -2
  229. data/src/core/xds/grpc/blackboard.cc +4 -3
  230. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  231. data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
  232. data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
  233. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +2 -2
  234. data/src/core/xds/grpc/xds_client_grpc.cc +8 -8
  235. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  236. data/src/core/xds/grpc/xds_endpoint.cc +1 -1
  237. data/src/core/xds/grpc/xds_endpoint_parser.cc +11 -0
  238. data/src/core/xds/grpc/xds_grpc_service_parser.cc +12 -10
  239. data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +17 -14
  240. data/src/core/xds/grpc/xds_matcher.h +2 -2
  241. data/src/core/xds/grpc/xds_transport_grpc.cc +125 -85
  242. data/src/core/xds/grpc/xds_transport_grpc.h +19 -4
  243. data/src/core/xds/xds_client/lrs_client.cc +22 -19
  244. data/src/core/xds/xds_client/xds_client.cc +19 -16
  245. data/src/core/xds/xds_client/xds_transport.h +49 -3
  246. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  247. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  248. data/src/ruby/lib/grpc/version.rb +1 -1
  249. data/src/ruby/pb/README.md +1 -1
  250. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  251. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  252. data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
  253. data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
  254. data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
  255. data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
  256. data/third_party/abseil-cpp/absl/base/casts.h +135 -2
  257. data/third_party/abseil-cpp/absl/base/config.h +63 -41
  258. data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
  259. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  260. data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
  261. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
  262. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
  263. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  264. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  265. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  266. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
  267. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
  268. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
  269. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  270. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
  271. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  272. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  273. data/third_party/abseil-cpp/absl/base/macros.h +76 -37
  274. data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
  275. data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
  276. data/third_party/abseil-cpp/absl/base/options.h +46 -18
  277. data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
  278. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  279. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  280. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
  281. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  282. data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
  283. data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
  284. data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
  285. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
  286. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
  287. data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
  288. data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
  289. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
  290. data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
  291. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  292. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
  293. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
  294. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
  295. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
  296. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
  297. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
  298. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
  299. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
  300. data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
  301. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
  302. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
  303. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
  304. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
  305. data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
  306. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
  307. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  308. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  309. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  310. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  311. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  312. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
  313. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  314. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  315. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  316. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  317. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
  318. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
  319. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
  320. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  321. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
  322. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  323. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  324. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
  325. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
  326. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
  327. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  328. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
  329. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
  330. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  331. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
  332. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  333. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  334. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  335. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  336. data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
  337. data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
  338. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  339. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
  340. data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
  341. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  342. data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
  343. data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
  344. data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
  345. data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
  346. data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
  347. data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
  348. data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
  349. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
  350. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  351. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
  352. data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
  353. data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
  354. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
  355. data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
  356. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  357. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  358. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
  359. data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
  360. data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
  361. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  362. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
  363. data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
  364. data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  365. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  366. data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
  367. data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
  368. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  369. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  370. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
  371. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  372. data/third_party/abseil-cpp/absl/log/log.h +2 -2
  373. data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
  374. data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
  375. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  376. data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
  377. data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
  378. data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
  379. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  380. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  381. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
  382. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  383. data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
  384. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  385. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  386. data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
  387. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  388. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  389. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
  390. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  391. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  392. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  393. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  394. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  395. data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
  396. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  397. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  398. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  399. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
  400. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  401. data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
  402. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  403. data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
  404. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  405. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  406. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
  407. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
  408. data/third_party/abseil-cpp/absl/status/status.cc +66 -70
  409. data/third_party/abseil-cpp/absl/status/status.h +254 -23
  410. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  411. data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
  412. data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
  413. data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
  414. data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
  415. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  416. data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
  417. data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
  418. data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
  420. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  421. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
  422. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
  423. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  424. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  425. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  426. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
  427. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
  428. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  429. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  430. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  431. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  432. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
  433. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
  434. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
  435. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  436. data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
  437. data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
  438. data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
  439. data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
  440. data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
  441. data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
  442. data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
  443. data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
  444. data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
  445. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  446. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  447. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
  448. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  449. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  450. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  451. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
  452. data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
  453. data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
  454. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  455. data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
  456. data/third_party/abseil-cpp/absl/time/clock.h +3 -0
  457. data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
  458. data/third_party/abseil-cpp/absl/time/format.cc +3 -10
  459. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  460. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
  461. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  462. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
  463. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  464. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  465. data/third_party/abseil-cpp/absl/time/time.cc +4 -4
  466. data/third_party/abseil-cpp/absl/time/time.h +14 -13
  467. data/third_party/abseil-cpp/absl/types/compare.h +64 -63
  468. data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
  469. data/third_party/abseil-cpp/absl/types/optional.h +31 -4
  470. data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
  471. data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
  472. data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
  473. data/third_party/abseil-cpp/absl/types/span.h +67 -38
  474. data/third_party/abseil-cpp/absl/types/variant.h +75 -18
  475. data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
  476. data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
  477. data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
  478. data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
  479. data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
  480. data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
  481. data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
  482. data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
  483. data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
  484. data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
  485. data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
  486. data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
  487. data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
  488. data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
  489. data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
  490. data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
  491. data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
  492. data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
  493. data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
  494. data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
  495. data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
  496. data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
  497. data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
  498. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
  499. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
  500. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
  501. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
  502. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
  503. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
  504. data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
  505. data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
  506. data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
  507. data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
  508. data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
  509. data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
  510. data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
  511. data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
  512. data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
  513. data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
  514. data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
  515. data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
  516. data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
  517. data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
  518. data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
  519. data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
  520. data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
  521. data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
  522. data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
  523. data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
  524. data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
  525. data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
  526. data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
  527. data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
  528. data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
  529. data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
  530. data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
  531. data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
  532. data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
  533. data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
  534. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
  535. data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
  536. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
  537. data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
  538. data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
  539. data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
  540. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
  541. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
  542. data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
  543. data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
  544. data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
  545. data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
  546. data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
  547. data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
  548. data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
  549. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
  550. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
  551. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
  552. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
  553. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
  554. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
  555. data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
  556. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
  557. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
  558. data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
  559. data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
  560. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
  561. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
  562. data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
  563. data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
  564. data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
  565. data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
  566. data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
  567. data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
  568. data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
  569. data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
  570. data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
  571. data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
  572. data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
  573. data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
  574. data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
  575. data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
  576. data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
  577. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
  578. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  579. data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
  580. data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
  581. data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
  582. data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
  583. data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
  584. data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
  585. data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
  586. data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
  587. data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
  588. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
  589. data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
  590. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
  591. data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
  592. data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
  593. data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
  594. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
  595. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
  596. data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
  597. data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
  598. data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
  599. data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
  600. data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
  601. data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
  602. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
  603. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
  604. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
  605. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
  606. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
  607. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
  608. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
  609. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
  610. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
  611. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
  612. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
  613. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
  614. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
  615. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
  616. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
  617. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
  618. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
  619. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
  620. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
  621. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
  622. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
  623. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
  624. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
  625. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
  626. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
  627. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
  628. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
  629. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
  630. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
  631. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
  632. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
  633. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
  634. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
  635. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
  636. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
  637. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
  638. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
  639. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
  640. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
  641. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
  642. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
  643. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
  644. data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
  645. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
  646. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
  647. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
  648. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
  649. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
  650. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
  651. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
  652. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
  653. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
  654. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
  655. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
  656. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
  657. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
  658. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
  659. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
  660. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
  661. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
  662. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
  663. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
  664. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
  665. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
  666. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
  667. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
  668. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
  669. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
  670. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
  671. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  672. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
  673. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
  674. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
  675. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
  676. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
  677. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
  678. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
  679. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
  680. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  681. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
  682. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
  683. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
  684. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
  685. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
  686. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
  687. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
  688. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
  689. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
  690. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
  691. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
  692. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
  693. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
  694. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
  695. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
  696. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
  697. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
  698. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
  699. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
  700. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
  701. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
  702. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
  703. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
  704. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
  705. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
  706. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
  707. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
  708. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
  709. data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
  710. data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
  711. data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
  712. data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
  713. data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
  714. data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
  715. data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
  716. data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
  717. data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
  718. data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
  719. data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
  720. data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
  721. data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
  722. data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
  723. data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
  724. data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
  725. data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
  726. data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
  727. data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
  728. data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
  729. data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
  730. data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
  731. data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
  732. data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
  733. data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
  734. data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
  735. data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
  736. data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
  737. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
  738. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
  739. data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
  740. data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
  741. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
  742. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
  743. data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
  744. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
  745. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
  746. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
  747. data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
  748. data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
  749. data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
  750. data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
  751. data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
  752. data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
  753. data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
  754. data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
  755. data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
  756. data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
  757. data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
  758. data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
  759. data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
  760. data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
  761. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
  762. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
  763. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
  764. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
  765. data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
  766. data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
  767. data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
  768. data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
  769. data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
  770. data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
  771. data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
  772. data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
  773. data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
  774. data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
  775. data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
  776. data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
  777. data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
  778. data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
  779. data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
  780. data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
  781. data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
  782. data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
  783. data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
  784. data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
  785. data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
  786. data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
  787. data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
  788. data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
  789. data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
  790. data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
  791. data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
  792. data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
  793. data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
  794. data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
  795. data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
  796. data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
  797. data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
  798. data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
  799. data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
  800. data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
  801. data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
  802. data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
  803. data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
  804. data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
  805. data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
  806. data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
  807. data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
  808. data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
  809. data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
  810. data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
  811. data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
  812. data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
  813. data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
  814. data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
  815. data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
  816. data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
  817. data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
  818. data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
  819. data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
  820. data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
  821. data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
  822. data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
  823. data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
  824. data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
  825. data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
  826. data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
  827. data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
  828. data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
  829. data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
  830. data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
  831. data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
  832. data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
  833. data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
  834. data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
  835. data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
  836. data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
  837. data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
  838. data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
  839. data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
  840. data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
  841. data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
  842. data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
  843. data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
  844. data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
  845. data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
  846. data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
  847. data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
  848. data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
  849. data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
  850. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
  851. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
  852. data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
  853. data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
  854. data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
  855. data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
  856. data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
  857. data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
  858. data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
  859. data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
  860. data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
  861. data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
  862. data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
  863. data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
  864. data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
  865. data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
  866. data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
  867. data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
  868. data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
  869. data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
  870. data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
  871. data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
  872. data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
  873. data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
  874. data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
  875. data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
  876. data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
  877. data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
  878. data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
  879. data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
  880. data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
  881. data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
  882. data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
  883. data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
  884. data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
  885. data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
  886. data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
  887. data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
  888. data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
  889. data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
  890. data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
  891. data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
  892. data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
  893. data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
  894. data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
  895. data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
  896. data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
  897. data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
  898. data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
  899. data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
  900. data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
  901. data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
  902. data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
  903. data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
  904. data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
  905. data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
  906. data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
  907. data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
  908. data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
  909. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
  910. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
  911. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
  912. data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
  913. data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
  914. data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
  915. data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
  916. data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
  917. data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
  918. data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
  919. data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
  920. data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
  921. data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
  922. data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
  923. data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
  924. data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
  925. data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
  926. data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
  927. data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
  928. data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
  929. data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
  930. data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
  931. data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
  932. data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
  933. data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
  934. data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
  935. data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
  936. data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
  937. data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
  938. data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
  939. data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
  940. data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
  941. data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
  942. data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
  943. data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
  944. data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
  945. data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
  946. data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
  947. data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
  948. data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
  949. data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
  950. data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
  951. data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
  952. data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
  953. data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
  954. data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
  955. data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
  956. data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
  957. data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
  958. data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
  959. data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
  960. data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
  961. data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
  962. data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
  963. data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
  964. data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
  965. data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
  966. data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
  967. data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
  968. data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
  969. data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
  970. data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
  971. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  972. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  973. data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
  974. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
  975. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
  976. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
  977. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
  978. data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
  979. metadata +77 -52
  980. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
  981. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
  982. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -157
  983. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -72
  984. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
  985. data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
  986. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
  987. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
  988. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
  989. data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
  990. data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
  991. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
  992. data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
  993. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
  994. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
  995. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
  996. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
  997. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
  998. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
  999. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
  1000. data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
  1001. data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
  1002. data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
  1003. data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
  1004. data/third_party/boringssl-with-bazel/include/openssl/experimental/kyber.h +0 -146
@@ -29,7 +29,9 @@
29
29
  #include <optional>
30
30
  #include <type_traits>
31
31
  #include <utility>
32
+ #include <vector>
32
33
 
34
+ #include "src/core/call/call_arena_allocator.h"
33
35
  #include "src/core/call/call_destination.h"
34
36
  #include "src/core/call/call_spine.h"
35
37
  #include "src/core/call/metadata.h"
@@ -45,6 +47,7 @@
45
47
  #include "src/core/ext/transport/chttp2/transport/keepalive.h"
46
48
  #include "src/core/ext/transport/chttp2/transport/ping_promise.h"
47
49
  #include "src/core/ext/transport/chttp2/transport/read_context.h"
50
+ #include "src/core/ext/transport/chttp2/transport/reclaimer.h"
48
51
  #include "src/core/ext/transport/chttp2/transport/security_frame.h"
49
52
  #include "src/core/ext/transport/chttp2/transport/stream.h"
50
53
  #include "src/core/ext/transport/chttp2/transport/stream_data_queue.h"
@@ -60,6 +63,7 @@
60
63
  #include "src/core/lib/promise/promise.h"
61
64
  #include "src/core/lib/promise/race.h"
62
65
  #include "src/core/lib/resource_quota/memory_quota.h"
66
+ #include "src/core/lib/resource_quota/stream_quota.h"
63
67
  #include "src/core/lib/slice/slice_buffer.h"
64
68
  #include "src/core/lib/transport/connectivity_state.h"
65
69
  #include "src/core/lib/transport/promise_endpoint.h"
@@ -174,14 +178,17 @@ class Http2ServerTransport final : public ServerTransport,
174
178
  int64_t TestOnlyTransportFlowControlWindow();
175
179
  int64_t TestOnlyGetStreamFlowControlWindow(uint32_t stream_id);
176
180
 
177
- uint32_t TestOnlyLastIncomingStreamId() const {
178
- return last_incoming_stream_id_;
179
- }
181
+ uint32_t TestOnlyLastIncomingStreamId() const { return GetLastStreamId(); }
180
182
 
181
183
  Duration TestOnlyNextAllowedPingInterval() {
182
184
  return NextAllowedPingInterval();
183
185
  }
184
186
 
187
+ void TestOnlySetLocalMaxConcurrentStreams(
188
+ const uint32_t max_concurrent_streams) {
189
+ settings_->mutable_local().SetMaxConcurrentStreams(max_concurrent_streams);
190
+ }
191
+
185
192
  private:
186
193
  //////////////////////////////////////////////////////////////////////////////
187
194
  // Endpoint Helpers
@@ -262,7 +269,8 @@ class Http2ServerTransport final : public ServerTransport,
262
269
  }
263
270
 
264
271
  template <typename T>
265
- Http2Status ProcessIncomingMetadata(T&& frame);
272
+ Http2Status ProcessIncomingMetadata(T&& frame,
273
+ const RefCountedPtr<Stream>& stream);
266
274
 
267
275
  auto ReadAndProcessOneFrame();
268
276
 
@@ -444,15 +452,7 @@ class Http2ServerTransport final : public ServerTransport,
444
452
  // tokens are calculated based on the initial window size.
445
453
  absl::Status UpdateAllStreamsWritability();
446
454
 
447
- auto FlowControlPeriodicUpdateLoop();
448
-
449
- // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done.
450
- void AddPeriodicUpdatePromiseWaker() {
451
- periodic_updates_waker_ = GetContext<Activity>()->MakeNonOwningWaker();
452
- }
453
-
454
- // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done.
455
- void WakeupPeriodicUpdatePromise() { periodic_updates_waker_.Wakeup(); }
455
+ auto BdpLoop();
456
456
 
457
457
  //////////////////////////////////////////////////////////////////////////////
458
458
  // Stream List Operations
@@ -473,18 +473,28 @@ class Http2ServerTransport final : public ServerTransport,
473
473
  return stream_list_.size();
474
474
  }
475
475
 
476
+ // Returns the last stream id seen by the transport from the client.
477
+ // If no streams were seen, returns 0.
478
+ uint32_t GetLastStreamId() const { return last_incoming_stream_id_; }
479
+
476
480
  bool IsPingWithoutCallsAllowed() const {
477
481
  return keepalive_permit_without_calls_;
478
482
  }
479
483
 
480
484
  bool IsTransportIdle() {
481
- MutexLock lock(&transport_mutex_);
485
+ MutexLock lock(transport_mutex_);
482
486
  return GetActiveStreamCountLocked() == 0;
483
487
  }
484
488
 
485
489
  void EnqueueResetStreamFromTransportParty(RefCountedPtr<Stream> stream,
486
490
  uint32_t reset_stream_error_code);
487
491
 
492
+ // Enqueues a RST_STREAM frame directly onto the transport write context when
493
+ // no Stream object exists yet (e.g. when an incoming stream is rejected
494
+ // before stream creation).
495
+ void EnqueueResetStreamFromTransportParty(
496
+ const uint32_t stream_id, const uint32_t reset_stream_error_code);
497
+
488
498
  //////////////////////////////////////////////////////////////////////////////
489
499
  // Stream Operations
490
500
 
@@ -494,9 +504,19 @@ class Http2ServerTransport final : public ServerTransport,
494
504
  std::optional<RefCountedPtr<Stream>> MakeStream(
495
505
  CallInitiator&& call_initiator, uint32_t stream_id);
496
506
 
507
+ // Validates the transport-level conditions for the incoming stream before
508
+ // creating the stream object.
509
+ Http2Status ValidateIncomingStream(uint32_t stream_id);
510
+
497
511
  Http2Status IncomingStream(ClientMetadataHandle&& metadata,
498
512
  uint32_t stream_id);
499
513
 
514
+ // This MUST be called from the transport party only.
515
+ // Recomputes the MAX_CONCURRENT_STREAMS that we advertise to the peer, based
516
+ // on the process wide StreamQuota.
517
+ // Based on CHTTP2's use of GetConnectionMaxConcurrentRequests in parsing.cc
518
+ void UpdateMaxConcurrentStreamsFromStreamQuota();
519
+
500
520
  // Call this when a stream needs to be closed and we must notify the client by
501
521
  // sending a RST_STREAM frame (e.g., due to local stream error, cancellation).
502
522
  // This enqueues the RST_STREAM frame and immediately closes the stream for
@@ -735,6 +755,7 @@ class Http2ServerTransport final : public ServerTransport,
735
755
  bool is_goaway_received_;
736
756
 
737
757
  bool should_reset_ping_clock_;
758
+ bool max_concurrent_streams_overload_protection_ = false;
738
759
  ReadContext read_context_;
739
760
 
740
761
  // Transport wide write context. This is used to track the state of the
@@ -744,6 +765,9 @@ class Http2ServerTransport final : public ServerTransport,
744
765
  // Tracks last stream id received by the transport.
745
766
  uint32_t last_incoming_stream_id_;
746
767
 
768
+ // Tracks last stream id accepted for processing (for graceful GOAWAY).
769
+ uint32_t last_accepted_stream_id_;
770
+
747
771
  // Duration between two consecutive keepalive pings.
748
772
  Duration keepalive_time_;
749
773
  GRPC_UNUSED bool test_only_ack_pings_;
@@ -755,14 +779,13 @@ class Http2ServerTransport final : public ServerTransport,
755
779
  GoawayManager goaway_manager_;
756
780
 
757
781
  MemoryOwner memory_owner_;
782
+ const RefCountedPtr<CallArenaAllocator> call_arena_allocator_;
783
+ RefCountedPtr<StreamQuota> stream_quota_;
758
784
  chttp2::TransportFlowControl flow_control_;
759
785
  WritableStreams<RefCountedPtr<Stream>> writable_stream_list_;
760
786
 
761
787
  RefCountedPtr<SecurityFrameHandler> security_frame_handler_;
762
788
  std::shared_ptr<PromiseHttp2ZTraceCollector> ztrace_collector_;
763
-
764
- // TODO(tjagtap) [PH2][P2][BDP] Remove this when the BDP code is done.
765
- Waker periodic_updates_waker_;
766
789
  TarpitManager tarpit_manager_;
767
790
  };
768
791
 
@@ -150,7 +150,9 @@ std::string TransportChannelArgs::DebugString() const {
150
150
  " max_header_list_size_soft_limit: ", max_header_list_size_soft_limit,
151
151
  " max_usable_hpack_table_size: ", max_usable_hpack_table_size,
152
152
  " initial_sequence_number: ", initial_sequence_number,
153
- " test_only_ack_pings: ", test_only_ack_pings);
153
+ " test_only_ack_pings: ", test_only_ack_pings,
154
+ " max_concurrent_streams_overload_protection: ",
155
+ max_concurrent_streams_overload_protection);
154
156
  }
155
157
 
156
158
  void ReadChannelArgs(const ChannelArgs& channel_args,
@@ -186,6 +188,13 @@ void ReadChannelArgs(const ChannelArgs& channel_args,
186
188
  channel_args.GetBool(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)
187
189
  .value_or(kDefaultKeepalivePermitWithoutCalls);
188
190
 
191
+ args.max_concurrent_streams_overload_protection =
192
+ is_client
193
+ ? false
194
+ : channel_args
195
+ .GetBool(GRPC_ARG_MAX_CONCURRENT_STREAMS_OVERLOAD_PROTECTION)
196
+ .value_or(true);
197
+
189
198
  args.max_usable_hpack_table_size =
190
199
  channel_args.GetInt(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER).value_or(-1);
191
200
 
@@ -371,6 +380,8 @@ ProcessIncomingDataFrameFlowControl(const Http2FrameHeader& frame_header,
371
380
  chttp2::StreamFlowControl::IncomingUpdateContext stream_fc(
372
381
  &stream->GetStreamFlowControl());
373
382
  absl::Status fc_status = stream_fc.RecvData(frame_header.length);
383
+ // TODO(tjagtap) [PH2][P1][FlowControl] This is a HACK. Fix this.
384
+ stream_fc.HackIncrementPendingSize(frame_header.length);
374
385
  chttp2::FlowControlAction action = stream_fc.MakeAction();
375
386
  GRPC_HTTP2_COMMON_DLOG
376
387
  << "ProcessIncomingDataFrameFlowControl Stream RecvData status: "
@@ -383,8 +394,6 @@ ProcessIncomingDataFrameFlowControl(const Http2FrameHeader& frame_header,
383
394
  Http2ErrorCode::kFlowControlError,
384
395
  std::string(fc_status.message()));
385
396
  }
386
- // TODO(tjagtap) [PH2][P1][FlowControl] This is a HACK. Fix this.
387
- stream_fc.HackIncrementPendingSize(frame_header.length);
388
397
  return action;
389
398
  }
390
399
  }
@@ -489,8 +498,6 @@ std::string TarpitEntry::DebugString() const {
489
498
  std::get_if<OutgoingResetPayload>(&payload_);
490
499
  const OutgoingTrailingMetadataPayload* const trailers =
491
500
  std::get_if<OutgoingTrailingMetadataPayload>(&payload_);
492
- const IncomingResetPayload* const incoming_reset =
493
- std::get_if<IncomingResetPayload>(&payload_);
494
501
  if (reset != nullptr) {
495
502
  payload_str = absl::StrCat(
496
503
  "OutgoingReset(error_code=", reset->http2_error_code,
@@ -501,9 +508,6 @@ std::string TarpitEntry::DebugString() const {
501
508
  ? trailers->metadata->DebugString()
502
509
  : "null",
503
510
  ")");
504
- } else if (incoming_reset != nullptr) {
505
- payload_str = absl::StrCat(
506
- "IncomingReset(status=", incoming_reset->status.ToString(), ")");
507
511
  } else {
508
512
  payload_str = "unknown type";
509
513
  }
@@ -569,22 +573,6 @@ StatusFlag TarpitManager::StartTarpitTrailers(const uint32_t stream_id,
569
573
  return status;
570
574
  }
571
575
 
572
- StatusFlag TarpitManager::RequestTarpitIncomingReset(const uint32_t stream_id,
573
- absl::Status status) {
574
- GRPC_DCHECK(allow_tarpit_);
575
- GRPC_DCHECK_NE(stream_id, kInvalidStreamId);
576
- GRPC_HTTP2_COMMON_DLOG
577
- << "TarpitManager::RequestTarpitIncomingReset Stream id: " << stream_id
578
- << " status: " << status;
579
-
580
- const Timestamp expire_time = Timestamp::Now() + GetTarpitDuration();
581
- TarpitEntry entry = TarpitEntry::CreateIncomingReset(
582
- stream_id, std::move(status), expire_time);
583
- const StatusFlag send_status =
584
- sender_.UnbufferedImmediateSend(std::move(entry), 1);
585
- return send_status;
586
- }
587
-
588
576
  StreamStateChange TarpitManager::OnTarpit(Stream& stream) {
589
577
  stream.SetTarpitActive();
590
578
  return stream.OnInitiateReset(absl::CancelledError("Stream tarpitted"));
@@ -153,6 +153,8 @@ struct TransportChannelArgs {
153
153
  bool keepalive_permit_without_calls;
154
154
  // This is used to test peer behaviour when we never send a ping ack.
155
155
  bool test_only_ack_pings;
156
+ // This is only applicable to servers.
157
+ bool max_concurrent_streams_overload_protection;
156
158
  uint32_t max_header_list_size_soft_limit;
157
159
  int max_usable_hpack_table_size;
158
160
  int initial_sequence_number;
@@ -272,8 +274,6 @@ class TransportShutdownTracker {
272
274
  // duration elapses:
273
275
  // - OutgoingResetPayload: sends a delayed RST_STREAM.
274
276
  // - OutgoingTrailingMetadataPayload: sends delayed server trailing metadata.
275
- // - IncomingResetPayload: Stream closure triggered by Client sending an
276
- // RST_STREAM.
277
277
  // The functions in this class are not thread-safe.
278
278
  class TarpitEntry {
279
279
  public:
@@ -286,10 +286,6 @@ class TarpitEntry {
286
286
  ServerMetadataHandle metadata;
287
287
  };
288
288
 
289
- struct IncomingResetPayload {
290
- absl::Status status;
291
- };
292
-
293
289
  TarpitEntry(TarpitEntry&&) = default;
294
290
  TarpitEntry& operator=(TarpitEntry&&) = default;
295
291
  TarpitEntry(const TarpitEntry&) = delete;
@@ -313,12 +309,6 @@ class TarpitEntry {
313
309
  OutgoingTrailingMetadataPayload{std::move(metadata)},
314
310
  expire_time);
315
311
  }
316
- static TarpitEntry CreateIncomingReset(const uint32_t stream_id,
317
- absl::Status status,
318
- const Timestamp expire_time) {
319
- return TarpitEntry(stream_id, IncomingResetPayload{std::move(status)},
320
- expire_time);
321
- }
322
312
 
323
313
  Timestamp GetExpireTime() const { return expire_time_; }
324
314
  uint32_t GetStreamId() const { return stream_id_; }
@@ -329,9 +319,6 @@ class TarpitEntry {
329
319
  bool IsOutgoingTrailingMetadata() const {
330
320
  return std::holds_alternative<OutgoingTrailingMetadataPayload>(payload_);
331
321
  }
332
- bool IsIncomingReset() const {
333
- return std::holds_alternative<IncomingResetPayload>(payload_);
334
- }
335
322
 
336
323
  // Consumes and extracts the payload when executing the post-tarpit action.
337
324
  // Returns std::nullopt if the payload type does not match.
@@ -352,14 +339,6 @@ class TarpitEntry {
352
339
  }
353
340
  return std::nullopt;
354
341
  }
355
- std::optional<IncomingResetPayload> TakeIncomingResetPayload() {
356
- IncomingResetPayload* const p =
357
- std::get_if<IncomingResetPayload>(&payload_);
358
- if (p != nullptr) {
359
- return std::move(*p);
360
- }
361
- return std::nullopt;
362
- }
363
342
 
364
343
  std::string DebugString() const;
365
344
 
@@ -369,8 +348,7 @@ class TarpitEntry {
369
348
 
370
349
  private:
371
350
  using Payload =
372
- std::variant<OutgoingResetPayload, OutgoingTrailingMetadataPayload,
373
- IncomingResetPayload>;
351
+ std::variant<OutgoingResetPayload, OutgoingTrailingMetadataPayload>;
374
352
 
375
353
  TarpitEntry(const uint32_t stream_id, Payload payload,
376
354
  const Timestamp expire_time)
@@ -452,10 +430,6 @@ class TarpitManager {
452
430
  StatusFlag StartTarpitTrailers(uint32_t stream_id,
453
431
  ServerMetadataHandle metadata);
454
432
 
455
- // Performs delayed stream closure following an incoming RST_STREAM.
456
- StatusFlag RequestTarpitIncomingReset(uint32_t stream_id,
457
- absl::Status status);
458
-
459
433
  //----------------------------------------------------------------------------
460
434
  // Transport-Party Confined Methods (Must be run on TransportParty)
461
435
  //----------------------------------------------------------------------------
@@ -294,7 +294,7 @@ struct grpc_chttp2_transport final : public grpc_core::FilterStackTransport,
294
294
  void PerformOp(grpc_transport_op* op) override;
295
295
  // Callback for transport framing endpoint extension to send security frames
296
296
  // received directly from the endpoint on wire.
297
- void WriteSecurityFrame(grpc_core::SliceBuffer* data);
297
+ void WriteSecurityFrame(grpc_core::SliceBuffer data);
298
298
  void WriteSecurityFrameLocked(grpc_core::SliceBuffer* data);
299
299
 
300
300
  void StartWatch(grpc_core::RefCountedPtr<StateWatcher> watcher) override;
@@ -631,7 +631,7 @@ struct grpc_chttp2_transport final : public grpc_core::FilterStackTransport,
631
631
 
632
632
  std::optional<uint32_t> max_recv_message_length;
633
633
 
634
- // Current mitigation engine, retrieved once per connection.
634
+ grpc_auth_context* auth_context = nullptr;
635
635
  grpc_core::RefCountedPtr<grpc_core::MitigationEngine> mitigation_engine;
636
636
  };
637
637
 
@@ -544,7 +544,8 @@ static grpc_error_handle init_header_skip_frame_parser(
544
544
  t->settings.acked().max_header_list_size(),
545
545
  hpack_boundary_type(t, is_eoh), priority_type,
546
546
  hpack_parser_log_info(t, HPackParser::LogInfo::kDontKnow),
547
- t->mitigation_engine.get(), t->peer_string.as_string_view());
547
+ t->mitigation_engine.get(), t->peer_string.as_string_view(),
548
+ t->auth_context);
548
549
  return absl::OkStatus();
549
550
  }
550
551
 
@@ -895,7 +896,7 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
895
896
  hpack_boundary_type(t, is_eoh), priority_type,
896
897
  hpack_parser_log_info(t, frame_type),
897
898
  t->mitigation_engine.get(),
898
- t->peer_string.as_string_view());
899
+ t->peer_string.as_string_view(), t->auth_context);
899
900
  return absl::OkStatus();
900
901
  }
901
902
 
@@ -22,10 +22,12 @@
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
24
  #include <cstdint>
25
+ #include <limits>
25
26
  #include <string>
26
27
  #include <utility>
27
28
 
28
29
  #include "src/core/call/metadata_info.h"
30
+ #include "src/core/ext/transport/chttp2/transport/frame.h"
29
31
  #include "src/core/ext/transport/chttp2/transport/header_assembler.h"
30
32
  #include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
31
33
  #include "src/core/ext/transport/chttp2/transport/http2_status.h"
@@ -143,6 +145,25 @@ class IncomingMetadataState {
143
145
  // Returns stream id of stream for which headers are being received.
144
146
  uint32_t GetStreamId() const { return stream_id_; }
145
147
 
148
+ void SetIsDiscardingIncomingStream(const bool is_discarding) {
149
+ is_discarding_incoming_stream_ = is_discarding;
150
+ }
151
+
152
+ // Set to true when:
153
+ // 1. A header frame or continuation frame causes a STREAM_ERROR.
154
+ // 2. The frame that caused the error did not have the END_HEADERS flag set.
155
+
156
+ // This ensures that subsequent CONTINUATION frames are safely parsed and
157
+ // discarded while keeping the HPACK table in sync. This function should be
158
+ // called each time a CONTINUATION frame is received.
159
+
160
+ // Returns true if the transport is actively discarding incoming
161
+ // CONTINUATION frames after a HEADERS frame was rejected, while continuing
162
+ // to decode their payload to keep the HPACK dynamic table in sync.
163
+ bool IsDiscardingIncomingStream() const {
164
+ return is_discarding_incoming_stream_;
165
+ }
166
+
146
167
  // A gRPC server is permitted to send both initial metadata and trailing
147
168
  // metadata where initial metadata is optional.
148
169
  // A gRPC C++ client is permitted to send only initial metadata.
@@ -163,12 +184,19 @@ class IncomingMetadataState {
163
184
  "{ incoming_header_in_progress : ",
164
185
  metadata_in_progress_ ? "true" : "false",
165
186
  ", incoming_header_end_stream : ", end_stream_ ? "true" : "false",
166
- ", incoming_header_stream_id : ", stream_id_, "}");
187
+ ", incoming_header_stream_id : ", stream_id_,
188
+ ", is_discarding_incoming_stream_ : ",
189
+ is_discarding_incoming_stream_ ? "true" : "false", "}");
167
190
  }
168
191
 
169
192
  private:
170
193
  bool metadata_in_progress_ = false;
171
194
  bool end_stream_ = false;
195
+ // Indicates whether incoming CONTINUATION frames should have their payloads
196
+ // discarded after a HEADERS frame was rejected, while still feeding the
197
+ // payload through the HPACK decoder to maintain dynamic table
198
+ // synchronization.
199
+ bool is_discarding_incoming_stream_ = false;
172
200
  uint32_t stream_id_ = 0;
173
201
  };
174
202
 
@@ -298,8 +326,6 @@ class ReadContext {
298
326
 
299
327
  // Called when we are closing a stream.
300
328
  void OnResetFrameEnqueued(const uint32_t reset_stream_error_code) {
301
- // TODO(tjagtap) [PH2][P1] Call this when we reject streams because of
302
- // MAX_CONCURRENT_STREAMS limit.
303
329
  if (reset_stream_error_code != 0u) {
304
330
  IncrementInducedFrames();
305
331
  }
@@ -307,6 +333,61 @@ class ReadContext {
307
333
  void OnSettingsFrameReceived() { IncrementInducedFrames(); }
308
334
  void OnPingFrameReceived() { IncrementInducedFrames(); }
309
335
 
336
+ // This is applicable only to servers.
337
+ // Based on CHTTP2's num_incoming_streams_before_settings_ack in parsing.cc.
338
+ // Sets the number of streams the peer may open before it acknowledges our
339
+ // SETTINGS frame. Has no effect once the first SETTINGS ACK has been
340
+ // received.
341
+ void SetNumIncomingStreamsBeforeSettingsAck(const uint32_t limit) {
342
+ num_incoming_streams_before_settings_ack_ = limit;
343
+ }
344
+
345
+ // Returns true once the peer has acknowledged our first SETTINGS frame.
346
+ bool HasReceivedSettingsAck() const {
347
+ return has_received_first_settings_ack_;
348
+ }
349
+
350
+ // Called when the first SETTINGS ACK frame is received.
351
+ // Removes the incoming streams limit for the rest of the connection.
352
+ void OnSettingsAckReceived() {
353
+ has_received_first_settings_ack_ = true;
354
+ num_incoming_streams_before_settings_ack_ =
355
+ std::numeric_limits<uint32_t>::max();
356
+ }
357
+
358
+ // Rejects incoming streams with ENHANCE_YOUR_CALM if received before the
359
+ // first settings ACK when limit is exhausted.
360
+ // Based on CHTTP2's check in parsing.cc:790.
361
+ Http2Status ValidateIncomingStreamBeforeSettingsAck(
362
+ const uint32_t stream_id) const {
363
+ if (GPR_LIKELY(has_received_first_settings_ack_)) {
364
+ return Http2Status::Ok();
365
+ } else if (GPR_UNLIKELY(num_incoming_streams_before_settings_ack_ == 0u)) {
366
+ GRPC_HTTP2_COMMON_DLOG
367
+ << "ReadContext::ValidateIncomingStreamBeforeSettingsAck "
368
+ << "Rejecting stream before settings have been acknowledged, "
369
+ "refusing stream_id="
370
+ << stream_id;
371
+ return Http2Status::Http2StreamError(
372
+ Http2ErrorCode::kEnhanceYourCalm,
373
+ std::string(GrpcErrors::kRejectStreamBeforeSettingsAck));
374
+ }
375
+ return Http2Status::Ok();
376
+ }
377
+
378
+ // Consumes one unit of the pre-SETTINGS-ACK stream limit once all stream
379
+ // validation checks have passed and the stream is accepted.
380
+ // Based on CHTTP2's --t->num_incoming_streams_before_settings_ack in
381
+ // parsing.cc:811.
382
+ void ConsumeIncomingStreamBeforeSettingsAck() {
383
+ if (GPR_LIKELY(has_received_first_settings_ack_)) {
384
+ return;
385
+ }
386
+ if (GPR_LIKELY(num_incoming_streams_before_settings_ack_ > 0u)) {
387
+ --num_incoming_streams_before_settings_ack_;
388
+ }
389
+ }
390
+
310
391
  // Called when we read a RST_STREAM frame from the peer.
311
392
  // Returns true if a ping should be sent in response.
312
393
  ShouldSendPing OnResetFrameReceived() {
@@ -358,6 +439,14 @@ class ReadContext {
358
439
  // Returns stream id of stream for which headers are being received.
359
440
  uint32_t GetStreamId() const { return metadata_state_.GetStreamId(); }
360
441
 
442
+ bool IsDiscardingIncomingStream() const {
443
+ return metadata_state_.IsDiscardingIncomingStream();
444
+ }
445
+
446
+ void SetIsDiscardingIncomingStream(const bool is_discarding) {
447
+ metadata_state_.SetIsDiscardingIncomingStream(is_discarding);
448
+ }
449
+
361
450
  // A gRPC server is permitted to send both initial metadata and trailing
362
451
  // metadata where initial metadata is optional.
363
452
  // A gRPC C++ client is permitted to send only initial metadata.
@@ -513,6 +602,10 @@ class ReadContext {
513
602
  ReadLoopPauseRestart read_loop_manager_;
514
603
  HeaderAssembler header_assembler_;
515
604
  IncomingMetadataState metadata_state_;
605
+ // Number of streams the peer may still open before it acknowledges our
606
+ // SETTINGS frame. Unused once has_received_first_settings_ack_ is true.
607
+ uint32_t num_incoming_streams_before_settings_ack_ = 0u;
608
+ bool has_received_first_settings_ack_ = false;
516
609
  };
517
610
 
518
611
  } // namespace http2
@@ -0,0 +1,32 @@
1
+ //
2
+ //
3
+ // Copyright 2026 gRPC authors.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+ //
17
+ //
18
+
19
+ #include "src/core/ext/transport/chttp2/transport/reclaimer.h"
20
+
21
+ #include <memory>
22
+ #include <optional>
23
+ #include <utility>
24
+
25
+ #include "src/core/lib/promise/activity.h"
26
+ #include "src/core/lib/resource_quota/memory_quota.h"
27
+ #include "src/core/util/grpc_check.h"
28
+ #include "src/core/util/sync.h"
29
+
30
+ namespace grpc_core {
31
+ namespace http2 {} // namespace http2
32
+ } // namespace grpc_core
@@ -0,0 +1,64 @@
1
+ //
2
+ //
3
+ // Copyright 2026 gRPC authors.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+ //
17
+ //
18
+
19
+ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_RECLAIMER_H
20
+ #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_RECLAIMER_H
21
+
22
+ #include <memory>
23
+ #include <optional>
24
+ #include <utility>
25
+
26
+ #include "src/core/lib/promise/activity.h"
27
+ #include "src/core/lib/promise/context.h"
28
+ #include "src/core/lib/promise/loop.h"
29
+ #include "src/core/lib/promise/poll.h"
30
+ #include "src/core/lib/resource_quota/memory_quota.h"
31
+ #include "src/core/util/grpc_check.h"
32
+ #include "src/core/util/ref_counted.h"
33
+ #include "src/core/util/ref_counted_ptr.h"
34
+ #include "src/core/util/sync.h"
35
+ #include "absl/base/thread_annotations.h"
36
+ #include "absl/log/log.h"
37
+ #include "absl/status/status.h"
38
+
39
+ namespace grpc_core {
40
+ namespace http2 {
41
+
42
+ #define GRPC_HTTP2_RECLAIMER_LOG VLOG(2)
43
+
44
+ // PH2 Client and PH2 Server transports provide their own implementation of this
45
+ // interface. Each method maps to the actions that a memory reclamation pass
46
+ // performs on a PH2 transport.
47
+ class ReclaimerInterface {
48
+ public:
49
+ virtual ~ReclaimerInterface() = default;
50
+
51
+ // Benign pass. Closes the transport if it has no active streams.
52
+ // Returns true if the transport close was initiated.
53
+ virtual bool CloseTransportIfIdle() = 0;
54
+
55
+ // Destructive pass. Cancels exactly one active stream, if any exists.
56
+ // Returns true if at least one stream is still active after the
57
+ // cancellation. Returns false otherwise.
58
+ virtual bool CancelOneActiveStream() = 0;
59
+ };
60
+
61
+ } // namespace http2
62
+ } // namespace grpc_core
63
+
64
+ #endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_RECLAIMER_H
@@ -67,12 +67,12 @@ class SecurityFrameHandler final : public RefCounted<SecurityFrameHandler> {
67
67
  auto SendFrameCallbackFactory(
68
68
  std::shared_ptr<grpc_event_engine::experimental::EventEngine>
69
69
  event_engine) {
70
- return [self = this->Ref(), event_engine](SliceBuffer* data) {
71
- event_engine->Run([self, data = std::move(*data)]() mutable {
70
+ return [self = this->Ref(), event_engine](SliceBuffer data) {
71
+ event_engine->Run([self, data = std::move(data)]() mutable {
72
72
  GRPC_HTTP2_SECURITY_FRAME_DLOG << "SecurityFrameHandler::Callback";
73
73
  bool call_wakeup = false;
74
74
  {
75
- MutexLock lock(&self->mutex_);
75
+ MutexLock lock(self->mutex_);
76
76
  // In the rare possibility that we receive 2 quick callbacks in
77
77
  // succession before the transport is able to read the payload_
78
78
  // then we will apply the latest key and discard the old key.
@@ -121,7 +121,7 @@ class SecurityFrameHandler final : public RefCounted<SecurityFrameHandler> {
121
121
  if (endpoint_extension_ != nullptr && payload.Length() > 0) {
122
122
  bool should_receive = false;
123
123
  {
124
- MutexLock lock(&mutex_);
124
+ MutexLock lock(mutex_);
125
125
  should_receive = !transport_closed_;
126
126
  }
127
127
  // Since transport_closed_ is only changed from the transport party, we
@@ -154,7 +154,7 @@ class SecurityFrameHandler final : public RefCounted<SecurityFrameHandler> {
154
154
  if (self->sleep_state_ == SleepState::kTransportClosed) {
155
155
  return Empty{};
156
156
  } else if (self->sleep_state_ == SleepState::kWaitingForFrame) {
157
- MutexLock lock(&self->mutex_);
157
+ MutexLock lock(self->mutex_);
158
158
  if (self->payload_.Length() > 0) {
159
159
  self->sleep_state_ = SleepState::kWriteOneFrame;
160
160
  return Empty{};
@@ -195,7 +195,7 @@ class SecurityFrameHandler final : public RefCounted<SecurityFrameHandler> {
195
195
  endpoint_extension_ != nullptr) {
196
196
  Http2Frame frame = Http2SecurityFrame();
197
197
  {
198
- MutexLock lock(&mutex_);
198
+ MutexLock lock(mutex_);
199
199
  GRPC_DCHECK(payload_.Length() != 0);
200
200
  GRPC_DCHECK(payload_.Length() <= GrpcErrors::kMaxSecurityFrameSize);
201
201
  GRPC_HTTP2_SECURITY_FRAME_DLOG
@@ -216,7 +216,7 @@ class SecurityFrameHandler final : public RefCounted<SecurityFrameHandler> {
216
216
  // Only run on the Transport Party
217
217
  void OnTransportClosed() {
218
218
  GRPC_HTTP2_SECURITY_FRAME_DLOG << "SecurityFrameHandler::OnTransportClosed";
219
- MutexLock lock(&mutex_);
219
+ MutexLock lock(mutex_);
220
220
  transport_closed_ = true;
221
221
  sleep_state_ = SleepState::kTransportClosed;
222
222
  payload_.Clear();
@@ -241,7 +241,7 @@ class SecurityFrameHandler final : public RefCounted<SecurityFrameHandler> {
241
241
  sleep_state_str = "kTransportClosed";
242
242
  break;
243
243
  }
244
- MutexLock lock(&mutex_);
244
+ MutexLock lock(mutex_);
245
245
  // Do not ever LOG the payload. It has a security key.
246
246
  return absl::StrFormat(
247
247
  "SecurityFrameHandler{endpoint_extension_=%s, sleep_state_=%s, "