grpc 1.53.0 → 1.54.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +80 -66
- data/include/grpc/event_engine/event_engine.h +30 -14
- data/include/grpc/grpc_security.h +4 -0
- data/include/grpc/impl/grpc_types.h +11 -2
- data/include/grpc/support/port_platform.h +4 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
- data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
- data/src/core/ext/filters/client_channel/client_channel.h +131 -173
- data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
- data/src/core/ext/filters/client_channel/config_selector.h +4 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
- data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
- data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
- data/src/core/ext/gcp/metadata_query.cc +137 -0
- data/src/core/ext/gcp/metadata_query.h +87 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +5 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +149 -60
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +118 -222
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +295 -113
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +466 -273
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +7 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +9 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +9 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
- data/src/core/ext/xds/xds_client_stats.cc +29 -15
- data/src/core/ext/xds/xds_client_stats.h +24 -20
- data/src/core/ext/xds/xds_endpoint.cc +5 -2
- data/src/core/ext/xds/xds_endpoint.h +9 -1
- data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
- data/src/core/{ext/filters/client_channel/resolver/dns/dns_resolver_selection.h → lib/backoff/random_early_detection.cc} +14 -12
- data/src/core/lib/backoff/random_early_detection.h +59 -0
- data/src/core/lib/channel/call_finalization.h +1 -1
- data/src/core/lib/channel/call_tracer.cc +51 -0
- data/src/core/lib/channel/call_tracer.h +101 -38
- data/src/core/lib/channel/connected_channel.cc +483 -1050
- data/src/core/lib/channel/context.h +8 -1
- data/src/core/lib/channel/promise_based_filter.cc +106 -42
- data/src/core/lib/channel/promise_based_filter.h +27 -13
- data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
- data/src/core/lib/config/config_vars.cc +151 -0
- data/src/core/lib/config/config_vars.h +127 -0
- data/src/core/lib/config/config_vars_non_generated.cc +51 -0
- data/src/core/lib/config/load_config.cc +66 -0
- data/src/core/lib/config/load_config.h +49 -0
- data/src/core/lib/debug/trace.cc +5 -6
- data/src/core/lib/debug/trace.h +0 -5
- data/src/core/lib/event_engine/event_engine.cc +37 -2
- data/src/core/lib/event_engine/handle_containers.h +7 -22
- data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
- data/src/core/lib/event_engine/resolved_address.cc +2 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
- data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
- data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
- data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
- data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
- data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
- data/src/core/lib/experiments/config.cc +3 -10
- data/src/core/lib/experiments/experiments.cc +7 -0
- data/src/core/lib/experiments/experiments.h +9 -1
- data/src/core/lib/gpr/log.cc +15 -28
- data/src/core/lib/gprpp/fork.cc +8 -14
- data/src/core/lib/gprpp/orphanable.h +4 -3
- data/src/core/lib/gprpp/per_cpu.h +9 -3
- data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
- data/src/core/lib/gprpp/ref_counted.h +33 -34
- data/src/core/lib/gprpp/thd.h +16 -0
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/gprpp/time.h +4 -4
- data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
- data/src/core/lib/iomgr/endpoint_pair.h +2 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/ev_posix.cc +13 -53
- data/src/core/lib/iomgr/ev_posix.h +0 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
- data/src/core/lib/iomgr/iomgr.cc +4 -8
- data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
- data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +0 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
- data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
- data/src/core/lib/iomgr/tcp_windows.cc +12 -8
- data/src/core/lib/load_balancing/lb_policy.cc +9 -13
- data/src/core/lib/load_balancing/lb_policy.h +4 -2
- data/src/core/lib/promise/activity.cc +22 -6
- data/src/core/lib/promise/activity.h +61 -24
- data/src/core/lib/promise/cancel_callback.h +77 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -1
- data/src/core/lib/promise/detail/promise_factory.h +4 -0
- data/src/core/lib/promise/for_each.h +176 -0
- data/src/core/lib/promise/if.h +9 -0
- data/src/core/lib/promise/interceptor_list.h +23 -2
- data/src/core/lib/promise/latch.h +89 -3
- data/src/core/lib/promise/loop.h +13 -9
- data/src/core/lib/promise/map.h +7 -0
- data/src/core/lib/promise/party.cc +286 -0
- data/src/core/lib/promise/party.h +499 -0
- data/src/core/lib/promise/pipe.h +197 -57
- data/src/core/lib/promise/poll.h +48 -0
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/resource_quota/arena.cc +19 -3
- data/src/core/lib/resource_quota/arena.h +119 -5
- data/src/core/lib/resource_quota/memory_quota.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
- data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
- data/src/core/lib/slice/slice.cc +1 -1
- data/src/core/lib/surface/builtins.cc +2 -0
- data/src/core/lib/surface/call.cc +926 -1024
- data/src/core/lib/surface/call.h +10 -0
- data/src/core/lib/surface/lame_client.cc +1 -0
- data/src/core/lib/surface/validate_metadata.cc +43 -42
- data/src/core/lib/surface/validate_metadata.h +9 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +179 -0
- data/src/core/lib/transport/batch_builder.h +468 -0
- data/src/core/lib/transport/bdp_estimator.cc +7 -7
- data/src/core/lib/transport/bdp_estimator.h +10 -6
- data/src/core/lib/transport/custom_metadata.h +30 -0
- data/src/core/lib/transport/metadata_batch.cc +9 -6
- data/src/core/lib/transport/metadata_batch.h +168 -18
- data/src/core/lib/transport/parsed_metadata.h +19 -9
- data/src/core/lib/transport/timeout_encoding.cc +6 -1
- data/src/core/lib/transport/transport.cc +30 -2
- data/src/core/lib/transport/transport.h +70 -14
- data/src/core/lib/transport/transport_impl.h +7 -0
- data/src/core/lib/transport/transport_op_string.cc +52 -42
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/base/config.h +1 -1
- data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
- data/third_party/abseil-cpp/absl/flags/config.h +68 -0
- data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
- data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
- data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
- data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
- data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
- data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
- data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
- data/third_party/boringssl-with-bazel/err_data.c +728 -712
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
- data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
- data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
- data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
- metadata +105 -70
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
- data/src/core/lib/gprpp/global_config.h +0 -93
- data/src/core/lib/gprpp/global_config_env.cc +0 -140
- data/src/core/lib/gprpp/global_config_env.h +0 -133
- data/src/core/lib/gprpp/global_config_generic.h +0 -40
- data/src/core/lib/promise/intra_activity_waiter.h +0 -55
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
- data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
- data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
- data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
- /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
- /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
- /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
- /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
- /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
- /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
- /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -0,0 +1,370 @@
|
|
1
|
+
// Copyright 2023 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#include <grpc/support/port_platform.h>
|
15
|
+
|
16
|
+
#ifdef GPR_WINDOWS
|
17
|
+
|
18
|
+
#include "absl/status/status.h"
|
19
|
+
#include "absl/strings/str_format.h"
|
20
|
+
|
21
|
+
#include "src/core/lib/event_engine/tcp_socket_utils.h"
|
22
|
+
#include "src/core/lib/event_engine/trace.h"
|
23
|
+
#include "src/core/lib/event_engine/windows/iocp.h"
|
24
|
+
#include "src/core/lib/event_engine/windows/win_socket.h"
|
25
|
+
#include "src/core/lib/event_engine/windows/windows_endpoint.h"
|
26
|
+
#include "src/core/lib/event_engine/windows/windows_listener.h"
|
27
|
+
#include "src/core/lib/gprpp/crash.h"
|
28
|
+
#include "src/core/lib/gprpp/sync.h"
|
29
|
+
#include "src/core/lib/iomgr/error.h"
|
30
|
+
|
31
|
+
namespace grpc_event_engine {
|
32
|
+
namespace experimental {
|
33
|
+
|
34
|
+
// ---- SinglePortSocketListener::AsyncIOState ----
|
35
|
+
|
36
|
+
WindowsEventEngineListener::SinglePortSocketListener::AsyncIOState::
|
37
|
+
AsyncIOState(SinglePortSocketListener* port_listener,
|
38
|
+
std::unique_ptr<WinSocket> listener_socket)
|
39
|
+
: port_listener(port_listener),
|
40
|
+
listener_socket(std::move(listener_socket)) {}
|
41
|
+
|
42
|
+
WindowsEventEngineListener::SinglePortSocketListener::AsyncIOState::
|
43
|
+
~AsyncIOState() {
|
44
|
+
closesocket(accept_socket);
|
45
|
+
}
|
46
|
+
|
47
|
+
void WindowsEventEngineListener::SinglePortSocketListener::
|
48
|
+
OnAcceptCallbackWrapper::Run() {
|
49
|
+
GPR_ASSERT(io_state_ != nullptr);
|
50
|
+
grpc_core::ReleasableMutexLock lock(&io_state_->mu);
|
51
|
+
if (io_state_->listener_socket->IsShutdown()) {
|
52
|
+
GRPC_EVENT_ENGINE_TRACE(
|
53
|
+
"SinglePortSocketListener::%p listener socket is shut down. Shutting "
|
54
|
+
"down listener.",
|
55
|
+
io_state_->port_listener);
|
56
|
+
lock.Release();
|
57
|
+
io_state_.reset();
|
58
|
+
return;
|
59
|
+
}
|
60
|
+
io_state_->port_listener->OnAcceptCallbackLocked();
|
61
|
+
}
|
62
|
+
|
63
|
+
void WindowsEventEngineListener::SinglePortSocketListener::
|
64
|
+
OnAcceptCallbackWrapper::Prime(std::shared_ptr<AsyncIOState> io_state) {
|
65
|
+
io_state_ = std::move(io_state);
|
66
|
+
}
|
67
|
+
|
68
|
+
// ---- SinglePortSocketListener ----
|
69
|
+
|
70
|
+
WindowsEventEngineListener::SinglePortSocketListener::
|
71
|
+
~SinglePortSocketListener() {
|
72
|
+
grpc_core::MutexLock lock(&io_state_->mu);
|
73
|
+
io_state_->listener_socket->Shutdown(DEBUG_LOCATION,
|
74
|
+
"~SinglePortSocketListener");
|
75
|
+
GRPC_EVENT_ENGINE_TRACE("~SinglePortSocketListener::%p", this);
|
76
|
+
}
|
77
|
+
|
78
|
+
absl::StatusOr<
|
79
|
+
std::unique_ptr<WindowsEventEngineListener::SinglePortSocketListener>>
|
80
|
+
WindowsEventEngineListener::SinglePortSocketListener::Create(
|
81
|
+
WindowsEventEngineListener* listener, SOCKET sock,
|
82
|
+
EventEngine::ResolvedAddress addr) {
|
83
|
+
// We need to grab the AcceptEx pointer for that port, as it may be
|
84
|
+
// interface-dependent. We'll cache it to avoid doing that again.
|
85
|
+
GUID guid = WSAID_ACCEPTEX;
|
86
|
+
DWORD ioctl_num_bytes;
|
87
|
+
LPFN_ACCEPTEX AcceptEx;
|
88
|
+
int status =
|
89
|
+
WSAIoctl(sock, SIO_GET_EXTENSION_FUNCTION_POINTER, &guid, sizeof(guid),
|
90
|
+
&AcceptEx, sizeof(AcceptEx), &ioctl_num_bytes, NULL, NULL);
|
91
|
+
if (status != 0) {
|
92
|
+
auto error = GRPC_WSA_ERROR(WSAGetLastError(), "WSASocket");
|
93
|
+
closesocket(sock);
|
94
|
+
return error;
|
95
|
+
}
|
96
|
+
auto result = SinglePortSocketListener::PrepareListenerSocket(sock, addr);
|
97
|
+
GRPC_RETURN_IF_ERROR(result.status());
|
98
|
+
GPR_ASSERT(result->port >= 0);
|
99
|
+
// Using `new` to access non-public constructor
|
100
|
+
return absl::WrapUnique(new SinglePortSocketListener(
|
101
|
+
listener, AcceptEx, /*win_socket=*/listener->iocp_->Watch(sock),
|
102
|
+
result->port, result->hostbyname));
|
103
|
+
}
|
104
|
+
|
105
|
+
absl::Status WindowsEventEngineListener::SinglePortSocketListener::Start() {
|
106
|
+
grpc_core::MutexLock lock(&io_state_->mu);
|
107
|
+
return StartLocked();
|
108
|
+
}
|
109
|
+
|
110
|
+
absl::Status
|
111
|
+
WindowsEventEngineListener::SinglePortSocketListener::StartLocked() {
|
112
|
+
SOCKET accept_socket = WSASocket(AF_INET6, SOCK_STREAM, IPPROTO_TCP, NULL, 0,
|
113
|
+
IOCP::GetDefaultSocketFlags());
|
114
|
+
if (accept_socket == INVALID_SOCKET) {
|
115
|
+
return GRPC_WSA_ERROR(WSAGetLastError(), "WSASocket");
|
116
|
+
}
|
117
|
+
auto fail = [&](absl::Status error) -> absl::Status {
|
118
|
+
if (accept_socket != INVALID_SOCKET) closesocket(accept_socket);
|
119
|
+
return error;
|
120
|
+
};
|
121
|
+
auto error = PrepareSocket(accept_socket);
|
122
|
+
if (!error.ok()) return fail(error);
|
123
|
+
// Start the "accept" asynchronously.
|
124
|
+
DWORD addrlen = sizeof(sockaddr_in6) + 16;
|
125
|
+
DWORD bytes_received = 0;
|
126
|
+
int success =
|
127
|
+
AcceptEx(io_state_->listener_socket->raw_socket(), accept_socket,
|
128
|
+
addresses_, 0, addrlen, addrlen, &bytes_received,
|
129
|
+
io_state_->listener_socket->read_info()->overlapped());
|
130
|
+
// It is possible to get an accept immediately without delay. However, we
|
131
|
+
// will still get an IOCP notification for it. So let's just ignore it.
|
132
|
+
if (success != 0) {
|
133
|
+
int last_error = WSAGetLastError();
|
134
|
+
if (last_error != ERROR_IO_PENDING) {
|
135
|
+
return fail(GRPC_WSA_ERROR(last_error, "AcceptEx"));
|
136
|
+
}
|
137
|
+
}
|
138
|
+
// We're ready to do the accept. Calling NotifyOnRead may immediately process
|
139
|
+
// an accept that happened in the meantime.
|
140
|
+
io_state_->accept_socket = accept_socket;
|
141
|
+
io_state_->listener_socket->NotifyOnRead(&io_state_->on_accept_cb);
|
142
|
+
GRPC_EVENT_ENGINE_TRACE(
|
143
|
+
"SinglePortSocketListener::%p listening. listener_socket::%p", this,
|
144
|
+
io_state_->listener_socket.get());
|
145
|
+
return absl::OkStatus();
|
146
|
+
}
|
147
|
+
|
148
|
+
void WindowsEventEngineListener::SinglePortSocketListener::
|
149
|
+
OnAcceptCallbackLocked() {
|
150
|
+
auto close_socket_and_restart =
|
151
|
+
[&](bool do_close_socket = true)
|
152
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(io_state_->mu) {
|
153
|
+
if (do_close_socket) closesocket(io_state_->accept_socket);
|
154
|
+
io_state_->accept_socket = INVALID_SOCKET;
|
155
|
+
GPR_ASSERT(GRPC_LOG_IF_ERROR("SinglePortSocketListener::Start",
|
156
|
+
StartLocked()));
|
157
|
+
};
|
158
|
+
const auto& overlapped_result =
|
159
|
+
io_state_->listener_socket->read_info()->result();
|
160
|
+
if (overlapped_result.wsa_error != 0) {
|
161
|
+
gpr_log(GPR_ERROR, "%s",
|
162
|
+
GRPC_WSA_ERROR(overlapped_result.wsa_error,
|
163
|
+
"Skipping on_accept due to error")
|
164
|
+
.ToString()
|
165
|
+
.c_str());
|
166
|
+
return close_socket_and_restart();
|
167
|
+
}
|
168
|
+
SOCKET tmp_listener_socket = io_state_->listener_socket->raw_socket();
|
169
|
+
int err =
|
170
|
+
setsockopt(io_state_->accept_socket, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
|
171
|
+
reinterpret_cast<char*>(&tmp_listener_socket),
|
172
|
+
sizeof(tmp_listener_socket));
|
173
|
+
if (err != 0) {
|
174
|
+
gpr_log(GPR_ERROR, "%s",
|
175
|
+
GRPC_WSA_ERROR(WSAGetLastError(), "setsockopt").ToString().c_str());
|
176
|
+
return close_socket_and_restart();
|
177
|
+
}
|
178
|
+
EventEngine::ResolvedAddress peer_address;
|
179
|
+
int peer_name_len = EventEngine::ResolvedAddress::MAX_SIZE_BYTES;
|
180
|
+
err = getpeername(io_state_->accept_socket,
|
181
|
+
const_cast<sockaddr*>(peer_address.address()),
|
182
|
+
&peer_name_len);
|
183
|
+
if (err != 0) {
|
184
|
+
gpr_log(
|
185
|
+
GPR_ERROR, "%s",
|
186
|
+
GRPC_WSA_ERROR(WSAGetLastError(), "getpeername").ToString().c_str());
|
187
|
+
return close_socket_and_restart();
|
188
|
+
}
|
189
|
+
peer_address =
|
190
|
+
EventEngine::ResolvedAddress(peer_address.address(), peer_name_len);
|
191
|
+
auto addr_uri = ResolvedAddressToURI(peer_address);
|
192
|
+
std::string peer_name = "unknown";
|
193
|
+
if (!addr_uri.ok()) {
|
194
|
+
// TODO(hork): test an early exit/restart here with end2end tests
|
195
|
+
gpr_log(GPR_ERROR, "invalid peer name: %s",
|
196
|
+
addr_uri.status().ToString().c_str());
|
197
|
+
} else {
|
198
|
+
peer_name = *addr_uri;
|
199
|
+
}
|
200
|
+
auto endpoint = std::make_unique<WindowsEndpoint>(
|
201
|
+
peer_address, listener_->iocp_->Watch(io_state_->accept_socket),
|
202
|
+
listener_->memory_allocator_factory_->CreateMemoryAllocator(
|
203
|
+
absl::StrFormat("listener endpoint %s", peer_name)),
|
204
|
+
listener_->config_, listener_->executor_, listener_->engine_);
|
205
|
+
listener_->accept_cb_(
|
206
|
+
std::move(endpoint),
|
207
|
+
listener_->memory_allocator_factory_->CreateMemoryAllocator(
|
208
|
+
absl::StrFormat("listener accept cb for %s", peer_name)));
|
209
|
+
close_socket_and_restart(/*do_close_socket=*/false);
|
210
|
+
}
|
211
|
+
|
212
|
+
WindowsEventEngineListener::SinglePortSocketListener::SinglePortSocketListener(
|
213
|
+
WindowsEventEngineListener* listener, LPFN_ACCEPTEX AcceptEx,
|
214
|
+
std::unique_ptr<WinSocket> listener_socket, int port,
|
215
|
+
EventEngine::ResolvedAddress hostbyname)
|
216
|
+
: AcceptEx(AcceptEx),
|
217
|
+
listener_(listener),
|
218
|
+
io_state_(
|
219
|
+
std::make_shared<AsyncIOState>(this, std::move(listener_socket))),
|
220
|
+
port_(port),
|
221
|
+
listener_sockname_(hostbyname) {
|
222
|
+
io_state_->on_accept_cb.Prime(io_state_);
|
223
|
+
}
|
224
|
+
|
225
|
+
absl::StatusOr<WindowsEventEngineListener::SinglePortSocketListener::
|
226
|
+
PrepareListenerSocketResult>
|
227
|
+
WindowsEventEngineListener::SinglePortSocketListener::PrepareListenerSocket(
|
228
|
+
SOCKET sock, const EventEngine::ResolvedAddress& addr) {
|
229
|
+
auto fail = [&](absl::Status error) -> absl::Status {
|
230
|
+
GPR_ASSERT(!error.ok());
|
231
|
+
auto addr_uri = ResolvedAddressToURI(addr);
|
232
|
+
error = grpc_error_set_int(
|
233
|
+
grpc_error_set_str(
|
234
|
+
GRPC_ERROR_CREATE_REFERENCING("Failed to prepare server socket",
|
235
|
+
&error, 1),
|
236
|
+
grpc_core::StatusStrProperty::kTargetAddress,
|
237
|
+
addr_uri.ok() ? *addr_uri : addr_uri.status().ToString()),
|
238
|
+
grpc_core::StatusIntProperty::kFd, static_cast<intptr_t>(sock));
|
239
|
+
if (sock != INVALID_SOCKET) closesocket(sock);
|
240
|
+
return error;
|
241
|
+
};
|
242
|
+
auto error = PrepareSocket(sock);
|
243
|
+
if (!error.ok()) return fail(error);
|
244
|
+
if (bind(sock, addr.address(), addr.size()) == SOCKET_ERROR) {
|
245
|
+
return fail(GRPC_WSA_ERROR(WSAGetLastError(), "bind"));
|
246
|
+
}
|
247
|
+
if (listen(sock, SOMAXCONN) == SOCKET_ERROR) {
|
248
|
+
return fail(GRPC_WSA_ERROR(WSAGetLastError(), "listen"));
|
249
|
+
}
|
250
|
+
int sockname_temp_len = sizeof(struct sockaddr_storage);
|
251
|
+
EventEngine::ResolvedAddress sockname_temp;
|
252
|
+
if (getsockname(sock, const_cast<sockaddr*>(sockname_temp.address()),
|
253
|
+
&sockname_temp_len) == SOCKET_ERROR) {
|
254
|
+
return fail(GRPC_WSA_ERROR(WSAGetLastError(), "getsockname"));
|
255
|
+
}
|
256
|
+
sockname_temp =
|
257
|
+
EventEngine::ResolvedAddress(sockname_temp.address(), sockname_temp_len);
|
258
|
+
return PrepareListenerSocketResult{ResolvedAddressGetPort(sockname_temp),
|
259
|
+
sockname_temp};
|
260
|
+
}
|
261
|
+
|
262
|
+
// ---- WindowsEventEngineListener ----
|
263
|
+
|
264
|
+
WindowsEventEngineListener::WindowsEventEngineListener(
|
265
|
+
IOCP* iocp, AcceptCallback accept_cb,
|
266
|
+
absl::AnyInvocable<void(absl::Status)> on_shutdown,
|
267
|
+
std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory,
|
268
|
+
std::shared_ptr<EventEngine> engine, Executor* executor,
|
269
|
+
const EndpointConfig& config)
|
270
|
+
: iocp_(iocp),
|
271
|
+
config_(config),
|
272
|
+
engine_(std::move(engine)),
|
273
|
+
executor_(executor),
|
274
|
+
memory_allocator_factory_(std::move(memory_allocator_factory)),
|
275
|
+
accept_cb_(std::move(accept_cb)),
|
276
|
+
on_shutdown_(std::move(on_shutdown)) {}
|
277
|
+
|
278
|
+
WindowsEventEngineListener::~WindowsEventEngineListener() {
|
279
|
+
GRPC_EVENT_ENGINE_TRACE(
|
280
|
+
"%s", absl::StrFormat("~WindowsEventEngineListener::%p", this).c_str());
|
281
|
+
ShutdownListeners();
|
282
|
+
on_shutdown_(absl::OkStatus());
|
283
|
+
}
|
284
|
+
|
285
|
+
absl::StatusOr<int> WindowsEventEngineListener::Bind(
|
286
|
+
const EventEngine::ResolvedAddress& addr) {
|
287
|
+
if (started_.load()) {
|
288
|
+
return absl::FailedPreconditionError(
|
289
|
+
absl::StrFormat("WindowsEventEngineListener::%p is already started, "
|
290
|
+
"ports can no longer be bound",
|
291
|
+
this));
|
292
|
+
}
|
293
|
+
int out_port = ResolvedAddressGetPort(addr);
|
294
|
+
EventEngine::ResolvedAddress out_addr(addr);
|
295
|
+
EventEngine::ResolvedAddress tmp_addr;
|
296
|
+
// Check if this is a wildcard port, and if so, try to keep the port the same
|
297
|
+
// as some previously created listener.
|
298
|
+
if (out_port == 0) {
|
299
|
+
grpc_core::MutexLock lock(&port_listeners_mu_);
|
300
|
+
for (const auto& port_listener : port_listeners_) {
|
301
|
+
tmp_addr = port_listener->listener_sockname();
|
302
|
+
out_port = ResolvedAddressGetPort(tmp_addr);
|
303
|
+
if (out_port > 0) {
|
304
|
+
ResolvedAddressSetPort(out_addr, out_port);
|
305
|
+
break;
|
306
|
+
}
|
307
|
+
}
|
308
|
+
}
|
309
|
+
if (ResolvedAddressToV4Mapped(out_addr, &tmp_addr)) {
|
310
|
+
out_addr = tmp_addr;
|
311
|
+
}
|
312
|
+
// Treat :: or 0.0.0.0 as a family-agnostic wildcard.
|
313
|
+
if (ResolvedAddressIsWildcard(out_addr)) {
|
314
|
+
out_addr = ResolvedAddressMakeWild6(out_port);
|
315
|
+
}
|
316
|
+
// open the socket
|
317
|
+
SOCKET sock = WSASocket(AF_INET6, SOCK_STREAM, IPPROTO_TCP, nullptr, 0,
|
318
|
+
IOCP::GetDefaultSocketFlags());
|
319
|
+
if (sock == INVALID_SOCKET) {
|
320
|
+
auto error = GRPC_WSA_ERROR(WSAGetLastError(), "WSASocket");
|
321
|
+
return GRPC_ERROR_CREATE_REFERENCING("Failed to add port to server", &error,
|
322
|
+
1);
|
323
|
+
}
|
324
|
+
auto port_listener = AddSinglePortSocketListener(sock, out_addr);
|
325
|
+
GRPC_RETURN_IF_ERROR(port_listener.status());
|
326
|
+
return (*port_listener)->port();
|
327
|
+
}
|
328
|
+
|
329
|
+
absl::Status WindowsEventEngineListener::Start() {
|
330
|
+
GPR_ASSERT(!started_.exchange(true));
|
331
|
+
grpc_core::MutexLock lock(&port_listeners_mu_);
|
332
|
+
for (auto& port_listener : port_listeners_) {
|
333
|
+
GRPC_RETURN_IF_ERROR(port_listener->Start());
|
334
|
+
}
|
335
|
+
return absl::OkStatus();
|
336
|
+
}
|
337
|
+
|
338
|
+
void WindowsEventEngineListener::ShutdownListeners() {
|
339
|
+
grpc_core::MutexLock lock(&port_listeners_mu_);
|
340
|
+
if (std::exchange(listeners_shutdown_, true)) return;
|
341
|
+
// Shut down each port listener before destroying this EventEngine::Listener
|
342
|
+
for (auto& port_listener : port_listeners_) {
|
343
|
+
port_listener.reset();
|
344
|
+
}
|
345
|
+
}
|
346
|
+
|
347
|
+
absl::StatusOr<WindowsEventEngineListener::SinglePortSocketListener*>
|
348
|
+
WindowsEventEngineListener::AddSinglePortSocketListener(
|
349
|
+
SOCKET sock, EventEngine::ResolvedAddress addr) {
|
350
|
+
auto single_port_listener =
|
351
|
+
SinglePortSocketListener::Create(this, sock, addr);
|
352
|
+
GRPC_RETURN_IF_ERROR(single_port_listener.status());
|
353
|
+
auto* single_port_listener_ptr = single_port_listener->get();
|
354
|
+
grpc_core::MutexLock lock(&port_listeners_mu_);
|
355
|
+
port_listeners_.emplace_back(std::move(*single_port_listener));
|
356
|
+
if (started_.load()) {
|
357
|
+
gpr_log(GPR_ERROR,
|
358
|
+
"WindowsEventEngineListener::%p Bind was called concurrently while "
|
359
|
+
"the Listener was starting. This is invalid usage, all ports must "
|
360
|
+
"be bound before the Listener is started.",
|
361
|
+
this);
|
362
|
+
GRPC_RETURN_IF_ERROR(single_port_listener_ptr->Start());
|
363
|
+
}
|
364
|
+
return single_port_listener_ptr;
|
365
|
+
}
|
366
|
+
|
367
|
+
} // namespace experimental
|
368
|
+
} // namespace grpc_event_engine
|
369
|
+
|
370
|
+
#endif // GPR_WINDOWS
|
@@ -0,0 +1,155 @@
|
|
1
|
+
// Copyright 2023 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_WINDOWS_WINDOWS_LISTENER_H
|
15
|
+
#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_WINDOWS_WINDOWS_LISTENER_H
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#ifdef GPR_WINDOWS
|
20
|
+
|
21
|
+
#include <list>
|
22
|
+
|
23
|
+
#include "absl/base/thread_annotations.h"
|
24
|
+
#include "absl/status/statusor.h"
|
25
|
+
|
26
|
+
#include <grpc/event_engine/event_engine.h>
|
27
|
+
#include <grpc/event_engine/memory_allocator.h>
|
28
|
+
|
29
|
+
#include "src/core/lib/event_engine/common_closures.h"
|
30
|
+
#include "src/core/lib/event_engine/windows/iocp.h"
|
31
|
+
#include "src/core/lib/gprpp/sync.h"
|
32
|
+
|
33
|
+
namespace grpc_event_engine {
|
34
|
+
namespace experimental {
|
35
|
+
|
36
|
+
class WindowsEventEngineListener : public EventEngine::Listener {
|
37
|
+
public:
|
38
|
+
WindowsEventEngineListener(
|
39
|
+
IOCP* iocp, AcceptCallback accept_cb,
|
40
|
+
absl::AnyInvocable<void(absl::Status)> on_shutdown,
|
41
|
+
std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory,
|
42
|
+
std::shared_ptr<EventEngine> engine, Executor* executor_,
|
43
|
+
const EndpointConfig& config);
|
44
|
+
~WindowsEventEngineListener() override;
|
45
|
+
absl::StatusOr<int> Bind(const EventEngine::ResolvedAddress& addr) override;
|
46
|
+
absl::Status Start() override;
|
47
|
+
// TODO(hork): this may only be needed for the iomgr shim, to accommodate
|
48
|
+
// calls to grpc_tcp_server_shutdown_listeners
|
49
|
+
void ShutdownListeners();
|
50
|
+
|
51
|
+
private:
|
52
|
+
/// Responsible for listening on a single port.
|
53
|
+
class SinglePortSocketListener {
|
54
|
+
public:
|
55
|
+
~SinglePortSocketListener();
|
56
|
+
// This factory will create a bound, listening WinSocket, registered with
|
57
|
+
// the listener's IOCP poller.
|
58
|
+
static absl::StatusOr<std::unique_ptr<SinglePortSocketListener>> Create(
|
59
|
+
WindowsEventEngineListener* listener, SOCKET sock,
|
60
|
+
EventEngine::ResolvedAddress addr);
|
61
|
+
|
62
|
+
// Two-stage initialization, allows creation of all bound sockets before the
|
63
|
+
// listener is started.
|
64
|
+
absl::Status Start();
|
65
|
+
absl::Status StartLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(io_state_->mu);
|
66
|
+
|
67
|
+
// Accessor methods
|
68
|
+
EventEngine::ResolvedAddress listener_sockname() {
|
69
|
+
return listener_sockname_;
|
70
|
+
};
|
71
|
+
int port() { return port_; }
|
72
|
+
|
73
|
+
private:
|
74
|
+
struct AsyncIOState;
|
75
|
+
|
76
|
+
class OnAcceptCallbackWrapper : public EventEngine::Closure {
|
77
|
+
public:
|
78
|
+
void Run() override;
|
79
|
+
void Prime(std::shared_ptr<AsyncIOState> io_state);
|
80
|
+
|
81
|
+
private:
|
82
|
+
std::shared_ptr<AsyncIOState> io_state_;
|
83
|
+
};
|
84
|
+
|
85
|
+
// A class to manage the data that must outlive the Endpoint.
|
86
|
+
//
|
87
|
+
// Once a listener is done and destroyed, there still may be overlapped
|
88
|
+
// operations pending. To clean up safely, this data must outlive the
|
89
|
+
// Listener, and be destroyed asynchronously when all pending overlapped
|
90
|
+
// events are complete.
|
91
|
+
struct AsyncIOState {
|
92
|
+
AsyncIOState(SinglePortSocketListener* port_listener,
|
93
|
+
std::unique_ptr<WinSocket> listener_socket);
|
94
|
+
~AsyncIOState();
|
95
|
+
SinglePortSocketListener* const port_listener;
|
96
|
+
OnAcceptCallbackWrapper on_accept_cb;
|
97
|
+
// Synchronize accept handling on the same socket.
|
98
|
+
grpc_core::Mutex mu;
|
99
|
+
// This will hold the socket for the next accept.
|
100
|
+
SOCKET accept_socket ABSL_GUARDED_BY(mu) = INVALID_SOCKET;
|
101
|
+
// The listener winsocket.
|
102
|
+
std::unique_ptr<WinSocket> listener_socket ABSL_GUARDED_BY(mu);
|
103
|
+
};
|
104
|
+
|
105
|
+
SinglePortSocketListener(WindowsEventEngineListener* listener,
|
106
|
+
LPFN_ACCEPTEX AcceptEx,
|
107
|
+
std::unique_ptr<WinSocket> listener_socket,
|
108
|
+
int port, EventEngine::ResolvedAddress hostbyname);
|
109
|
+
|
110
|
+
// Bind a recently-created socket for listening
|
111
|
+
struct PrepareListenerSocketResult {
|
112
|
+
int port;
|
113
|
+
EventEngine::ResolvedAddress hostbyname;
|
114
|
+
};
|
115
|
+
static absl::StatusOr<PrepareListenerSocketResult> PrepareListenerSocket(
|
116
|
+
SOCKET sock, const EventEngine::ResolvedAddress& addr);
|
117
|
+
|
118
|
+
void OnAcceptCallbackLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(io_state_->mu);
|
119
|
+
|
120
|
+
// The cached AcceptEx for that port.
|
121
|
+
LPFN_ACCEPTEX AcceptEx;
|
122
|
+
// This seemingly magic number comes from AcceptEx's documentation. each
|
123
|
+
// address buffer needs to have at least 16 more bytes at their end.
|
124
|
+
uint8_t addresses_[(sizeof(sockaddr_in6) + 16) * 2] = {};
|
125
|
+
// The parent listener
|
126
|
+
WindowsEventEngineListener* listener_;
|
127
|
+
// shared state for asynchronous cleanup of overlapped operations
|
128
|
+
std::shared_ptr<AsyncIOState> io_state_;
|
129
|
+
// The actual TCP port number.
|
130
|
+
int port_;
|
131
|
+
EventEngine::ResolvedAddress listener_sockname_;
|
132
|
+
};
|
133
|
+
absl::StatusOr<SinglePortSocketListener*> AddSinglePortSocketListener(
|
134
|
+
SOCKET sock, EventEngine::ResolvedAddress addr);
|
135
|
+
|
136
|
+
IOCP* const iocp_;
|
137
|
+
const EndpointConfig& config_;
|
138
|
+
std::shared_ptr<EventEngine> engine_;
|
139
|
+
Executor* executor_;
|
140
|
+
const std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory_;
|
141
|
+
AcceptCallback accept_cb_;
|
142
|
+
absl::AnyInvocable<void(absl::Status)> on_shutdown_;
|
143
|
+
std::atomic<bool> started_{false};
|
144
|
+
grpc_core::Mutex port_listeners_mu_;
|
145
|
+
std::list<std::unique_ptr<SinglePortSocketListener>> port_listeners_
|
146
|
+
ABSL_GUARDED_BY(port_listeners_mu_);
|
147
|
+
bool listeners_shutdown_ ABSL_GUARDED_BY(port_listeners_mu_) = false;
|
148
|
+
};
|
149
|
+
|
150
|
+
} // namespace experimental
|
151
|
+
} // namespace grpc_event_engine
|
152
|
+
|
153
|
+
#endif
|
154
|
+
|
155
|
+
#endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_WINDOWS_WINDOWS_LISTENER_H
|
@@ -29,17 +29,12 @@
|
|
29
29
|
|
30
30
|
#include <grpc/support/log.h>
|
31
31
|
|
32
|
+
#include "src/core/lib/config/config_vars.h"
|
32
33
|
#include "src/core/lib/experiments/experiments.h"
|
33
34
|
#include "src/core/lib/gprpp/crash.h" // IWYU pragma: keep
|
34
|
-
#include "src/core/lib/gprpp/global_config.h"
|
35
|
-
#include "src/core/lib/gprpp/memory.h"
|
36
35
|
#include "src/core/lib/gprpp/no_destruct.h"
|
37
36
|
|
38
37
|
#ifndef GRPC_EXPERIMENTS_ARE_FINAL
|
39
|
-
GPR_GLOBAL_CONFIG_DEFINE_STRING(
|
40
|
-
grpc_experiments, "",
|
41
|
-
"List of grpc experiments to enable (or with a '-' prefix to disable).");
|
42
|
-
|
43
38
|
namespace grpc_core {
|
44
39
|
|
45
40
|
namespace {
|
@@ -66,11 +61,9 @@ GPR_ATTRIBUTE_NOINLINE Experiments LoadExperimentsFromConfigVariable() {
|
|
66
61
|
experiments.enabled[i] = g_forced_experiments[i].value;
|
67
62
|
}
|
68
63
|
}
|
69
|
-
// Get the global config.
|
70
|
-
auto experiments_str = GPR_GLOBAL_CONFIG_GET(grpc_experiments);
|
71
64
|
// For each comma-separated experiment in the global config:
|
72
|
-
for (auto experiment :
|
73
|
-
|
65
|
+
for (auto experiment : absl::StrSplit(
|
66
|
+
absl::string_view(ConfigVars::Get().Experiments()), ',')) {
|
74
67
|
// Strip whitespace.
|
75
68
|
experiment = absl::StripAsciiWhitespace(experiment);
|
76
69
|
// Handle ",," without crashing.
|
@@ -54,6 +54,10 @@ const char* const description_transport_supplies_client_latency =
|
|
54
54
|
"opencensus";
|
55
55
|
const char* const description_event_engine_listener =
|
56
56
|
"Use EventEngine listeners instead of iomgr's grpc_tcp_server";
|
57
|
+
const char* const description_schedule_cancellation_over_write =
|
58
|
+
"Allow cancellation op to be scheduled over a write";
|
59
|
+
const char* const description_trace_record_callops =
|
60
|
+
"Enables tracing of call batch initiation and completion.";
|
57
61
|
} // namespace
|
58
62
|
|
59
63
|
namespace grpc_core {
|
@@ -75,6 +79,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
|
|
75
79
|
{"transport_supplies_client_latency",
|
76
80
|
description_transport_supplies_client_latency, false},
|
77
81
|
{"event_engine_listener", description_event_engine_listener, false},
|
82
|
+
{"schedule_cancellation_over_write",
|
83
|
+
description_schedule_cancellation_over_write, false},
|
84
|
+
{"trace_record_callops", description_trace_record_callops, false},
|
78
85
|
};
|
79
86
|
|
80
87
|
} // namespace grpc_core
|
@@ -72,6 +72,8 @@ inline bool IsFreeLargeAllocatorEnabled() { return false; }
|
|
72
72
|
inline bool IsPromiseBasedServerCallEnabled() { return false; }
|
73
73
|
inline bool IsTransportSuppliesClientLatencyEnabled() { return false; }
|
74
74
|
inline bool IsEventEngineListenerEnabled() { return false; }
|
75
|
+
inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
|
76
|
+
inline bool IsTraceRecordCallopsEnabled() { return false; }
|
75
77
|
#else
|
76
78
|
#define GRPC_EXPERIMENT_IS_INCLUDED_TCP_FRAME_SIZE_TUNING
|
77
79
|
inline bool IsTcpFrameSizeTuningEnabled() { return IsExperimentEnabled(0); }
|
@@ -107,8 +109,14 @@ inline bool IsTransportSuppliesClientLatencyEnabled() {
|
|
107
109
|
}
|
108
110
|
#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
|
109
111
|
inline bool IsEventEngineListenerEnabled() { return IsExperimentEnabled(12); }
|
112
|
+
#define GRPC_EXPERIMENT_IS_INCLUDED_SCHEDULE_CANCELLATION_OVER_WRITE
|
113
|
+
inline bool IsScheduleCancellationOverWriteEnabled() {
|
114
|
+
return IsExperimentEnabled(13);
|
115
|
+
}
|
116
|
+
#define GRPC_EXPERIMENT_IS_INCLUDED_TRACE_RECORD_CALLOPS
|
117
|
+
inline bool IsTraceRecordCallopsEnabled() { return IsExperimentEnabled(14); }
|
110
118
|
|
111
|
-
constexpr const size_t kNumExperiments =
|
119
|
+
constexpr const size_t kNumExperiments = 15;
|
112
120
|
extern const ExperimentMetadata g_experiment_metadata[kNumExperiments];
|
113
121
|
|
114
122
|
#endif
|