grpc 1.56.2 → 1.58.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Makefile +549 -292
- data/include/grpc/event_engine/event_engine.h +22 -33
- data/include/grpc/event_engine/memory_allocator.h +2 -2
- data/include/grpc/impl/channel_arg_names.h +371 -0
- data/include/grpc/impl/grpc_types.h +1 -350
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/support/port_platform.h +29 -23
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -1
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +2 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +51 -11
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +27 -53
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +23 -9
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +25 -35
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +79 -132
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +42 -17
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +3 -5
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +22 -6
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +97 -71
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -16
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +152 -101
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h +20 -0
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +13 -34
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +6 -7
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +21 -79
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +32 -20
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +12 -4
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +13 -42
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +3 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +8 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +31 -74
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +7 -51
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +22 -90
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +16 -50
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -74
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +2 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +102 -11
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +9 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -1
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.cc +6 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +107 -70
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +10 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +25 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +367 -312
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +17 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +39 -2498
- data/src/core/ext/filters/client_channel/retry_filter.h +92 -1
- data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.cc +2052 -0
- data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.h +442 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +39 -59
- data/src/core/ext/filters/client_channel/subchannel.cc +9 -5
- data/src/core/ext/filters/client_channel/subchannel.h +11 -5
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -0
- data/src/core/ext/filters/rbac/rbac_filter.cc +40 -111
- data/src/core/ext/filters/rbac/rbac_filter.h +12 -30
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +4 -7
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +162 -86
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +0 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +463 -519
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +6569 -174
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +2278 -441
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +6 -20
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +72 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +7 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +3 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +38 -61
- data/src/core/ext/transport/chttp2/transport/parsing.cc +31 -10
- data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +80 -0
- data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +55 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +98 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +73 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +82 -91
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -6
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +143 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +0 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +35 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +17 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +85 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +26 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +45 -3
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +4 -3
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +21 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +30 -6
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +180 -0
- data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.c +558 -0
- data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.h +2710 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +30 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +53 -24
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +30 -5
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +110 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +41 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +150 -27
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +93 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +88 -76
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +11 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +162 -160
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +129 -118
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +141 -135
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +19 -12
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +38 -30
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/data/accesslog/v3/accesslog.upbdefs.c +402 -0
- data/src/core/ext/upbdefs-generated/envoy/data/accesslog/v3/accesslog.upbdefs.h +111 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +80 -74
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +63 -47
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +315 -293
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -29
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +33 -30
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -13
- data/src/core/ext/xds/xds_client_grpc.cc +12 -6
- data/src/core/ext/xds/xds_client_grpc.h +16 -2
- data/src/core/ext/xds/xds_client_stats.h +10 -0
- data/src/core/ext/xds/xds_cluster.cc +26 -16
- data/src/core/ext/xds/xds_endpoint.cc +4 -7
- data/src/core/ext/xds/xds_health_status.cc +0 -17
- data/src/core/ext/xds/xds_health_status.h +5 -25
- data/src/core/ext/xds/xds_http_fault_filter.cc +1 -2
- data/src/core/ext/xds/xds_http_fault_filter.h +1 -2
- data/src/core/ext/xds/xds_http_filters.h +2 -4
- data/src/core/ext/xds/xds_http_rbac_filter.cc +3 -8
- data/src/core/ext/xds/xds_http_rbac_filter.h +1 -2
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +1 -2
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +1 -2
- data/src/core/ext/xds/xds_lb_policy_registry.cc +36 -0
- data/src/core/ext/xds/xds_route_config.cc +4 -0
- data/src/core/ext/xds/xds_routing.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.cc +2 -3
- data/src/core/lib/address_utils/parse_address.cc +63 -1
- data/src/core/lib/address_utils/parse_address.h +8 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +46 -1
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
- data/src/core/lib/avl/avl.h +10 -173
- data/src/core/lib/channel/call_tracer.cc +289 -0
- data/src/core/lib/channel/call_tracer.h +35 -0
- data/src/core/lib/channel/channel_args.cc +98 -82
- data/src/core/lib/channel/channel_args.h +32 -17
- data/src/core/lib/channel/connected_channel.cc +4 -2
- data/src/core/lib/channel/promise_based_filter.cc +4 -1
- data/src/core/lib/channel/promise_based_filter.h +1 -0
- data/src/core/lib/compression/compression_internal.cc +8 -4
- data/src/core/lib/debug/stats_data.cc +93 -21
- data/src/core/lib/debug/stats_data.h +41 -0
- data/src/core/lib/debug/trace.cc +1 -4
- data/src/core/lib/event_engine/ares_resolver.cc +712 -0
- data/src/core/lib/event_engine/ares_resolver.h +150 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +10 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -1
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +229 -0
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +117 -0
- data/src/core/lib/event_engine/event_engine.cc +0 -12
- data/src/core/lib/event_engine/forkable.cc +62 -43
- data/src/core/lib/event_engine/forkable.h +15 -0
- data/src/core/lib/event_engine/grpc_polled_fd.h +73 -0
- data/src/core/lib/event_engine/handle_containers.h +0 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +4 -6
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +29 -9
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +10 -1
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +197 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +28 -14
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +49 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +20 -13
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +37 -27
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +2 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +4 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +43 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +6 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +10 -37
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -0
- data/src/core/lib/event_engine/tcp_socket_utils.cc +67 -7
- data/src/core/lib/event_engine/tcp_socket_utils.h +3 -0
- data/src/core/lib/event_engine/thread_pool/thread_count.cc +58 -0
- data/src/core/lib/event_engine/thread_pool/thread_count.h +161 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +7 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +122 -94
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +22 -48
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +12 -21
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +8 -12
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +58 -58
- data/src/core/lib/event_engine/windows/windows_endpoint.h +15 -12
- data/src/core/lib/event_engine/windows/windows_engine.cc +2 -1
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -12
- data/src/core/lib/experiments/config.cc +74 -22
- data/src/core/lib/experiments/config.h +20 -8
- data/src/core/lib/experiments/experiments.cc +206 -91
- data/src/core/lib/experiments/experiments.h +71 -14
- data/src/core/lib/gprpp/dual_ref_counted.h +9 -9
- data/src/core/lib/gprpp/fork.cc +8 -9
- data/src/core/lib/gprpp/fork.h +6 -5
- data/src/core/lib/gprpp/if_list.h +4530 -0
- data/src/core/lib/gprpp/orphanable.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +9 -7
- data/src/core/lib/gprpp/ref_counted_string.cc +44 -0
- data/src/core/lib/gprpp/ref_counted_string.h +146 -0
- data/src/core/lib/gprpp/sorted_pack.h +3 -12
- data/src/core/lib/gprpp/status_helper.h +16 -15
- data/src/core/lib/gprpp/time.h +13 -1
- data/src/core/lib/gprpp/type_list.h +32 -0
- data/src/core/lib/gprpp/work_serializer.cc +36 -0
- data/src/core/lib/gprpp/work_serializer.h +5 -0
- data/src/core/lib/http/httpcli.h +6 -9
- data/src/core/lib/http/httpcli_security_connector.cc +1 -0
- data/src/core/lib/iomgr/buffer_list.cc +2 -0
- data/src/core/lib/iomgr/error.cc +32 -2
- data/src/core/lib/iomgr/error.h +9 -10
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +7 -22
- data/src/core/lib/iomgr/exec_ctx.h +11 -0
- data/src/core/lib/iomgr/pollset.h +4 -5
- data/src/core/lib/iomgr/port.h +10 -0
- data/src/core/lib/iomgr/resolve_address.cc +13 -1
- data/src/core/lib/iomgr/resolve_address.h +17 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +7 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +29 -0
- data/src/core/lib/iomgr/socket_utils_posix.cc +2 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +6 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -1
- data/src/core/lib/iomgr/tcp_posix.cc +24 -7
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -2
- data/src/core/lib/iomgr/tcp_windows.cc +1 -3
- data/src/core/lib/iomgr/vsock.cc +59 -0
- data/src/core/lib/iomgr/vsock.h +38 -0
- data/src/core/lib/iomgr/wakeup_fd_posix.h +3 -6
- data/src/core/lib/load_balancing/delegating_helper.h +115 -0
- data/src/core/lib/load_balancing/lb_policy.h +20 -0
- data/src/core/lib/load_balancing/subchannel_interface.h +6 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -372
- data/src/core/lib/promise/detail/seq_state.h +2076 -0
- data/src/core/lib/promise/party.h +1 -1
- data/src/core/lib/promise/seq.h +19 -2
- data/src/core/lib/promise/sleep.h +5 -10
- data/src/core/lib/promise/try_seq.h +34 -2
- data/src/core/lib/resolver/resolver_factory.h +3 -2
- data/src/core/lib/resolver/server_address.cc +9 -94
- data/src/core/lib/resolver/server_address.h +10 -64
- data/src/core/lib/resource_quota/api.cc +1 -0
- data/src/core/lib/resource_quota/arena.cc +2 -0
- data/src/core/lib/resource_quota/arena.h +42 -8
- data/src/core/lib/resource_quota/memory_quota.cc +0 -1
- data/src/core/lib/resource_quota/memory_quota.h +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +1 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/rbac_policy.h +1 -1
- data/src/core/lib/security/credentials/channel_creds_registry.h +51 -27
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +169 -9
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +8 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +30 -38
- data/src/core/lib/security/credentials/fake/fake_credentials.h +28 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +17 -0
- data/src/core/lib/security/credentials/jwt/json_token.h +4 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +42 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +4 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +8 -5
- data/src/core/lib/security/transport/security_handshaker.cc +1 -0
- data/src/core/lib/security/transport/server_auth_filter.cc +2 -0
- data/src/core/lib/service_config/service_config_call_data.h +5 -0
- data/src/core/lib/slice/slice.h +16 -0
- data/src/core/lib/surface/call.cc +63 -37
- data/src/core/lib/surface/channel.cc +1 -0
- data/src/core/lib/surface/completion_queue.cc +10 -0
- data/src/core/lib/surface/init.cc +1 -0
- data/src/core/lib/surface/server.cc +67 -64
- data/src/core/lib/surface/server.h +1 -15
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/metadata_batch.cc +7 -7
- data/src/core/lib/transport/metadata_batch.h +86 -48
- data/src/core/lib/transport/parsed_metadata.h +34 -20
- data/src/core/lib/transport/simple_slice_based_metadata.h +9 -2
- data/src/core/tsi/alts/crypt/aes_gcm.cc +27 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +4 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +1 -2
- data/src/core/tsi/ssl_transport_security.cc +39 -7
- data/src/ruby/bin/math_pb.rb +24 -18
- data/src/ruby/ext/grpc/extconf.rb +19 -18
- data/src/ruby/ext/grpc/rb_call.c +62 -39
- data/src/ruby/ext/grpc/rb_call_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_channel.c +109 -84
- data/src/ruby/ext/grpc/rb_channel.h +1 -0
- data/src/ruby/ext/grpc/rb_channel_args.c +16 -2
- data/src/ruby/ext/grpc/rb_channel_args.h +4 -0
- data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +22 -6
- data/src/ruby/ext/grpc/rb_event_thread.h +1 -0
- data/src/ruby/ext/grpc/rb_grpc.c +192 -30
- data/src/ruby/ext/grpc/rb_grpc.h +8 -2
- data/src/ruby/ext/grpc/rb_server.c +62 -45
- data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
- data/src/ruby/lib/grpc/generic/active_call.rb +9 -14
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +24 -13
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +24 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +25 -111
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +25 -2
- data/src/ruby/pb/test/client.rb +16 -0
- data/src/ruby/spec/generic/rpc_server_spec.rb +3 -3
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -2
- data/third_party/abseil-cpp/absl/base/attributes.h +58 -5
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
- data/third_party/abseil-cpp/absl/base/casts.h +8 -8
- data/third_party/abseil-cpp/absl/base/config.h +89 -106
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +26 -1
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +50 -39
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +2 -1
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +17 -18
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +32 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +24 -4
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +31 -73
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -8
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +23 -32
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +2 -3
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/policy_checks.h +3 -3
- data/third_party/abseil-cpp/absl/base/prefetch.h +198 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +54 -29
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -1
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +167 -79
- 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 +3 -21
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +46 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -0
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +85 -26
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +35 -18
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +70 -29
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +437 -236
- data/third_party/abseil-cpp/absl/crc/crc32c.h +8 -1
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +14 -8
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -35
- data/third_party/abseil-cpp/absl/crc/internal/crc.h +2 -10
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +1 -1
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +1 -1
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +4 -4
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +8 -10
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +17 -19
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +8 -8
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +59 -23
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +1 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +43 -19
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +1 -1
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc +1 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -2
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +16 -15
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +1 -1
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +43 -2
- data/third_party/abseil-cpp/absl/flags/marshalling.h +5 -0
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +9 -1
- data/third_party/abseil-cpp/absl/functional/bind_front.h +1 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +3 -3
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +37 -24
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +19 -9
- data/third_party/abseil-cpp/absl/hash/hash.h +7 -4
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +38 -15
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +6 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +48 -373
- data/third_party/abseil-cpp/absl/numeric/bits.h +4 -4
- data/third_party/abseil-cpp/absl/numeric/int128.cc +20 -8
- data/third_party/abseil-cpp/absl/numeric/int128.h +36 -39
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +0 -3
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +47 -30
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +4 -3
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/platform.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +4 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +1 -1
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +1 -1
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +4 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +12 -24
- data/third_party/abseil-cpp/absl/status/status.cc +11 -7
- data/third_party/abseil-cpp/absl/status/status.h +11 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +22 -8
- data/third_party/abseil-cpp/absl/strings/ascii.cc +54 -6
- data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -4
- data/third_party/abseil-cpp/absl/strings/charconv.h +2 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +1 -2
- data/third_party/abseil-cpp/absl/strings/cord.h +32 -5
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +23 -1
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +18 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +2 -5
- data/third_party/abseil-cpp/absl/strings/escaping.cc +10 -32
- data/third_party/abseil-cpp/absl/strings/escaping.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +2 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +0 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +15 -13
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +13 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +5 -3
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +4 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +46 -20
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +1 -34
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +23 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +2 -77
- data/third_party/abseil-cpp/absl/strings/internal/memutil.h +4 -112
- data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +10 -31
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -8
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +5 -20
- data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +56 -6
- data/third_party/abseil-cpp/absl/strings/match.cc +87 -0
- data/third_party/abseil-cpp/absl/strings/match.h +19 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +154 -122
- data/third_party/abseil-cpp/absl/strings/numbers.h +1 -6
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +7 -50
- data/third_party/abseil-cpp/absl/strings/str_cat.h +83 -15
- data/third_party/abseil-cpp/absl/strings/str_format.h +6 -3
- data/third_party/abseil-cpp/absl/strings/str_split.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/string_view.cc +26 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +5 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +63 -43
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +111 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.h +63 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -7
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +225 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +122 -114
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +12 -8
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +10 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +167 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +122 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.h +65 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +91 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.h +56 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +19 -113
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +42 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.h +90 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +151 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.h +70 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +407 -411
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +152 -118
- data/third_party/abseil-cpp/absl/time/clock.cc +6 -7
- data/third_party/abseil-cpp/absl/time/duration.cc +24 -26
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +3 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +8 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +6 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +4 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +4 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +322 -295
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +8 -17
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +51 -33
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +7 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +128 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +5 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +34 -34
- data/third_party/abseil-cpp/absl/time/time.cc +9 -2
- data/third_party/abseil-cpp/absl/time/time.h +115 -15
- data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -52
- data/third_party/abseil-cpp/absl/types/internal/span.h +2 -2
- data/third_party/abseil-cpp/absl/types/internal/variant.h +2 -2
- data/third_party/abseil-cpp/absl/types/optional.h +15 -13
- data/third_party/abseil-cpp/absl/types/span.h +1 -2
- data/third_party/boringssl-with-bazel/err_data.c +554 -553
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +7 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +34 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +11 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/errno.c +92 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +5 -49
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +18 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +16 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +19 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +31 -192
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +3 -7
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.c +93 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +49 -46
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_openbsd.c → curve25519/curve25519_64_adx.c} +3 -16
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +2809 -7417
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +27 -5
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +20 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +110 -72
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +23 -21
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +35 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +3 -7
- data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +34 -72
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +12 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +5 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +12 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +17 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +5 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +37 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +38 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +277 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +180 -404
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +24 -57
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +33 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +18 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +15 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +9 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +24 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +11 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +9 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +40 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +21 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +38 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +2 -29
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +33 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +42 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +211 -100
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +25 -46
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +8 -5
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +6 -12
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +52 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{fuchsia.c → ios.c} +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_no_threads.c → rand_extra/trusty.c} +15 -19
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +41 -19
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_c11.c → refcount.c} +11 -17
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +152 -72
- data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +6 -35
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +5 -26
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +14 -18
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +54 -143
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +8 -19
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +8 -12
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +19 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +4 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +4 -119
- data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +207 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -116
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +11 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +0 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +0 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +28 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +19 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +11 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +6 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +0 -61
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +22 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +131 -81
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +236 -213
- data/third_party/boringssl-with-bazel/src/include/openssl/target.h +201 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +1 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +4 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +3 -2
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +9 -65
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +20 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +26 -20
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +4 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +37 -30
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +127 -26
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -3
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +691 -0
- data/third_party/upb/upb/collections/map.c +3 -3
- metadata +62 -39
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +0 -42
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +0 -64
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +0 -177
- data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -68
- data/src/core/lib/promise/detail/basic_join.h +0 -197
- data/src/core/lib/promise/detail/switch.h +0 -1455
- data/src/core/lib/promise/try_join.h +0 -82
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -403
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +0 -62
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm.c +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +0 -89
- data/third_party/re2/util/benchmark.h +0 -156
- data/third_party/re2/util/flags.h +0 -26
- data/third_party/re2/util/malloc_counter.h +0 -19
- data/third_party/re2/util/pcre.cc +0 -1025
- data/third_party/re2/util/pcre.h +0 -681
- data/third_party/re2/util/test.h +0 -50
- data/third_party/upb/upb/mini_table.h +0 -36
- data/third_party/zlib/gzclose.c +0 -25
- data/third_party/zlib/gzlib.c +0 -639
- data/third_party/zlib/gzread.c +0 -650
- data/third_party/zlib/gzwrite.c +0 -677
@@ -115,8 +115,12 @@ grpc_auth_json_key grpc_auth_json_key_create_from_json(const Json& json) {
|
|
115
115
|
gpr_log(GPR_ERROR, "Could not write into openssl BIO.");
|
116
116
|
goto end;
|
117
117
|
}
|
118
|
+
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
118
119
|
result.private_key =
|
119
120
|
PEM_read_bio_RSAPrivateKey(bio, nullptr, nullptr, const_cast<char*>(""));
|
121
|
+
#else
|
122
|
+
result.private_key = PEM_read_bio_PrivateKey(bio, nullptr, nullptr, nullptr);
|
123
|
+
#endif
|
120
124
|
if (result.private_key == nullptr) {
|
121
125
|
gpr_log(GPR_ERROR, "Could not deserialize private key.");
|
122
126
|
goto end;
|
@@ -158,7 +162,11 @@ void grpc_auth_json_key_destruct(grpc_auth_json_key* json_key) {
|
|
158
162
|
json_key->client_email = nullptr;
|
159
163
|
}
|
160
164
|
if (json_key->private_key != nullptr) {
|
165
|
+
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
161
166
|
RSA_free(json_key->private_key);
|
167
|
+
#else
|
168
|
+
EVP_PKEY_free(json_key->private_key);
|
169
|
+
#endif
|
162
170
|
json_key->private_key = nullptr;
|
163
171
|
}
|
164
172
|
}
|
@@ -237,7 +245,9 @@ char* compute_and_encode_signature(const grpc_auth_json_key* json_key,
|
|
237
245
|
const char* to_sign) {
|
238
246
|
const EVP_MD* md = openssl_digest_from_algorithm(signature_algorithm);
|
239
247
|
EVP_MD_CTX* md_ctx = nullptr;
|
248
|
+
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
240
249
|
EVP_PKEY* key = EVP_PKEY_new();
|
250
|
+
#endif
|
241
251
|
size_t sig_len = 0;
|
242
252
|
unsigned char* sig = nullptr;
|
243
253
|
char* result = nullptr;
|
@@ -247,8 +257,13 @@ char* compute_and_encode_signature(const grpc_auth_json_key* json_key,
|
|
247
257
|
gpr_log(GPR_ERROR, "Could not create MD_CTX");
|
248
258
|
goto end;
|
249
259
|
}
|
260
|
+
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
250
261
|
EVP_PKEY_set1_RSA(key, json_key->private_key);
|
251
262
|
if (EVP_DigestSignInit(md_ctx, nullptr, md, nullptr, key) != 1) {
|
263
|
+
#else
|
264
|
+
if (EVP_DigestSignInit(md_ctx, nullptr, md, nullptr, json_key->private_key) !=
|
265
|
+
1) {
|
266
|
+
#endif
|
252
267
|
gpr_log(GPR_ERROR, "DigestInit failed.");
|
253
268
|
goto end;
|
254
269
|
}
|
@@ -268,7 +283,9 @@ char* compute_and_encode_signature(const grpc_auth_json_key* json_key,
|
|
268
283
|
result = grpc_base64_encode(sig, sig_len, 1, 0);
|
269
284
|
|
270
285
|
end:
|
286
|
+
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
271
287
|
if (key != nullptr) EVP_PKEY_free(key);
|
288
|
+
#endif
|
272
289
|
if (md_ctx != nullptr) EVP_MD_CTX_destroy(md_ctx);
|
273
290
|
if (sig != nullptr) gpr_free(sig);
|
274
291
|
return result;
|
@@ -38,7 +38,11 @@ struct grpc_auth_json_key {
|
|
38
38
|
char* private_key_id;
|
39
39
|
char* client_id;
|
40
40
|
char* client_email;
|
41
|
+
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
41
42
|
RSA* private_key;
|
43
|
+
#else
|
44
|
+
EVP_PKEY* private_key;
|
45
|
+
#endif
|
42
46
|
};
|
43
47
|
// Returns 1 if the object is valid, 0 otherwise.
|
44
48
|
int grpc_auth_json_key_is_valid(const grpc_auth_json_key* json_key);
|
@@ -37,6 +37,9 @@
|
|
37
37
|
#include <openssl/pem.h>
|
38
38
|
#include <openssl/rsa.h>
|
39
39
|
#include <openssl/x509.h>
|
40
|
+
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
|
41
|
+
#include <openssl/param_build.h>
|
42
|
+
#endif
|
40
43
|
|
41
44
|
#include "absl/status/status.h"
|
42
45
|
#include "absl/status/statusor.h"
|
@@ -523,7 +526,13 @@ static int RSA_set0_key(RSA* r, BIGNUM* n, BIGNUM* e, BIGNUM* d) {
|
|
523
526
|
#endif // OPENSSL_VERSION_NUMBER < 0x10100000L
|
524
527
|
|
525
528
|
static EVP_PKEY* pkey_from_jwk(const Json& json, const char* kty) {
|
529
|
+
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
526
530
|
RSA* rsa = nullptr;
|
531
|
+
#else
|
532
|
+
EVP_PKEY_CTX* ctx = nullptr;
|
533
|
+
OSSL_PARAM* params = NULL;
|
534
|
+
OSSL_PARAM_BLD* bld = OSSL_PARAM_BLD_new();
|
535
|
+
#endif
|
527
536
|
EVP_PKEY* result = nullptr;
|
528
537
|
BIGNUM* tmp_n = nullptr;
|
529
538
|
BIGNUM* tmp_e = nullptr;
|
@@ -535,11 +544,13 @@ static EVP_PKEY* pkey_from_jwk(const Json& json, const char* kty) {
|
|
535
544
|
gpr_log(GPR_ERROR, "Unsupported key type %s.", kty);
|
536
545
|
goto end;
|
537
546
|
}
|
547
|
+
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
538
548
|
rsa = RSA_new();
|
539
549
|
if (rsa == nullptr) {
|
540
550
|
gpr_log(GPR_ERROR, "Could not create rsa key.");
|
541
551
|
goto end;
|
542
552
|
}
|
553
|
+
#endif
|
543
554
|
it = json.object().find("n");
|
544
555
|
if (it == json.object().end()) {
|
545
556
|
gpr_log(GPR_ERROR, "Missing RSA public key field.");
|
@@ -554,6 +565,7 @@ static EVP_PKEY* pkey_from_jwk(const Json& json, const char* kty) {
|
|
554
565
|
}
|
555
566
|
tmp_e = bignum_from_base64(validate_string_field(it->second, "e"));
|
556
567
|
if (tmp_e == nullptr) goto end;
|
568
|
+
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
557
569
|
if (!RSA_set0_key(rsa, tmp_n, tmp_e, nullptr)) {
|
558
570
|
gpr_log(GPR_ERROR, "Cannot set RSA key from inputs.");
|
559
571
|
goto end;
|
@@ -563,9 +575,38 @@ static EVP_PKEY* pkey_from_jwk(const Json& json, const char* kty) {
|
|
563
575
|
tmp_e = nullptr;
|
564
576
|
result = EVP_PKEY_new();
|
565
577
|
EVP_PKEY_set1_RSA(result, rsa); // uprefs rsa.
|
578
|
+
#else
|
579
|
+
|
580
|
+
if (!OSSL_PARAM_BLD_push_BN(bld, "n", tmp_n) ||
|
581
|
+
!OSSL_PARAM_BLD_push_BN(bld, "e", tmp_e) ||
|
582
|
+
(params = OSSL_PARAM_BLD_to_param(bld)) == NULL) {
|
583
|
+
gpr_log(GPR_ERROR, "Could not create OSSL_PARAM");
|
584
|
+
goto end;
|
585
|
+
}
|
586
|
+
|
587
|
+
ctx = EVP_PKEY_CTX_new_from_name(nullptr, "RSA", nullptr);
|
588
|
+
if (ctx == nullptr) {
|
589
|
+
gpr_log(GPR_ERROR, "Could not create rsa key.");
|
590
|
+
goto end;
|
591
|
+
}
|
592
|
+
if (EVP_PKEY_fromdata_init(ctx) <= 0) {
|
593
|
+
gpr_log(GPR_ERROR, "Could not create rsa key.");
|
594
|
+
goto end;
|
595
|
+
}
|
596
|
+
if (EVP_PKEY_fromdata(ctx, &result, EVP_PKEY_KEYPAIR, params) <= 0) {
|
597
|
+
gpr_log(GPR_ERROR, "Cannot set RSA key from inputs.");
|
598
|
+
goto end;
|
599
|
+
}
|
600
|
+
#endif
|
566
601
|
|
567
602
|
end:
|
603
|
+
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
568
604
|
RSA_free(rsa);
|
605
|
+
#else
|
606
|
+
EVP_PKEY_CTX_free(ctx);
|
607
|
+
OSSL_PARAM_free(params);
|
608
|
+
OSSL_PARAM_BLD_free(bld);
|
609
|
+
#endif
|
569
610
|
BN_free(tmp_n);
|
570
611
|
BN_free(tmp_e);
|
571
612
|
return result;
|
@@ -642,6 +683,7 @@ static int verify_jwt_signature(EVP_PKEY* key, const char* alg,
|
|
642
683
|
if (EVP_DigestVerifyFinal(md_ctx, GRPC_SLICE_START_PTR(signature),
|
643
684
|
GRPC_SLICE_LENGTH(signature)) != 1) {
|
644
685
|
gpr_log(GPR_ERROR, "JWT signature verification failed.");
|
686
|
+
|
645
687
|
goto end;
|
646
688
|
}
|
647
689
|
result = 1;
|
@@ -437,7 +437,11 @@ absl::StatusOr<bool> PrivateKeyAndCertificateMatch(
|
|
437
437
|
return absl::InvalidArgumentError(
|
438
438
|
"Conversion from PEM string to EVP_PKEY failed.");
|
439
439
|
}
|
440
|
+
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
440
441
|
bool result = EVP_PKEY_cmp(private_evp_pkey, public_evp_pkey) == 1;
|
442
|
+
#else
|
443
|
+
bool result = EVP_PKEY_eq(private_evp_pkey, public_evp_pkey) == 1;
|
444
|
+
#endif
|
441
445
|
EVP_PKEY_free(private_evp_pkey);
|
442
446
|
EVP_PKEY_free(public_evp_pkey);
|
443
447
|
return result;
|
@@ -28,6 +28,7 @@
|
|
28
28
|
|
29
29
|
#include <grpc/grpc.h>
|
30
30
|
#include <grpc/grpc_security_constants.h>
|
31
|
+
#include <grpc/impl/channel_arg_names.h>
|
31
32
|
#include <grpc/support/log.h>
|
32
33
|
|
33
34
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -98,7 +99,7 @@ TlsCredentials::create_security_connector(
|
|
98
99
|
return sc;
|
99
100
|
}
|
100
101
|
|
101
|
-
grpc_core::UniqueTypeName TlsCredentials::
|
102
|
+
grpc_core::UniqueTypeName TlsCredentials::Type() {
|
102
103
|
static grpc_core::UniqueTypeName::Factory kFactory("Tls");
|
103
104
|
return kFactory.Create();
|
104
105
|
}
|
@@ -41,7 +41,9 @@ class TlsCredentials final : public grpc_channel_credentials {
|
|
41
41
|
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
|
42
42
|
const char* target_name, grpc_core::ChannelArgs* args) override;
|
43
43
|
|
44
|
-
grpc_core::UniqueTypeName
|
44
|
+
static grpc_core::UniqueTypeName Type();
|
45
|
+
|
46
|
+
grpc_core::UniqueTypeName type() const override { return Type(); }
|
45
47
|
|
46
48
|
grpc_tls_credentials_options* options() const { return options_.get(); }
|
47
49
|
|
@@ -18,6 +18,7 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
+
#include <stdint.h>
|
21
22
|
#include <string.h>
|
22
23
|
|
23
24
|
#include <functional>
|
@@ -43,7 +44,6 @@
|
|
43
44
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
44
45
|
#include "src/core/lib/promise/arena_promise.h"
|
45
46
|
#include "src/core/lib/promise/context.h"
|
46
|
-
#include "src/core/lib/promise/detail/basic_seq.h"
|
47
47
|
#include "src/core/lib/promise/promise.h"
|
48
48
|
#include "src/core/lib/promise/seq.h"
|
49
49
|
#include "src/core/lib/promise/try_seq.h"
|
@@ -196,10 +196,13 @@ ArenaPromise<ServerMetadataHandle> ClientAuthFilter::MakeCallPromise(
|
|
196
196
|
if (host == nullptr) {
|
197
197
|
return next_promise_factory(std::move(call_args));
|
198
198
|
}
|
199
|
-
return TrySeq(
|
200
|
-
|
201
|
-
|
202
|
-
|
199
|
+
return TrySeq(
|
200
|
+
args_.security_connector->CheckCallHost(host->as_string_view(),
|
201
|
+
args_.auth_context.get()),
|
202
|
+
[this, call_args = std::move(call_args)]() mutable {
|
203
|
+
return GetCallCredsMetadata(std::move(call_args));
|
204
|
+
},
|
205
|
+
next_promise_factory);
|
203
206
|
}
|
204
207
|
|
205
208
|
absl::StatusOr<ClientAuthFilter> ClientAuthFilter::Create(
|
@@ -88,6 +88,11 @@ class ServiceConfigCallData {
|
|
88
88
|
call_attributes_.EmplaceBack(value);
|
89
89
|
}
|
90
90
|
|
91
|
+
template <typename A>
|
92
|
+
A* GetCallAttribute() const {
|
93
|
+
return static_cast<A*>(GetCallAttribute(A::TypeName()));
|
94
|
+
}
|
95
|
+
|
91
96
|
CallAttributeInterface* GetCallAttribute(UniqueTypeName type) const {
|
92
97
|
for (CallAttributeInterface* attribute : call_attributes_) {
|
93
98
|
if (attribute->type() == type) return attribute;
|
data/src/core/lib/slice/slice.h
CHANGED
@@ -342,6 +342,22 @@ class GPR_MSVC_EMPTY_BASE_CLASS_WORKAROUND Slice
|
|
342
342
|
return Slice(TakeCSlice());
|
343
343
|
}
|
344
344
|
|
345
|
+
// As per TakeOwned, but if the slice is refcounted and there are other refs
|
346
|
+
// then it will copy instead of ref-counting, to ensure the returned slice is
|
347
|
+
// not shared.
|
348
|
+
Slice TakeUniquelyOwned() {
|
349
|
+
if (c_slice().refcount == nullptr) {
|
350
|
+
return Slice(c_slice());
|
351
|
+
}
|
352
|
+
if (c_slice().refcount == grpc_slice_refcount::NoopRefcount()) {
|
353
|
+
return Slice(grpc_slice_copy(c_slice()));
|
354
|
+
}
|
355
|
+
if (c_slice().refcount->IsUnique()) {
|
356
|
+
return Slice(TakeCSlice());
|
357
|
+
}
|
358
|
+
return Slice(grpc_slice_copy(c_slice()));
|
359
|
+
}
|
360
|
+
|
345
361
|
// AsOwned returns an owned slice but does not mutate the current slice,
|
346
362
|
// meaning that it may add a reference to the underlying slice.
|
347
363
|
Slice AsOwned() const {
|
@@ -85,7 +85,6 @@
|
|
85
85
|
#include "src/core/lib/promise/activity.h"
|
86
86
|
#include "src/core/lib/promise/arena_promise.h"
|
87
87
|
#include "src/core/lib/promise/context.h"
|
88
|
-
#include "src/core/lib/promise/detail/basic_seq.h"
|
89
88
|
#include "src/core/lib/promise/latch.h"
|
90
89
|
#include "src/core/lib/promise/map.h"
|
91
90
|
#include "src/core/lib/promise/party.h"
|
@@ -1930,6 +1929,9 @@ void FilterStackCall::ContextSet(grpc_context_index elem, void* value,
|
|
1930
1929
|
|
1931
1930
|
namespace {
|
1932
1931
|
bool ValidateMetadata(size_t count, grpc_metadata* metadata) {
|
1932
|
+
if (count > INT_MAX) {
|
1933
|
+
return false;
|
1934
|
+
}
|
1933
1935
|
for (size_t i = 0; i < count; i++) {
|
1934
1936
|
grpc_metadata* md = &metadata[i];
|
1935
1937
|
if (!GRPC_LOG_IF_ERROR("validate_metadata",
|
@@ -2156,14 +2158,9 @@ class PromiseBasedCall : public Call,
|
|
2156
2158
|
grpc_metadata_batch* batch);
|
2157
2159
|
|
2158
2160
|
// At the end of the call run any finalization actions.
|
2159
|
-
void
|
2160
|
-
|
2161
|
-
|
2162
|
-
final_info.final_status = status;
|
2163
|
-
final_info.error_string = status_details;
|
2164
|
-
final_info.stats.latency =
|
2165
|
-
gpr_cycle_counter_sub(gpr_get_cycle_counter(), start_time());
|
2166
|
-
finalization_.Run(&final_info);
|
2161
|
+
void SetFinalizationStatus(grpc_status_code status, Slice status_details) {
|
2162
|
+
final_message_ = std::move(status_details);
|
2163
|
+
final_status_ = status;
|
2167
2164
|
}
|
2168
2165
|
|
2169
2166
|
std::string PresentAndCompletionText(const char* caption, bool has,
|
@@ -2232,6 +2229,10 @@ class PromiseBasedCall : public Call,
|
|
2232
2229
|
}
|
2233
2230
|
}
|
2234
2231
|
|
2232
|
+
void set_failed_before_recv_message() {
|
2233
|
+
failed_before_recv_message_.store(true, std::memory_order_relaxed);
|
2234
|
+
}
|
2235
|
+
|
2235
2236
|
private:
|
2236
2237
|
union CompletionInfo {
|
2237
2238
|
static constexpr uint32_t kOpFailed = 0x8000'0000u;
|
@@ -2314,6 +2315,19 @@ class PromiseBasedCall : public Call,
|
|
2314
2315
|
void PartyOver() override {
|
2315
2316
|
{
|
2316
2317
|
ScopedContext ctx(this);
|
2318
|
+
std::string message;
|
2319
|
+
grpc_call_final_info final_info;
|
2320
|
+
final_info.stats = final_stats_;
|
2321
|
+
final_info.final_status = final_status_;
|
2322
|
+
// TODO(ctiller): change type here so we don't need to copy this string.
|
2323
|
+
final_info.error_string = nullptr;
|
2324
|
+
if (!final_message_.empty()) {
|
2325
|
+
message = std::string(final_message_.begin(), final_message_.end());
|
2326
|
+
final_info.error_string = message.c_str();
|
2327
|
+
}
|
2328
|
+
final_info.stats.latency =
|
2329
|
+
gpr_cycle_counter_sub(gpr_get_cycle_counter(), start_time());
|
2330
|
+
finalization_.Run(&final_info);
|
2317
2331
|
CancelRemainingParticipants();
|
2318
2332
|
arena()->DestroyManagedNewObjects();
|
2319
2333
|
}
|
@@ -2327,6 +2341,8 @@ class PromiseBasedCall : public Call,
|
|
2327
2341
|
grpc_completion_queue* cq_;
|
2328
2342
|
CompletionInfo completion_info_[6];
|
2329
2343
|
grpc_call_stats final_stats_{};
|
2344
|
+
Slice final_message_;
|
2345
|
+
grpc_status_code final_status_;
|
2330
2346
|
CallFinalization finalization_;
|
2331
2347
|
// Current deadline.
|
2332
2348
|
Mutex deadline_mu_;
|
@@ -2350,8 +2366,10 @@ grpc_error_handle MakePromiseBasedCall(grpc_call_create_args* args,
|
|
2350
2366
|
grpc_call** out_call) {
|
2351
2367
|
Channel* channel = args->channel.get();
|
2352
2368
|
|
2353
|
-
auto
|
2354
|
-
|
2369
|
+
const auto initial_size = channel->CallSizeEstimate();
|
2370
|
+
global_stats().IncrementCallInitialSize(initial_size);
|
2371
|
+
auto alloc =
|
2372
|
+
Arena::CreateWithAlloc(initial_size, sizeof(T), channel->allocator());
|
2355
2373
|
PromiseBasedCall* call = new (alloc.second) T(alloc.first, args);
|
2356
2374
|
*out_call = call->c_ptr();
|
2357
2375
|
GPR_DEBUG_ASSERT(Call::FromC(*out_call) == call);
|
@@ -2469,9 +2487,13 @@ void PromiseBasedCall::FinishOpOnCompletion(Completion* completion,
|
|
2469
2487
|
ExecCtx::Run(DEBUG_LOCATION, static_cast<grpc_closure*>(pending.tag),
|
2470
2488
|
error);
|
2471
2489
|
} else {
|
2490
|
+
InternalRef("cq_end_op");
|
2472
2491
|
grpc_cq_end_op(
|
2473
|
-
cq(), pending.tag, error,
|
2474
|
-
|
2492
|
+
cq(), pending.tag, error,
|
2493
|
+
[](void* p, grpc_cq_completion*) {
|
2494
|
+
static_cast<PromiseBasedCall*>(p)->InternalUnref("cq_end_op");
|
2495
|
+
},
|
2496
|
+
this, &completion_info_[i].completion);
|
2475
2497
|
}
|
2476
2498
|
}
|
2477
2499
|
|
@@ -2586,7 +2608,7 @@ void PromiseBasedCall::StartRecvMessage(
|
|
2586
2608
|
"finishes: received end-of-stream with error",
|
2587
2609
|
DebugTag().c_str());
|
2588
2610
|
}
|
2589
|
-
|
2611
|
+
set_failed_before_recv_message();
|
2590
2612
|
FailCompletion(completion);
|
2591
2613
|
if (cancel_on_error) CancelWithError(absl::CancelledError());
|
2592
2614
|
*recv_message_ = nullptr;
|
@@ -3009,20 +3031,13 @@ void ClientPromiseBasedCall::StartRecvStatusOnClient(
|
|
3009
3031
|
trailing_metadata->get(GrpcStatusMetadata())
|
3010
3032
|
.value_or(GRPC_STATUS_UNKNOWN);
|
3011
3033
|
*op_args.status = status;
|
3012
|
-
|
3034
|
+
Slice message_slice;
|
3013
3035
|
if (Slice* message =
|
3014
3036
|
trailing_metadata->get_pointer(GrpcMessageMetadata())) {
|
3015
|
-
|
3016
|
-
*op_args.status_details = message->Ref().TakeCSlice();
|
3017
|
-
} else {
|
3018
|
-
*op_args.status_details = grpc_empty_slice();
|
3019
|
-
}
|
3020
|
-
if (message_string.empty()) {
|
3021
|
-
RunFinalization(status, nullptr);
|
3022
|
-
} else {
|
3023
|
-
std::string error_string(message_string);
|
3024
|
-
RunFinalization(status, error_string.c_str());
|
3037
|
+
message_slice = message->Ref();
|
3025
3038
|
}
|
3039
|
+
SetFinalizationStatus(status, message_slice.Ref());
|
3040
|
+
*op_args.status_details = message_slice.TakeCSlice();
|
3026
3041
|
if (op_args.error_string != nullptr && status != GRPC_STATUS_OK) {
|
3027
3042
|
*op_args.error_string =
|
3028
3043
|
gpr_strdup(MakeErrorString(trailing_metadata.get()).c_str());
|
@@ -3237,25 +3252,22 @@ void ServerPromiseBasedCall::Finish(ServerMetadataHandle result) {
|
|
3237
3252
|
channelz_node->RecordCallFailed();
|
3238
3253
|
}
|
3239
3254
|
}
|
3255
|
+
bool was_cancelled = result->get(GrpcCallWasCancelled()).value_or(true);
|
3240
3256
|
if (recv_close_op_cancel_state_.CompleteCallWithCancelledSetTo(
|
3241
|
-
|
3257
|
+
was_cancelled)) {
|
3242
3258
|
FinishOpOnCompletion(&recv_close_completion_,
|
3243
3259
|
PendingOp::kReceiveCloseOnServer);
|
3244
3260
|
}
|
3261
|
+
if (was_cancelled) set_failed_before_recv_message();
|
3245
3262
|
if (server_initial_metadata_ != nullptr) {
|
3246
3263
|
server_initial_metadata_->Close();
|
3247
3264
|
}
|
3248
|
-
|
3265
|
+
Slice message_slice;
|
3249
3266
|
if (Slice* message = result->get_pointer(GrpcMessageMetadata())) {
|
3250
|
-
|
3267
|
+
message_slice = message->Ref();
|
3251
3268
|
}
|
3252
3269
|
AcceptTransportStatsFromContext();
|
3253
|
-
|
3254
|
-
RunFinalization(status, nullptr);
|
3255
|
-
} else {
|
3256
|
-
std::string error_string(message_string);
|
3257
|
-
RunFinalization(status, error_string.c_str());
|
3258
|
-
}
|
3270
|
+
SetFinalizationStatus(status, std::move(message_slice));
|
3259
3271
|
set_completed();
|
3260
3272
|
ResetDeadline();
|
3261
3273
|
PropagateCancellationToChildren();
|
@@ -3281,9 +3293,16 @@ grpc_call_error ServerPromiseBasedCall::ValidateBatch(const grpc_op* ops,
|
|
3281
3293
|
return GRPC_CALL_ERROR_INVALID_FLAGS;
|
3282
3294
|
}
|
3283
3295
|
break;
|
3296
|
+
case GRPC_OP_SEND_STATUS_FROM_SERVER:
|
3297
|
+
if (op.flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS;
|
3298
|
+
if (!ValidateMetadata(
|
3299
|
+
op.data.send_status_from_server.trailing_metadata_count,
|
3300
|
+
op.data.send_status_from_server.trailing_metadata)) {
|
3301
|
+
return GRPC_CALL_ERROR_INVALID_METADATA;
|
3302
|
+
}
|
3303
|
+
break;
|
3284
3304
|
case GRPC_OP_RECV_MESSAGE:
|
3285
3305
|
case GRPC_OP_RECV_CLOSE_ON_SERVER:
|
3286
|
-
case GRPC_OP_SEND_STATUS_FROM_SERVER:
|
3287
3306
|
if (op.flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS;
|
3288
3307
|
break;
|
3289
3308
|
case GRPC_OP_RECV_INITIAL_METADATA:
|
@@ -3322,7 +3341,10 @@ void ServerPromiseBasedCall::CommitBatch(const grpc_op* ops, size_t nops,
|
|
3322
3341
|
[this,
|
3323
3342
|
completion = AddOpToCompletion(
|
3324
3343
|
completion, PendingOp::kSendInitialMetadata)](bool r) mutable {
|
3325
|
-
if (!r)
|
3344
|
+
if (!r) {
|
3345
|
+
set_failed_before_recv_message();
|
3346
|
+
FailCompletion(completion);
|
3347
|
+
}
|
3326
3348
|
FinishOpOnCompletion(&completion,
|
3327
3349
|
PendingOp::kSendInitialMetadata);
|
3328
3350
|
});
|
@@ -3332,6 +3354,7 @@ void ServerPromiseBasedCall::CommitBatch(const grpc_op* ops, size_t nops,
|
|
3332
3354
|
break;
|
3333
3355
|
case GRPC_OP_RECV_MESSAGE:
|
3334
3356
|
if (cancelled_.load(std::memory_order_relaxed)) {
|
3357
|
+
set_failed_before_recv_message();
|
3335
3358
|
FailCompletion(completion);
|
3336
3359
|
break;
|
3337
3360
|
}
|
@@ -3372,7 +3395,10 @@ void ServerPromiseBasedCall::CommitBatch(const grpc_op* ops, size_t nops,
|
|
3372
3395
|
[this, completion = AddOpToCompletion(
|
3373
3396
|
completion, PendingOp::kSendStatusFromServer)](
|
3374
3397
|
bool ok) mutable {
|
3375
|
-
if (!ok)
|
3398
|
+
if (!ok) {
|
3399
|
+
set_failed_before_recv_message();
|
3400
|
+
FailCompletion(completion);
|
3401
|
+
}
|
3376
3402
|
FinishOpOnCompletion(&completion,
|
3377
3403
|
PendingOp::kSendStatusFromServer);
|
3378
3404
|
});
|
@@ -57,6 +57,10 @@
|
|
57
57
|
#include "src/core/lib/surface/api_trace.h"
|
58
58
|
#include "src/core/lib/surface/event_string.h"
|
59
59
|
|
60
|
+
#ifdef GPR_WINDOWS
|
61
|
+
#include "src/core/lib/experiments/experiments.h"
|
62
|
+
#endif
|
63
|
+
|
60
64
|
grpc_core::TraceFlag grpc_trace_operation_failures(false, "op_failure");
|
61
65
|
grpc_core::DebugOnlyTraceFlag grpc_trace_pending_tags(false, "pending_tags");
|
62
66
|
grpc_core::DebugOnlyTraceFlag grpc_trace_cq_refcount(false, "cq_refcount");
|
@@ -882,6 +886,12 @@ void grpc_cq_end_op(grpc_completion_queue* cq, void* tag,
|
|
882
886
|
void (*done)(void* done_arg, grpc_cq_completion* storage),
|
883
887
|
void* done_arg, grpc_cq_completion* storage,
|
884
888
|
bool internal) {
|
889
|
+
// TODO(hork): remove when the listener flake is identified
|
890
|
+
#ifdef GPR_WINDOWS
|
891
|
+
if (grpc_core::IsEventEngineListenerEnabled()) {
|
892
|
+
gpr_log(GPR_ERROR, "cq_end_op called for tag %d (0x%p)", tag, tag);
|
893
|
+
}
|
894
|
+
#endif
|
885
895
|
cq->vtable->end_op(cq, tag, error, done, done_arg, storage, internal);
|
886
896
|
}
|
887
897
|
|