grpc 1.84.0.pre1 → 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.
- checksums.yaml +4 -4
- data/Makefile +40 -27
- data/include/grpc/event_engine/memory_allocator.h +1 -0
- data/include/grpc/grpc.h +3 -0
- data/include/grpc/grpc_security_constants.h +2 -0
- data/include/grpc/impl/channel_arg_names.h +4 -0
- data/src/core/call/call_filters.h +10 -10
- data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
- data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
- data/src/core/call/filter_fusion.h +15 -15
- data/src/core/call/interception_chain.h +3 -3
- data/src/core/call/metadata_batch.cc +1 -0
- data/src/core/call/metadata_batch.h +45 -33
- data/src/core/call/parsed_metadata.h +3 -3
- data/src/core/call/request_buffer.cc +6 -6
- data/src/core/call/request_buffer.h +1 -1
- data/src/core/channelz/channel_trace.cc +5 -5
- data/src/core/channelz/channel_trace.h +1 -1
- data/src/core/channelz/channelz.cc +9 -9
- data/src/core/channelz/channelz.h +12 -12
- data/src/core/channelz/channelz_registry.cc +10 -10
- data/src/core/channelz/ztrace_collector.h +5 -5
- data/src/core/client_channel/client_channel.cc +4 -4
- data/src/core/client_channel/client_channel_filter.cc +14 -14
- data/src/core/client_channel/global_subchannel_pool.cc +4 -4
- data/src/core/client_channel/subchannel.cc +24 -23
- data/src/core/client_channel/subchannel_stream_client.cc +5 -5
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
- data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
- data/src/core/credentials/call/external/external_account_credentials.cc +4 -4
- data/src/core/credentials/call/regional_access_boundary_fetcher.cc +9 -9
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +4 -4
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +9 -9
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +6 -6
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
- data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +4 -4
- data/src/core/credentials/transport/tls/ssl_utils.cc +10 -0
- data/src/core/credentials/transport/tls/tls_security_connector.cc +10 -10
- data/src/core/credentials/transport/tls/tls_security_connector.h +6 -6
- data/src/core/credentials/transport/tls/tls_utils.h +9 -0
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +15 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -21
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -11
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame.h +9 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -9
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -2
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +16 -18
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +2 -1
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +277 -189
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +40 -17
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +12 -24
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +3 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/read_context.h +96 -3
- data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
- data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
- data/src/core/ext/transport/chttp2/transport/security_frame.h +8 -8
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +17 -9
- data/src/core/ext/transport/chttp2/transport/write_cycle.h +23 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +5 -5
- data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb.h +137 -73
- data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +45 -25
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +6 -6
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +46 -26
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.c +17 -14
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
- data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb.h +185 -23
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.c +20 -12
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +58 -42
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.c +17 -12
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.h +5 -5
- data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +567 -549
- data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
- data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
- data/src/core/filter/ext_proc/ext_proc_filter.cc +1603 -46
- data/src/core/filter/ext_proc/ext_proc_filter.h +55 -22
- data/src/core/filter/ext_proc/ext_proc_messages.cc +106 -51
- data/src/core/filter/ext_proc/ext_proc_messages.h +36 -9
- data/src/core/handshaker/handshaker.cc +4 -4
- data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
- data/src/core/handshaker/security/secure_endpoint.cc +13 -13
- data/src/core/handshaker/security/security_handshaker.cc +6 -6
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
- data/src/core/lib/channel/channel_args.cc +20 -0
- data/src/core/lib/channel/channel_args.h +17 -17
- data/src/core/lib/channel/promise_based_filter.cc +2 -2
- data/src/core/lib/channel/promise_based_filter.h +66 -27
- data/src/core/lib/debug/trace_flags.cc +2 -0
- data/src/core/lib/debug/trace_flags.h +1 -0
- data/src/core/lib/event_engine/ares_resolver.cc +14 -14
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
- data/src/core/lib/event_engine/default_event_engine.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -9
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +16 -14
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +7 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +17 -17
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
- data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
- data/src/core/lib/experiments/experiments.cc +48 -0
- data/src/core/lib/experiments/experiments.h +24 -0
- data/src/core/lib/iomgr/buffer_list.cc +3 -3
- data/src/core/lib/iomgr/buffer_list.h +1 -1
- data/src/core/lib/iomgr/combiner.cc +0 -1
- data/src/core/lib/iomgr/ev_apple.cc +4 -4
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_posix.cc +7 -7
- data/src/core/lib/promise/activity.cc +1 -1
- data/src/core/lib/promise/activity.h +1 -1
- data/src/core/lib/promise/arena_promise.h +7 -7
- data/src/core/lib/promise/detail/promise_factory.h +8 -8
- data/src/core/lib/promise/detail/promise_like.h +4 -4
- data/src/core/lib/promise/inter_activity_latch.h +6 -6
- data/src/core/lib/promise/inter_activity_pipe.h +1 -1
- data/src/core/lib/promise/observable.h +3 -3
- data/src/core/lib/promise/party.cc +1 -1
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resource_quota/arena.h +3 -3
- data/src/core/lib/resource_quota/memory_quota.cc +16 -16
- data/src/core/lib/resource_quota/memory_quota.h +1 -1
- data/src/core/lib/resource_quota/thread_quota.cc +3 -3
- data/src/core/lib/security/authorization/audit_logging.cc +5 -5
- data/src/core/lib/security/authorization/authorization_engine.h +1 -1
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.h +1 -1
- data/src/core/lib/surface/call.cc +8 -7
- data/src/core/lib/surface/call.h +3 -3
- data/src/core/lib/surface/call_utils.h +4 -0
- data/src/core/lib/surface/channel.cc +1 -1
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/init.cc +7 -7
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +2 -2
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
- data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
- data/src/core/load_balancing/autosharding/autosharding.h +78 -0
- data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
- data/src/core/load_balancing/health_check_client.cc +7 -7
- data/src/core/load_balancing/lb_policy.cc +1 -1
- data/src/core/load_balancing/oob_backend_metric.cc +5 -5
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
- data/src/core/load_balancing/ring_hash/ring_hash.cc +109 -37
- data/src/core/load_balancing/rls/rls.cc +23 -17
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +10 -10
- data/src/core/load_balancing/xds/cds.cc +6 -5
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -2
- data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
- data/src/core/mitigation_engine/mitigation_engine.h +28 -4
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
- data/src/core/resolver/dns/dns_resolver.cc +7 -7
- data/src/core/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +38 -30
- data/src/core/server/server.cc +30 -30
- data/src/core/server/server.h +4 -3
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -15
- data/src/core/telemetry/default_tcp_tracer.cc +1 -1
- data/src/core/telemetry/instrument.cc +30 -16
- data/src/core/telemetry/instrument.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
- data/src/core/tsi/ssl_transport_security.cc +46 -13
- data/src/core/tsi/ssl_transport_security.h +7 -0
- data/src/core/tsi/ssl_transport_security_utils.cc +16 -6
- data/src/core/util/event_log.cc +3 -3
- data/src/core/util/http_client/httpcli.cc +5 -5
- data/src/core/util/http_client/httpcli.h +1 -1
- data/src/core/util/json/json_object_loader.cc +7 -0
- data/src/core/util/json/json_object_loader.h +17 -2
- data/src/core/util/latent_see.cc +123 -36
- data/src/core/util/latent_see.h +14 -1
- data/src/core/util/mpscq.cc +1 -1
- data/src/core/util/notification.h +4 -4
- data/src/core/util/sync.h +20 -6
- data/src/core/util/table.h +20 -22
- data/src/core/util/work_serializer.cc +2 -2
- data/src/core/xds/grpc/blackboard.cc +4 -3
- data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
- data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
- data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +2 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +8 -8
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_endpoint.cc +1 -1
- data/src/core/xds/grpc/xds_endpoint_parser.cc +11 -0
- data/src/core/xds/grpc/xds_grpc_service_parser.cc +12 -10
- data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +17 -14
- data/src/core/xds/grpc/xds_matcher.h +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +125 -85
- data/src/core/xds/grpc/xds_transport_grpc.h +19 -4
- data/src/core/xds/xds_client/lrs_client.cc +22 -19
- data/src/core/xds/xds_client/xds_client.cc +19 -16
- data/src/core/xds/xds_client/xds_transport.h +49 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/README.md +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -1
- data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
- data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
- data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
- data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
- data/third_party/abseil-cpp/absl/base/casts.h +135 -2
- data/third_party/abseil-cpp/absl/base/config.h +63 -41
- data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
- data/third_party/abseil-cpp/absl/base/macros.h +76 -37
- data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
- data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
- data/third_party/abseil-cpp/absl/base/options.h +46 -18
- data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
- data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
- data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
- data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
- data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
- data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
- data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
- data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
- data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
- data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
- data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
- data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
- data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
- data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
- data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
- data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
- data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
- data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
- data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
- data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
- data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
- data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
- data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
- data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
- data/third_party/abseil-cpp/absl/log/log.h +2 -2
- data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
- data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
- data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
- data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
- data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
- data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
- data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
- data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
- data/third_party/abseil-cpp/absl/status/status.cc +66 -70
- data/third_party/abseil-cpp/absl/status/status.h +254 -23
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
- data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
- data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
- data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
- data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
- data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
- data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
- data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
- data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
- data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
- data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
- data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
- data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
- data/third_party/abseil-cpp/absl/time/clock.h +3 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
- data/third_party/abseil-cpp/absl/time/format.cc +3 -10
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
- data/third_party/abseil-cpp/absl/time/time.cc +4 -4
- data/third_party/abseil-cpp/absl/time/time.h +14 -13
- data/third_party/abseil-cpp/absl/types/compare.h +64 -63
- data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
- data/third_party/abseil-cpp/absl/types/optional.h +31 -4
- data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
- data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
- data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
- data/third_party/abseil-cpp/absl/types/span.h +67 -38
- data/third_party/abseil-cpp/absl/types/variant.h +75 -18
- data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
- data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
- data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
- data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
- data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
- data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
- data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
- data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
- data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
- data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
- data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
- data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
- data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
- data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
- data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
- data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
- data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
- data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
- data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
- data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
- data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
- data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
- data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
- data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
- data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
- data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
- data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
- data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
- data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
- data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
- data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
- data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
- data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
- data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
- data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
- data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
- data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
- data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
- data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
- data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
- data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
- data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
- data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
- data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
- data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
- data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
- data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
- data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
- data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
- data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
- data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
- data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
- data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
- data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
- data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
- data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
- data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
- data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
- data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
- data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
- data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
- data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
- data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
- data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
- data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
- data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
- data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
- data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
- data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
- data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
- data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
- data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
- data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
- data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
- data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
- data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
- data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
- data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
- data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
- data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
- data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
- data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
- data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
- data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
- data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
- data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
- data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
- data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
- data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
- data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
- data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
- data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
- data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
- data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
- data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
- data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
- data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
- data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
- data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
- data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
- data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
- data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
- data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
- data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
- data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
- data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
- data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
- data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
- data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
- data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
- data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
- data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
- data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
- data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
- data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
- data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
- data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
- data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
- data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
- data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
- data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
- data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
- data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
- data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
- data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
- data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
- data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
- data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
- data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
- data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
- data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
- data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
- data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
- data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
- data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
- data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
- data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
- data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
- data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
- data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
- data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
- data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
- data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
- data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
- data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
- data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
- data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
- data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
- data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
- data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
- data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
- data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
- data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
- data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
- data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
- data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
- data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
- data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
- data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
- data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
- data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
- data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
- data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
- data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
- data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
- data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
- data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
- data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
- data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
- data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
- data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
- data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
- data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
- data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
- data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
- data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
- data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
- data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
- data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
- data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
- data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
- data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
- data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
- data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
- data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
- data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
- data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
- data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
- data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
- data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
- data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
- data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
- data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
- data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
- data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
- data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
- data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
- data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
- data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
- data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
- data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
- data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
- data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
- data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
- data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
- data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
- data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
- data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
- data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
- data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
- data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
- data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
- data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
- data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
- data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
- data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
- data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
- data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
- data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
- data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
- data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
- data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
- data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
- data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
- data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
- data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
- data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
- data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
- data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
- data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
- data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
- data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
- data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
- data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
- data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
- data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
- data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
- data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
- data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
- data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
- data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
- data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
- data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
- data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
- data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
- data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
- data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
- data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
- data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
- data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
- data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
- data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
- data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
- data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
- data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
- data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
- data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
- data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
- data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
- data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
- data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
- data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
- data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
- data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
- data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
- data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
- data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
- data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
- data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
- data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
- data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
- data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
- data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
- data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
- data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
- data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
- data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
- data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
- data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
- data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
- data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
- data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
- data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
- data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
- data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
- data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
- data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
- data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
- data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
- data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
- data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
- data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
- data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
- data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
- data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
- data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
- data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
- data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
- data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
- data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
- data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
- data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
- data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
- data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
- data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
- data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
- data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
- data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
- data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
- data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
- data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
- data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
- data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
- data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
- data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
- data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
- data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
- data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
- data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
- data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
- data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
- data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
- data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
- data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
- data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
- data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
- data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
- data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
- data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
- data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
- data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
- data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
- data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
- data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
- data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
- data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
- data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
- data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
- data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
- data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
- data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
- data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
- data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
- data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
- data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
- data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
- data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
- data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
- data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
- data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
- data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
- data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
- data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
- data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
- data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
- data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
- data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
- data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
- data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
- data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
- data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
- data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
- data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
- data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
- data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
- data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
- data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
- data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
- data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
- metadata +77 -52
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
- data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -157
- data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -72
- data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
- data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
- data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
- data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
- data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
- data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
- data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
- data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
- data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
- data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
- data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
- data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
- data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
- data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
- 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
|
|
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(
|
|
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
|
|
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
|
-
|
|
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
|
|
71
|
-
event_engine->Run([self, data = std::move(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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, "
|