grpc 1.46.3-x86_64-linux → 1.47.0-x86_64-linux
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 +49 -97
- data/include/grpc/event_engine/event_engine.h +42 -7
- data/include/grpc/event_engine/memory_allocator.h +0 -15
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +112 -0
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +100 -36
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +18 -30
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +4 -1
- data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -5
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +42 -20
- data/src/core/ext/filters/client_channel/client_channel.cc +60 -17
- data/src/core/ext/filters/client_channel/client_channel.h +26 -6
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +7 -5
- data/src/core/ext/filters/client_channel/connector.h +8 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +13 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.h +11 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
- data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +9 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +408 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1038 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +60 -52
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +102 -60
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +157 -96
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +45 -10
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -171
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +39 -36
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +30 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +99 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +23 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +75 -11
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +18 -24
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +23 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +134 -43
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +26 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +30 -7
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +59 -13
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +13 -1
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +15 -11
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +89 -33
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +5 -11
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
- data/src/core/ext/filters/client_channel/retry_filter.cc +42 -2
- data/src/core/ext/filters/client_channel/retry_service_config.cc +8 -9
- data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +22 -5
- data/src/core/ext/filters/client_channel/subchannel.cc +156 -160
- data/src/core/ext/filters/client_channel/subchannel.h +80 -20
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +12 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +14 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +7 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +5 -10
- data/src/core/ext/filters/http/http_filters_plugin.cc +7 -8
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +1 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +3 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +80 -247
- data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -26
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +101 -135
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -15
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +69 -20
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +5 -0
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +6 -2
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +7 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +12 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +55 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +24 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +27 -6
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +13 -9
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +38 -2
- data/src/core/ext/transport/inproc/inproc_transport.cc +8 -5
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -2
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -1
- data/src/core/ext/xds/xds_certificate_provider.h +1 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +5 -5
- data/src/core/ext/xds/xds_client.cc +46 -22
- data/src/core/ext/xds/xds_cluster.cc +106 -16
- data/src/core/ext/xds/xds_cluster.h +3 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +3 -3
- data/src/core/ext/xds/xds_listener.cc +19 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +2 -1
- data/src/core/lib/address_utils/sockaddr_utils.cc +56 -23
- data/src/core/lib/address_utils/sockaddr_utils.h +7 -4
- data/src/core/lib/avl/avl.h +3 -1
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +8 -2
- data/src/core/lib/channel/channel_args.cc +41 -22
- data/src/core/lib/channel/channel_args.h +33 -3
- data/src/core/lib/channel/channel_args_preconditioning.cc +3 -3
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
- data/src/core/lib/channel/channel_stack.cc +41 -3
- data/src/core/lib/channel/channel_stack.h +49 -3
- data/src/core/lib/channel/channel_stack_builder.cc +9 -19
- data/src/core/lib/channel/channel_stack_builder.h +15 -27
- data/src/core/lib/channel/channel_stack_builder_impl.cc +36 -41
- data/src/core/lib/channel/channel_stack_builder_impl.h +3 -6
- data/src/core/lib/channel/channel_trace.cc +8 -13
- data/src/core/lib/channel/channel_trace.h +6 -3
- data/src/core/lib/channel/channelz.cc +8 -13
- data/src/core/lib/channel/channelz.h +13 -4
- data/src/core/lib/channel/channelz_registry.cc +7 -14
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +21 -31
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +444 -189
- data/src/core/lib/channel/promise_based_filter.h +160 -27
- data/src/core/lib/channel/status_util.cc +2 -0
- data/src/core/lib/channel/status_util.h +0 -3
- data/src/core/lib/compression/compression_internal.cc +45 -10
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +3 -0
- data/src/core/lib/config/core_configuration.h +2 -1
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
- data/src/core/lib/event_engine/event_engine.cc +12 -2
- data/src/core/lib/event_engine/event_engine_factory.h +5 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/iomgr_engine.cc +206 -0
- data/src/core/lib/event_engine/iomgr_engine.h +118 -0
- data/src/core/lib/event_engine/memory_allocator.cc +12 -4
- data/src/core/lib/event_engine/resolved_address.cc +4 -2
- data/src/core/lib/event_engine/slice.cc +102 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
- data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
- data/src/core/lib/gpr/log.cc +5 -0
- data/src/core/lib/gpr/tls.h +3 -5
- data/src/core/lib/gprpp/bitset.h +5 -1
- data/src/core/lib/gprpp/chunked_vector.h +4 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
- data/src/core/lib/gprpp/examine_stack.h +0 -1
- data/src/core/lib/gprpp/fork.cc +3 -6
- data/src/core/lib/gprpp/global_config.h +2 -4
- data/src/core/lib/gprpp/global_config_env.cc +3 -2
- data/src/core/lib/gprpp/global_config_env.h +3 -1
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/match.h +2 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/orphanable.h +1 -4
- data/src/core/lib/gprpp/ref_counted.h +1 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +7 -2
- data/src/core/lib/gprpp/status_helper.cc +8 -4
- data/src/core/lib/gprpp/status_helper.h +4 -0
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +10 -0
- data/src/core/lib/gprpp/thd.h +2 -5
- data/src/core/lib/gprpp/thd_posix.cc +4 -2
- data/src/core/lib/gprpp/thd_windows.cc +2 -0
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +6 -1
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/http/format_request.cc +29 -0
- data/src/core/lib/http/format_request.h +2 -0
- data/src/core/lib/http/httpcli.cc +88 -81
- data/src/core/lib/http/httpcli.h +39 -7
- data/src/core/lib/http/httpcli_security_connector.cc +3 -4
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +6 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/ev_posix.cc +1 -4
- data/src/core/lib/iomgr/exec_ctx.h +1 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- data/src/core/lib/iomgr/iomgr.cc +0 -1
- data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/port.h +25 -6
- data/src/core/lib/iomgr/resolve_address.cc +8 -0
- data/src/core/lib/iomgr/resolve_address.h +21 -14
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +8 -14
- data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
- data/src/core/lib/iomgr/sockaddr.h +2 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +10 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +12 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +13 -6
- data/src/core/lib/iomgr/tcp_posix.cc +9 -27
- data/src/core/lib/iomgr/tcp_server_posix.cc +26 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +30 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +13 -5
- data/src/core/lib/iomgr/tcp_windows.cc +7 -4
- data/src/core/lib/json/json.h +1 -2
- data/src/core/lib/json/json_reader.cc +9 -1
- data/src/core/lib/json/json_util.cc +7 -0
- data/src/core/lib/json/json_util.h +10 -1
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/lib/promise/activity.cc +1 -1
- data/src/core/lib/promise/activity.h +6 -6
- data/src/core/lib/promise/arena_promise.h +11 -1
- data/src/core/lib/promise/call_push_pull.h +4 -0
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/detail/basic_seq.h +2 -2
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/latch.h +0 -1
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/race.h +0 -1
- data/src/core/lib/promise/seq.h +0 -2
- data/src/core/lib/promise/sleep.cc +2 -0
- data/src/core/lib/promise/sleep.h +10 -0
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resolver/resolver_factory.h +1 -2
- data/src/core/lib/resolver/server_address.cc +9 -3
- data/src/core/lib/resolver/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.cc +14 -1
- data/src/core/lib/resource_quota/api.h +4 -1
- data/src/core/lib/resource_quota/arena.cc +0 -6
- data/src/core/lib/resource_quota/arena.h +1 -2
- data/src/core/lib/resource_quota/memory_quota.cc +47 -5
- data/src/core/lib/resource_quota/memory_quota.h +24 -5
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -0
- data/src/core/lib/resource_quota/thread_quota.h +4 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +8 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +2 -2
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +1 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +7 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +5 -4
- data/src/core/lib/security/credentials/credentials.h +17 -10
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +81 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +8 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +3 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +13 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +25 -15
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +4 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +8 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +4 -4
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +8 -2
- data/src/core/lib/security/credentials/local/local_credentials.h +2 -2
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +4 -1
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +5 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +26 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +28 -4
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +10 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +12 -3
- data/src/core/lib/security/credentials/xds/xds_credentials.h +5 -5
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +6 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +23 -12
- data/src/core/lib/security/transport/security_handshaker.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -2
- data/src/core/lib/service_config/service_config.h +4 -8
- data/src/core/lib/service_config/service_config_call_data.h +4 -1
- data/src/core/lib/service_config/service_config_impl.cc +7 -0
- data/src/core/lib/service_config/service_config_impl.h +9 -2
- data/src/core/lib/service_config/service_config_parser.cc +8 -0
- data/src/core/lib/service_config/service_config_parser.h +7 -0
- data/src/core/lib/slice/b64.cc +1 -1
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +4 -1
- data/src/core/lib/slice/percent_encoding.h +0 -6
- data/src/core/lib/slice/slice.cc +2 -1
- data/src/core/lib/slice/slice.h +10 -5
- data/src/core/lib/slice/slice_api.cc +1 -1
- data/src/core/lib/slice/slice_buffer.cc +50 -23
- data/src/core/lib/slice/slice_buffer.h +106 -0
- data/src/core/lib/slice/slice_buffer_api.cc +35 -0
- data/src/core/lib/slice/slice_internal.h +4 -3
- data/src/core/lib/slice/slice_refcount.h +2 -3
- data/src/core/lib/slice/slice_refcount_base.h +2 -3
- data/src/core/lib/slice/slice_split.cc +3 -0
- data/src/core/lib/slice/slice_split.h +0 -4
- data/src/core/lib/slice/slice_string_helpers.cc +4 -0
- data/src/core/lib/slice/slice_string_helpers.h +1 -4
- data/src/core/lib/surface/builtins.cc +7 -2
- data/src/core/lib/surface/byte_buffer.cc +7 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +41 -26
- data/src/core/lib/surface/call.h +16 -2
- data/src/core/lib/surface/call_details.cc +4 -4
- data/src/core/lib/surface/call_log_batch.cc +7 -1
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/channel.cc +179 -242
- data/src/core/lib/surface/channel.h +94 -57
- data/src/core/lib/surface/channel_init.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +8 -2
- data/src/core/lib/surface/channel_stack_type.cc +0 -2
- data/src/core/lib/surface/channel_stack_type.h +0 -2
- data/src/core/lib/surface/completion_queue.cc +14 -6
- data/src/core/lib/surface/completion_queue.h +5 -1
- data/src/core/lib/surface/completion_queue_factory.cc +1 -0
- data/src/core/lib/surface/completion_queue_factory.h +1 -3
- data/src/core/lib/surface/event_string.cc +1 -7
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +17 -45
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/lame_client.cc +64 -110
- data/src/core/lib/surface/lame_client.h +40 -2
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +69 -56
- data/src/core/lib/surface/server.h +39 -9
- data/src/core/lib/surface/validate_metadata.cc +2 -5
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -3
- data/src/core/lib/transport/byte_stream.cc +4 -3
- data/src/core/lib/transport/byte_stream.h +5 -1
- data/src/core/lib/transport/connectivity_state.cc +6 -4
- data/src/core/lib/transport/connectivity_state.h +2 -3
- data/src/core/lib/transport/error_utils.cc +4 -2
- data/src/core/lib/transport/error_utils.h +5 -1
- data/src/core/lib/{channel → transport}/handshaker.cc +9 -4
- data/src/core/lib/{channel → transport}/handshaker.h +13 -6
- data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
- data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
- data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +24 -10
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +287 -0
- data/src/core/lib/transport/metadata_batch.h +133 -264
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +10 -3
- data/src/core/lib/transport/status_conversion.cc +2 -0
- data/src/core/lib/transport/status_conversion.h +2 -2
- data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +2 -6
- data/src/core/lib/transport/timeout_encoding.h +5 -1
- data/src/core/lib/transport/transport.cc +18 -17
- data/src/core/lib/transport/transport.h +28 -2
- data/src/core/lib/transport/transport_impl.h +10 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -10
- data/src/core/lib/uri/uri_parser.cc +11 -3
- data/src/core/lib/uri/uri_parser.h +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
- data/src/ruby/ext/grpc/extconf.rb +2 -2
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
- metadata +36 -29
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- data/src/core/lib/gprpp/capture.h +0 -76
- data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
- data/src/core/lib/iomgr/event_engine/closure.h +0 -42
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
- data/src/core/lib/iomgr/event_engine/promise.h +0 -51
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
- data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
@@ -21,6 +21,8 @@
|
|
21
21
|
#include "absl/strings/str_join.h"
|
22
22
|
#include "absl/strings/str_replace.h"
|
23
23
|
|
24
|
+
#include <grpc/support/string_util.h>
|
25
|
+
|
24
26
|
#include "src/core/lib/gpr/env.h"
|
25
27
|
#include "src/core/lib/http/httpcli_ssl_credentials.h"
|
26
28
|
|
@@ -119,6 +121,12 @@ AwsExternalAccountCredentials::AwsExternalAccountCredentials(
|
|
119
121
|
return;
|
120
122
|
}
|
121
123
|
regional_cred_verification_url_ = it->second.string_value();
|
124
|
+
it =
|
125
|
+
options.credential_source.object_value().find("imdsv2_session_token_url");
|
126
|
+
if (it != options.credential_source.object_value().end() &&
|
127
|
+
it->second.type() == Json::Type::STRING) {
|
128
|
+
imdsv2_session_token_url_ = it->second.string_value();
|
129
|
+
}
|
122
130
|
}
|
123
131
|
|
124
132
|
void AwsExternalAccountCredentials::RetrieveSubjectToken(
|
@@ -133,6 +141,62 @@ void AwsExternalAccountCredentials::RetrieveSubjectToken(
|
|
133
141
|
}
|
134
142
|
ctx_ = ctx;
|
135
143
|
cb_ = cb;
|
144
|
+
if (!imdsv2_session_token_url_.empty()) {
|
145
|
+
RetrieveImdsV2SessionToken();
|
146
|
+
} else if (signer_ != nullptr) {
|
147
|
+
BuildSubjectToken();
|
148
|
+
} else {
|
149
|
+
RetrieveRegion();
|
150
|
+
}
|
151
|
+
}
|
152
|
+
|
153
|
+
void AwsExternalAccountCredentials::RetrieveImdsV2SessionToken() {
|
154
|
+
absl::StatusOr<URI> uri = URI::Parse(imdsv2_session_token_url_);
|
155
|
+
if (!uri.ok()) {
|
156
|
+
return;
|
157
|
+
}
|
158
|
+
grpc_http_header* headers =
|
159
|
+
static_cast<grpc_http_header*>(gpr_malloc(sizeof(grpc_http_header)));
|
160
|
+
headers[0].key = gpr_strdup("x-aws-ec2-metadata-token-ttl-seconds");
|
161
|
+
headers[0].value = gpr_strdup("300");
|
162
|
+
grpc_http_request request;
|
163
|
+
memset(&request, 0, sizeof(grpc_http_request));
|
164
|
+
request.hdr_count = 1;
|
165
|
+
request.hdrs = headers;
|
166
|
+
grpc_http_response_destroy(&ctx_->response);
|
167
|
+
ctx_->response = {};
|
168
|
+
GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveImdsV2SessionToken, this,
|
169
|
+
nullptr);
|
170
|
+
RefCountedPtr<grpc_channel_credentials> http_request_creds;
|
171
|
+
if (uri->scheme() == "http") {
|
172
|
+
http_request_creds = RefCountedPtr<grpc_channel_credentials>(
|
173
|
+
grpc_insecure_credentials_create());
|
174
|
+
} else {
|
175
|
+
http_request_creds = CreateHttpRequestSSLCredentials();
|
176
|
+
}
|
177
|
+
http_request_ =
|
178
|
+
HttpRequest::Put(std::move(*uri), nullptr /* channel args */,
|
179
|
+
ctx_->pollent, &request, ctx_->deadline, &ctx_->closure,
|
180
|
+
&ctx_->response, std::move(http_request_creds));
|
181
|
+
http_request_->Start();
|
182
|
+
grpc_http_request_destroy(&request);
|
183
|
+
}
|
184
|
+
|
185
|
+
void AwsExternalAccountCredentials::OnRetrieveImdsV2SessionToken(
|
186
|
+
void* arg, grpc_error_handle error) {
|
187
|
+
AwsExternalAccountCredentials* self =
|
188
|
+
static_cast<AwsExternalAccountCredentials*>(arg);
|
189
|
+
self->OnRetrieveImdsV2SessionTokenInternal(GRPC_ERROR_REF(error));
|
190
|
+
}
|
191
|
+
|
192
|
+
void AwsExternalAccountCredentials::OnRetrieveImdsV2SessionTokenInternal(
|
193
|
+
grpc_error_handle error) {
|
194
|
+
if (error != GRPC_ERROR_NONE) {
|
195
|
+
FinishRetrieveSubjectToken("", error);
|
196
|
+
return;
|
197
|
+
}
|
198
|
+
imdsv2_session_token_ =
|
199
|
+
std::string(ctx_->response.body, ctx_->response.body_length);
|
136
200
|
if (signer_ != nullptr) {
|
137
201
|
BuildSubjectToken();
|
138
202
|
} else {
|
@@ -140,6 +204,20 @@ void AwsExternalAccountCredentials::RetrieveSubjectToken(
|
|
140
204
|
}
|
141
205
|
}
|
142
206
|
|
207
|
+
void AwsExternalAccountCredentials::AddMetadataRequestHeaders(
|
208
|
+
grpc_http_request* request) {
|
209
|
+
if (!imdsv2_session_token_.empty()) {
|
210
|
+
GPR_ASSERT(request->hdr_count == 0);
|
211
|
+
GPR_ASSERT(request->hdrs == nullptr);
|
212
|
+
grpc_http_header* headers =
|
213
|
+
static_cast<grpc_http_header*>(gpr_malloc(sizeof(grpc_http_header)));
|
214
|
+
headers[0].key = gpr_strdup("x-aws-ec2-metadata-token");
|
215
|
+
headers[0].value = gpr_strdup(imdsv2_session_token_.c_str());
|
216
|
+
request->hdr_count = 1;
|
217
|
+
request->hdrs = headers;
|
218
|
+
}
|
219
|
+
}
|
220
|
+
|
143
221
|
void AwsExternalAccountCredentials::RetrieveRegion() {
|
144
222
|
UniquePtr<char> region_from_env(gpr_getenv(kRegionEnvVar));
|
145
223
|
if (region_from_env == nullptr) {
|
@@ -165,6 +243,7 @@ void AwsExternalAccountCredentials::RetrieveRegion() {
|
|
165
243
|
memset(&request, 0, sizeof(grpc_http_request));
|
166
244
|
grpc_http_response_destroy(&ctx_->response);
|
167
245
|
ctx_->response = {};
|
246
|
+
AddMetadataRequestHeaders(&request);
|
168
247
|
GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveRegion, this, nullptr);
|
169
248
|
RefCountedPtr<grpc_channel_credentials> http_request_creds;
|
170
249
|
if (uri->scheme() == "http") {
|
@@ -217,6 +296,7 @@ void AwsExternalAccountCredentials::RetrieveRoleName() {
|
|
217
296
|
memset(&request, 0, sizeof(grpc_http_request));
|
218
297
|
grpc_http_response_destroy(&ctx_->response);
|
219
298
|
ctx_->response = {};
|
299
|
+
AddMetadataRequestHeaders(&request);
|
220
300
|
GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveRoleName, this, nullptr);
|
221
301
|
// TODO(ctiller): use the caller's resource quota.
|
222
302
|
RefCountedPtr<grpc_channel_credentials> http_request_creds;
|
@@ -282,6 +362,7 @@ void AwsExternalAccountCredentials::RetrieveSigningKeys() {
|
|
282
362
|
memset(&request, 0, sizeof(grpc_http_request));
|
283
363
|
grpc_http_response_destroy(&ctx_->response);
|
284
364
|
ctx_->response = {};
|
365
|
+
AddMetadataRequestHeaders(&request);
|
285
366
|
GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveSigningKeys, this, nullptr);
|
286
367
|
// TODO(ctiller): use the caller's resource quota.
|
287
368
|
RefCountedPtr<grpc_channel_credentials> http_request_creds;
|
@@ -43,6 +43,10 @@ class AwsExternalAccountCredentials final : public ExternalAccountCredentials {
|
|
43
43
|
static void OnRetrieveRegion(void* arg, grpc_error_handle error);
|
44
44
|
void OnRetrieveRegionInternal(grpc_error_handle error);
|
45
45
|
|
46
|
+
void RetrieveImdsV2SessionToken();
|
47
|
+
static void OnRetrieveImdsV2SessionToken(void* arg, grpc_error_handle error);
|
48
|
+
void OnRetrieveImdsV2SessionTokenInternal(grpc_error_handle error);
|
49
|
+
|
46
50
|
void RetrieveRoleName();
|
47
51
|
static void OnRetrieveRoleName(void* arg, grpc_error_handle error);
|
48
52
|
void OnRetrieveRoleNameInternal(grpc_error_handle error);
|
@@ -55,6 +59,8 @@ class AwsExternalAccountCredentials final : public ExternalAccountCredentials {
|
|
55
59
|
void FinishRetrieveSubjectToken(std::string subject_token,
|
56
60
|
grpc_error_handle error);
|
57
61
|
|
62
|
+
void AddMetadataRequestHeaders(grpc_http_request* request);
|
63
|
+
|
58
64
|
std::string audience_;
|
59
65
|
OrphanablePtr<HttpRequest> http_request_;
|
60
66
|
|
@@ -62,6 +68,7 @@ class AwsExternalAccountCredentials final : public ExternalAccountCredentials {
|
|
62
68
|
std::string region_url_;
|
63
69
|
std::string url_;
|
64
70
|
std::string regional_cred_verification_url_;
|
71
|
+
std::string imdsv2_session_token_url_;
|
65
72
|
|
66
73
|
// Information required by request signer
|
67
74
|
std::string region_;
|
@@ -69,6 +76,7 @@ class AwsExternalAccountCredentials final : public ExternalAccountCredentials {
|
|
69
76
|
std::string access_key_id_;
|
70
77
|
std::string secret_access_key_;
|
71
78
|
std::string token_;
|
79
|
+
std::string imdsv2_session_token_;
|
72
80
|
|
73
81
|
std::unique_ptr<AwsRequestSigner> signer_;
|
74
82
|
std::string cred_verification_url_;
|
@@ -13,6 +13,7 @@
|
|
13
13
|
// See the License for the specific language governing permissions and
|
14
14
|
// limitations under the License.
|
15
15
|
//
|
16
|
+
|
16
17
|
#include <grpc/support/port_platform.h>
|
17
18
|
|
18
19
|
#include "src/core/lib/security/credentials/external/external_account_credentials.h"
|
@@ -25,6 +26,8 @@
|
|
25
26
|
#include "absl/time/clock.h"
|
26
27
|
#include "absl/time/time.h"
|
27
28
|
|
29
|
+
#include <grpc/support/string_util.h>
|
30
|
+
|
28
31
|
#include "src/core/lib/http/httpcli_ssl_credentials.h"
|
29
32
|
#include "src/core/lib/http/parser.h"
|
30
33
|
#include "src/core/lib/security/credentials/external/aws_external_account_credentials.h"
|
@@ -35,6 +35,7 @@
|
|
35
35
|
/* -- Fake transport security credentials. -- */
|
36
36
|
|
37
37
|
namespace {
|
38
|
+
|
38
39
|
class grpc_fake_channel_credentials final : public grpc_channel_credentials {
|
39
40
|
public:
|
40
41
|
grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
@@ -46,7 +47,10 @@ class grpc_fake_channel_credentials final : public grpc_channel_credentials {
|
|
46
47
|
this->Ref(), std::move(call_creds), target, args);
|
47
48
|
}
|
48
49
|
|
49
|
-
|
50
|
+
grpc_core::UniqueTypeName type() const override {
|
51
|
+
static grpc_core::UniqueTypeName::Factory kFactory("Fake");
|
52
|
+
return kFactory.Create();
|
53
|
+
}
|
50
54
|
|
51
55
|
private:
|
52
56
|
int cmp_impl(const grpc_channel_credentials* other) const override {
|
@@ -63,7 +67,10 @@ class grpc_fake_server_credentials final : public grpc_server_credentials {
|
|
63
67
|
return grpc_fake_server_security_connector_create(this->Ref());
|
64
68
|
}
|
65
69
|
|
66
|
-
|
70
|
+
grpc_core::UniqueTypeName type() const override {
|
71
|
+
static grpc_core::UniqueTypeName::Factory kFactory("Fake");
|
72
|
+
return kFactory.Create();
|
73
|
+
}
|
67
74
|
};
|
68
75
|
} // namespace
|
69
76
|
|
@@ -101,7 +108,10 @@ grpc_md_only_test_credentials::GetRequestMetadata(
|
|
101
108
|
return grpc_core::Immediate(std::move(initial_metadata));
|
102
109
|
}
|
103
110
|
|
104
|
-
|
111
|
+
grpc_core::UniqueTypeName grpc_md_only_test_credentials::Type() {
|
112
|
+
static grpc_core::UniqueTypeName::Factory kFactory("MdOnlyTest");
|
113
|
+
return kFactory.Create();
|
114
|
+
}
|
105
115
|
|
106
116
|
grpc_call_credentials* grpc_md_only_test_credentials_create(
|
107
117
|
const char* md_key, const char* md_value) {
|
@@ -70,9 +70,9 @@ class grpc_md_only_test_credentials : public grpc_call_credentials {
|
|
70
70
|
|
71
71
|
std::string debug_string() override { return "MD only Test Credentials"; }
|
72
72
|
|
73
|
-
static
|
73
|
+
static grpc_core::UniqueTypeName Type();
|
74
74
|
|
75
|
-
|
75
|
+
grpc_core::UniqueTypeName type() const override { return Type(); }
|
76
76
|
|
77
77
|
private:
|
78
78
|
int cmp_impl(const grpc_call_credentials* other) const override {
|
@@ -49,6 +49,7 @@
|
|
49
49
|
#include "src/core/lib/slice/slice_internal.h"
|
50
50
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
51
51
|
#include "src/core/lib/surface/api_trace.h"
|
52
|
+
#include "src/core/lib/uri/uri_parser.h"
|
52
53
|
|
53
54
|
using grpc_core::Json;
|
54
55
|
|
@@ -83,6 +84,21 @@ struct metadata_server_detector {
|
|
83
84
|
int success;
|
84
85
|
grpc_http_response response;
|
85
86
|
};
|
87
|
+
|
88
|
+
namespace {
|
89
|
+
|
90
|
+
bool IsXdsNonCfeCluster(const char* xds_cluster) {
|
91
|
+
if (xds_cluster == nullptr) return false;
|
92
|
+
if (absl::StartsWith(xds_cluster, "google_cfe_")) return false;
|
93
|
+
if (!absl::StartsWith(xds_cluster, "xdstp:")) return true;
|
94
|
+
auto uri = grpc_core::URI::Parse(xds_cluster);
|
95
|
+
if (!uri.ok()) return true; // Shouldn't happen, but assume ALTS.
|
96
|
+
return !absl::StartsWith(uri->path(),
|
97
|
+
"/envoy.config.cluster.v3.Cluster/google_cfe_");
|
98
|
+
}
|
99
|
+
|
100
|
+
} // namespace
|
101
|
+
|
86
102
|
grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
87
103
|
grpc_google_default_channel_credentials::create_security_connector(
|
88
104
|
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
|
@@ -94,8 +110,7 @@ grpc_google_default_channel_credentials::create_security_connector(
|
|
94
110
|
args, GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER, false);
|
95
111
|
const char* xds_cluster =
|
96
112
|
grpc_channel_args_find_string(args, GRPC_ARG_XDS_CLUSTER_NAME);
|
97
|
-
const bool is_xds_non_cfe_cluster =
|
98
|
-
xds_cluster != nullptr && !absl::StartsWith(xds_cluster, "google_cfe_");
|
113
|
+
const bool is_xds_non_cfe_cluster = IsXdsNonCfeCluster(xds_cluster);
|
99
114
|
const bool use_alts = is_grpclb_load_balancer ||
|
100
115
|
is_backend_from_grpclb_load_balancer ||
|
101
116
|
is_xds_non_cfe_cluster;
|
@@ -125,21 +140,16 @@ grpc_google_default_channel_credentials::create_security_connector(
|
|
125
140
|
return sc;
|
126
141
|
}
|
127
142
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
nullptr) {
|
133
|
-
grpc_arg new_srv_arg = grpc_channel_arg_integer_create(
|
134
|
-
const_cast<char*>(GRPC_ARG_DNS_ENABLE_SRV_QUERIES), true);
|
135
|
-
updated = grpc_channel_args_copy_and_add(args, &new_srv_arg, 1);
|
136
|
-
grpc_channel_args_destroy(args);
|
137
|
-
}
|
138
|
-
return updated;
|
143
|
+
grpc_core::ChannelArgs
|
144
|
+
grpc_google_default_channel_credentials::update_arguments(
|
145
|
+
grpc_core::ChannelArgs args) {
|
146
|
+
return args.SetIfUnset(GRPC_ARG_DNS_ENABLE_SRV_QUERIES, true);
|
139
147
|
}
|
140
148
|
|
141
|
-
|
142
|
-
|
149
|
+
grpc_core::UniqueTypeName grpc_google_default_channel_credentials::type()
|
150
|
+
const {
|
151
|
+
static grpc_core::UniqueTypeName::Factory kFactory("GoogleDefault");
|
152
|
+
return kFactory.Create();
|
143
153
|
}
|
144
154
|
|
145
155
|
static void on_metadata_server_detection_http_response(
|
@@ -56,9 +56,9 @@ class grpc_google_default_channel_credentials
|
|
56
56
|
const char* target, const grpc_channel_args* args,
|
57
57
|
grpc_channel_args** new_args) override;
|
58
58
|
|
59
|
-
|
59
|
+
grpc_core::ChannelArgs update_arguments(grpc_core::ChannelArgs args) override;
|
60
60
|
|
61
|
-
|
61
|
+
grpc_core::UniqueTypeName type() const override;
|
62
62
|
|
63
63
|
const grpc_channel_credentials* alts_creds() const {
|
64
64
|
return alts_creds_.get();
|
@@ -56,7 +56,10 @@ grpc_google_iam_credentials::grpc_google_iam_credentials(
|
|
56
56
|
"GoogleIAMCredentials{Token:%s,AuthoritySelector:%s}",
|
57
57
|
token != nullptr ? "present" : "absent", authority_selector)) {}
|
58
58
|
|
59
|
-
|
59
|
+
grpc_core::UniqueTypeName grpc_google_iam_credentials::Type() {
|
60
|
+
static grpc_core::UniqueTypeName::Factory kFactory("Iam");
|
61
|
+
return kFactory.Create();
|
62
|
+
}
|
60
63
|
|
61
64
|
grpc_call_credentials* grpc_google_iam_credentials_create(
|
62
65
|
const char* token, const char* authority_selector, void* reserved) {
|
@@ -36,9 +36,9 @@ class grpc_google_iam_credentials : public grpc_call_credentials {
|
|
36
36
|
|
37
37
|
std::string debug_string() override { return debug_string_; }
|
38
38
|
|
39
|
-
static
|
39
|
+
static grpc_core::UniqueTypeName Type();
|
40
40
|
|
41
|
-
|
41
|
+
grpc_core::UniqueTypeName type() const override { return Type(); }
|
42
42
|
|
43
43
|
private:
|
44
44
|
int cmp_impl(const grpc_call_credentials* other) const override {
|
@@ -33,7 +33,10 @@ InsecureCredentials::create_security_connector(
|
|
33
33
|
Ref(), std::move(request_metadata_creds));
|
34
34
|
}
|
35
35
|
|
36
|
-
|
36
|
+
UniqueTypeName InsecureCredentials::Type() {
|
37
|
+
static UniqueTypeName::Factory kFactory("Insecure");
|
38
|
+
return kFactory.Create();
|
39
|
+
}
|
37
40
|
|
38
41
|
int InsecureCredentials::cmp_impl(
|
39
42
|
const grpc_channel_credentials* /* other */) const {
|
@@ -47,7 +50,10 @@ InsecureServerCredentials::create_security_connector(
|
|
47
50
|
return MakeRefCounted<InsecureServerSecurityConnector>(Ref());
|
48
51
|
}
|
49
52
|
|
50
|
-
|
53
|
+
UniqueTypeName InsecureServerCredentials::Type() {
|
54
|
+
static auto* kFactory = new UniqueTypeName::Factory("Insecure");
|
55
|
+
return kFactory->Create();
|
56
|
+
}
|
51
57
|
|
52
58
|
} // namespace grpc_core
|
53
59
|
|
@@ -34,9 +34,9 @@ class InsecureCredentials final : public grpc_channel_credentials {
|
|
34
34
|
const char* /* target_name */, const grpc_channel_args* /* args */,
|
35
35
|
grpc_channel_args** /* new_args */) override;
|
36
36
|
|
37
|
-
static
|
37
|
+
static UniqueTypeName Type();
|
38
38
|
|
39
|
-
|
39
|
+
UniqueTypeName type() const override { return Type(); }
|
40
40
|
|
41
41
|
private:
|
42
42
|
int cmp_impl(const grpc_channel_credentials* other) const override;
|
@@ -47,9 +47,9 @@ class InsecureServerCredentials final : public grpc_server_credentials {
|
|
47
47
|
RefCountedPtr<grpc_server_security_connector> create_security_connector(
|
48
48
|
const grpc_channel_args* /* args */) override;
|
49
49
|
|
50
|
-
static
|
50
|
+
static UniqueTypeName Type();
|
51
51
|
|
52
|
-
|
52
|
+
UniqueTypeName type() const override { return Type(); }
|
53
53
|
};
|
54
54
|
|
55
55
|
} // namespace grpc_core
|
@@ -118,8 +118,9 @@ grpc_service_account_jwt_access_credentials::
|
|
118
118
|
gpr_mu_init(&cache_mu_);
|
119
119
|
}
|
120
120
|
|
121
|
-
|
122
|
-
|
121
|
+
grpc_core::UniqueTypeName grpc_service_account_jwt_access_credentials::Type() {
|
122
|
+
static grpc_core::UniqueTypeName::Factory kFactory("Jwt");
|
123
|
+
return kFactory.Create();
|
123
124
|
}
|
124
125
|
|
125
126
|
grpc_core::RefCountedPtr<grpc_call_credentials>
|
@@ -52,9 +52,9 @@ class grpc_service_account_jwt_access_credentials
|
|
52
52
|
static_cast<int64_t>(gpr_timespec_to_micros(jwt_lifetime_)))));
|
53
53
|
};
|
54
54
|
|
55
|
-
static
|
55
|
+
static grpc_core::UniqueTypeName Type();
|
56
56
|
|
57
|
-
|
57
|
+
grpc_core::UniqueTypeName type() const override { return Type(); }
|
58
58
|
|
59
59
|
private:
|
60
60
|
int cmp_impl(const grpc_call_credentials* other) const override {
|
@@ -36,7 +36,10 @@ grpc_local_credentials::create_security_connector(
|
|
36
36
|
this->Ref(), std::move(request_metadata_creds), args, target_name);
|
37
37
|
}
|
38
38
|
|
39
|
-
|
39
|
+
grpc_core::UniqueTypeName grpc_local_credentials::type() const {
|
40
|
+
static grpc_core::UniqueTypeName::Factory kFactory("Local");
|
41
|
+
return kFactory.Create();
|
42
|
+
}
|
40
43
|
|
41
44
|
grpc_core::RefCountedPtr<grpc_server_security_connector>
|
42
45
|
grpc_local_server_credentials::create_security_connector(
|
@@ -44,7 +47,10 @@ grpc_local_server_credentials::create_security_connector(
|
|
44
47
|
return grpc_local_server_security_connector_create(this->Ref());
|
45
48
|
}
|
46
49
|
|
47
|
-
|
50
|
+
grpc_core::UniqueTypeName grpc_local_server_credentials::type() const {
|
51
|
+
static grpc_core::UniqueTypeName::Factory kFactory("Local");
|
52
|
+
return kFactory.Create();
|
53
|
+
}
|
48
54
|
|
49
55
|
grpc_local_credentials::grpc_local_credentials(
|
50
56
|
grpc_local_connect_type connect_type)
|
@@ -37,7 +37,7 @@ class grpc_local_credentials final : public grpc_channel_credentials {
|
|
37
37
|
const char* target_name, const grpc_channel_args* args,
|
38
38
|
grpc_channel_args** new_args) override;
|
39
39
|
|
40
|
-
|
40
|
+
grpc_core::UniqueTypeName type() const override;
|
41
41
|
|
42
42
|
grpc_local_connect_type connect_type() const { return connect_type_; }
|
43
43
|
|
@@ -60,7 +60,7 @@ class grpc_local_server_credentials final : public grpc_server_credentials {
|
|
60
60
|
grpc_core::RefCountedPtr<grpc_server_security_connector>
|
61
61
|
create_security_connector(const grpc_channel_args* /* args */) override;
|
62
62
|
|
63
|
-
|
63
|
+
grpc_core::UniqueTypeName type() const override;
|
64
64
|
|
65
65
|
grpc_local_connect_type connect_type() const { return connect_type_; }
|
66
66
|
|
@@ -38,7 +38,6 @@
|
|
38
38
|
#include <grpc/support/string_util.h>
|
39
39
|
|
40
40
|
#include "src/core/lib/gpr/string.h"
|
41
|
-
#include "src/core/lib/gprpp/capture.h"
|
42
41
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
43
42
|
#include "src/core/lib/http/httpcli_ssl_credentials.h"
|
44
43
|
#include "src/core/lib/iomgr/error.h"
|
@@ -347,8 +346,9 @@ std::string grpc_oauth2_token_fetcher_credentials::debug_string() {
|
|
347
346
|
return "OAuth2TokenFetcherCredentials";
|
348
347
|
}
|
349
348
|
|
350
|
-
|
351
|
-
|
349
|
+
grpc_core::UniqueTypeName grpc_oauth2_token_fetcher_credentials::type() const {
|
350
|
+
static grpc_core::UniqueTypeName::Factory kFactory("Oauth2");
|
351
|
+
return kFactory.Create();
|
352
352
|
}
|
353
353
|
|
354
354
|
//
|
@@ -476,8 +476,9 @@ std::string grpc_google_refresh_token_credentials::debug_string() {
|
|
476
476
|
grpc_oauth2_token_fetcher_credentials::debug_string());
|
477
477
|
}
|
478
478
|
|
479
|
-
|
480
|
-
|
479
|
+
grpc_core::UniqueTypeName grpc_google_refresh_token_credentials::type() const {
|
480
|
+
static grpc_core::UniqueTypeName::Factory kFactory("GoogleRefreshToken");
|
481
|
+
return kFactory.Create();
|
481
482
|
}
|
482
483
|
|
483
484
|
static std::string create_loggable_refresh_token(
|
@@ -713,7 +714,10 @@ grpc_access_token_credentials::GetRequestMetadata(
|
|
713
714
|
return grpc_core::Immediate(std::move(initial_metadata));
|
714
715
|
}
|
715
716
|
|
716
|
-
|
717
|
+
grpc_core::UniqueTypeName grpc_access_token_credentials::Type() {
|
718
|
+
static grpc_core::UniqueTypeName::Factory kFactory("AccessToken");
|
719
|
+
return kFactory.Create();
|
720
|
+
}
|
717
721
|
|
718
722
|
grpc_access_token_credentials::grpc_access_token_credentials(
|
719
723
|
const char* access_token)
|
@@ -102,7 +102,7 @@ class grpc_oauth2_token_fetcher_credentials : public grpc_call_credentials {
|
|
102
102
|
grpc_error_handle error);
|
103
103
|
std::string debug_string() override;
|
104
104
|
|
105
|
-
|
105
|
+
grpc_core::UniqueTypeName type() const override;
|
106
106
|
|
107
107
|
protected:
|
108
108
|
virtual void fetch_oauth2(grpc_credentials_metadata_request* req,
|
@@ -138,7 +138,7 @@ class grpc_google_refresh_token_credentials final
|
|
138
138
|
|
139
139
|
std::string debug_string() override;
|
140
140
|
|
141
|
-
|
141
|
+
grpc_core::UniqueTypeName type() const override;
|
142
142
|
|
143
143
|
protected:
|
144
144
|
void fetch_oauth2(grpc_credentials_metadata_request* req,
|
@@ -162,9 +162,9 @@ class grpc_access_token_credentials final : public grpc_call_credentials {
|
|
162
162
|
|
163
163
|
std::string debug_string() override;
|
164
164
|
|
165
|
-
static
|
165
|
+
static grpc_core::UniqueTypeName Type();
|
166
166
|
|
167
|
-
|
167
|
+
grpc_core::UniqueTypeName type() const override { return Type(); }
|
168
168
|
|
169
169
|
private:
|
170
170
|
int cmp_impl(const grpc_call_credentials* other) const override {
|
@@ -60,7 +60,10 @@ std::string grpc_plugin_credentials::debug_string() {
|
|
60
60
|
return debug_str;
|
61
61
|
}
|
62
62
|
|
63
|
-
|
63
|
+
grpc_core::UniqueTypeName grpc_plugin_credentials::type() const {
|
64
|
+
static grpc_core::UniqueTypeName::Factory kFactory("Plugin");
|
65
|
+
return kFactory.Create();
|
66
|
+
}
|
64
67
|
|
65
68
|
absl::StatusOr<grpc_core::ClientMetadataHandle>
|
66
69
|
grpc_plugin_credentials::PendingRequest::ProcessPluginResult(
|
@@ -41,7 +41,7 @@ struct grpc_plugin_credentials final : public grpc_call_credentials {
|
|
41
41
|
|
42
42
|
std::string debug_string() override;
|
43
43
|
|
44
|
-
|
44
|
+
grpc_core::UniqueTypeName type() const override;
|
45
45
|
|
46
46
|
private:
|
47
47
|
class PendingRequest : public grpc_core::RefCounted<PendingRequest> {
|
@@ -82,7 +82,10 @@ grpc_ssl_credentials::create_security_connector(
|
|
82
82
|
return sc;
|
83
83
|
}
|
84
84
|
|
85
|
-
|
85
|
+
grpc_core::UniqueTypeName grpc_ssl_credentials::Type() {
|
86
|
+
static grpc_core::UniqueTypeName::Factory kFactory("Ssl");
|
87
|
+
return kFactory.Create();
|
88
|
+
}
|
86
89
|
|
87
90
|
void grpc_ssl_credentials::build_config(
|
88
91
|
const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pair,
|
@@ -186,7 +189,10 @@ grpc_ssl_server_credentials::create_security_connector(
|
|
186
189
|
return grpc_ssl_server_security_connector_create(this->Ref());
|
187
190
|
}
|
188
191
|
|
189
|
-
|
192
|
+
grpc_core::UniqueTypeName grpc_ssl_server_credentials::Type() {
|
193
|
+
static grpc_core::UniqueTypeName::Factory kFactory("Ssl");
|
194
|
+
return kFactory.Create();
|
195
|
+
}
|
190
196
|
|
191
197
|
tsi_ssl_pem_key_cert_pair* grpc_convert_grpc_to_tsi_cert_pairs(
|
192
198
|
const grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
|
@@ -37,9 +37,9 @@ class grpc_ssl_credentials : public grpc_channel_credentials {
|
|
37
37
|
const char* target, const grpc_channel_args* args,
|
38
38
|
grpc_channel_args** new_args) override;
|
39
39
|
|
40
|
-
static
|
40
|
+
static grpc_core::UniqueTypeName Type();
|
41
41
|
|
42
|
-
|
42
|
+
grpc_core::UniqueTypeName type() const override { return Type(); }
|
43
43
|
|
44
44
|
// TODO(mattstev): Plumb to wrapped languages. Until then, setting the TLS
|
45
45
|
// version should be done for testing purposes only.
|
@@ -80,9 +80,9 @@ class grpc_ssl_server_credentials final : public grpc_server_credentials {
|
|
80
80
|
grpc_core::RefCountedPtr<grpc_server_security_connector>
|
81
81
|
create_security_connector(const grpc_channel_args* /* args */) override;
|
82
82
|
|
83
|
-
static
|
83
|
+
static grpc_core::UniqueTypeName Type();
|
84
84
|
|
85
|
-
|
85
|
+
grpc_core::UniqueTypeName type() const override { return Type(); }
|
86
86
|
|
87
87
|
bool has_cert_config_fetcher() const {
|
88
88
|
return certificate_config_fetcher_.cb != nullptr;
|
@@ -85,6 +85,11 @@ StaticDataCertificateProvider::~StaticDataCertificateProvider() {
|
|
85
85
|
distributor_->SetWatchStatusCallback(nullptr);
|
86
86
|
}
|
87
87
|
|
88
|
+
UniqueTypeName StaticDataCertificateProvider::type() const {
|
89
|
+
static UniqueTypeName::Factory kFactory("StaticData");
|
90
|
+
return kFactory.Create();
|
91
|
+
}
|
92
|
+
|
88
93
|
namespace {
|
89
94
|
|
90
95
|
gpr_timespec TimeoutSecondsToDeadline(int64_t seconds) {
|
@@ -177,6 +182,11 @@ FileWatcherCertificateProvider::~FileWatcherCertificateProvider() {
|
|
177
182
|
refresh_thread_.Join();
|
178
183
|
}
|
179
184
|
|
185
|
+
UniqueTypeName FileWatcherCertificateProvider::type() const {
|
186
|
+
static UniqueTypeName::Factory kFactory("FileWatcher");
|
187
|
+
return kFactory.Create();
|
188
|
+
}
|
189
|
+
|
180
190
|
void FileWatcherCertificateProvider::ForceUpdate() {
|
181
191
|
absl::optional<std::string> root_certificate;
|
182
192
|
absl::optional<PemKeyCertPairList> pem_key_cert_pairs;
|