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
@@ -30,6 +30,7 @@
|
|
30
30
|
#include "src/core/lib/gprpp/ref_counted.h"
|
31
31
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
32
32
|
#include "src/core/lib/gprpp/thd.h"
|
33
|
+
#include "src/core/lib/gprpp/unique_type_name.h"
|
33
34
|
#include "src/core/lib/iomgr/load_file.h"
|
34
35
|
#include "src/core/lib/iomgr/pollset_set.h"
|
35
36
|
#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
|
@@ -62,10 +63,7 @@ struct grpc_tls_certificate_provider
|
|
62
63
|
// used but they compare as equal (assuming other channel args match).
|
63
64
|
int Compare(const grpc_tls_certificate_provider* other) const {
|
64
65
|
GPR_ASSERT(other != nullptr);
|
65
|
-
|
66
|
-
// against different grpc_tls_certificate_provider types using the same
|
67
|
-
// name.
|
68
|
-
int r = grpc_core::QsortCompare(type(), other->type());
|
66
|
+
int r = type().Compare(other->type());
|
69
67
|
if (r != 0) return r;
|
70
68
|
return CompareImpl(other);
|
71
69
|
}
|
@@ -74,7 +72,7 @@ struct grpc_tls_certificate_provider
|
|
74
72
|
// implementation for down-casting purposes. Every provider implementation
|
75
73
|
// should use a unique string instance, which should be returned by all
|
76
74
|
// instances of that provider implementation.
|
77
|
-
virtual
|
75
|
+
virtual grpc_core::UniqueTypeName type() const = 0;
|
78
76
|
|
79
77
|
private:
|
80
78
|
// Implementation for `Compare` method intended to be overridden by
|
@@ -99,7 +97,7 @@ class StaticDataCertificateProvider final
|
|
99
97
|
return distributor_;
|
100
98
|
}
|
101
99
|
|
102
|
-
|
100
|
+
UniqueTypeName type() const override;
|
103
101
|
|
104
102
|
private:
|
105
103
|
struct WatcherInfo {
|
@@ -138,7 +136,7 @@ class FileWatcherCertificateProvider final
|
|
138
136
|
return distributor_;
|
139
137
|
}
|
140
138
|
|
141
|
-
|
139
|
+
UniqueTypeName type() const override;
|
142
140
|
|
143
141
|
private:
|
144
142
|
struct WatcherInfo {
|
@@ -60,6 +60,11 @@ bool ExternalCertificateVerifier::Verify(
|
|
60
60
|
return is_done;
|
61
61
|
}
|
62
62
|
|
63
|
+
UniqueTypeName ExternalCertificateVerifier::type() const {
|
64
|
+
static UniqueTypeName::Factory kFactory("External");
|
65
|
+
return kFactory.Create();
|
66
|
+
}
|
67
|
+
|
63
68
|
void ExternalCertificateVerifier::OnVerifyDone(
|
64
69
|
grpc_tls_custom_verification_check_request* request, void* callback_arg,
|
65
70
|
grpc_status_code status, const char* error_details) {
|
@@ -84,6 +89,15 @@ void ExternalCertificateVerifier::OnVerifyDone(
|
|
84
89
|
}
|
85
90
|
}
|
86
91
|
|
92
|
+
//
|
93
|
+
// NoOpCertificateVerifier
|
94
|
+
//
|
95
|
+
|
96
|
+
UniqueTypeName NoOpCertificateVerifier::type() const {
|
97
|
+
static UniqueTypeName::Factory kFactory("NoOp");
|
98
|
+
return kFactory.Create();
|
99
|
+
}
|
100
|
+
|
87
101
|
//
|
88
102
|
// HostNameCertificateVerifier
|
89
103
|
//
|
@@ -142,7 +156,8 @@ bool HostNameCertificateVerifier::Verify(
|
|
142
156
|
const char* common_name = request->peer_info.common_name;
|
143
157
|
// We are using the target name sent from the client as a matcher to match
|
144
158
|
// against identity name on the peer cert.
|
145
|
-
if (
|
159
|
+
if (common_name != nullptr &&
|
160
|
+
VerifySubjectAlternativeName(common_name, std::string(target_host))) {
|
146
161
|
return true; // synchronous check
|
147
162
|
}
|
148
163
|
}
|
@@ -151,6 +166,11 @@ bool HostNameCertificateVerifier::Verify(
|
|
151
166
|
return true; // synchronous check
|
152
167
|
}
|
153
168
|
|
169
|
+
UniqueTypeName HostNameCertificateVerifier::type() const {
|
170
|
+
static UniqueTypeName::Factory kFactory("Hostname");
|
171
|
+
return kFactory.Create();
|
172
|
+
}
|
173
|
+
|
154
174
|
} // namespace grpc_core
|
155
175
|
|
156
176
|
//
|
@@ -194,6 +214,11 @@ grpc_tls_certificate_verifier* grpc_tls_certificate_verifier_external_create(
|
|
194
214
|
return new grpc_core::ExternalCertificateVerifier(external_verifier);
|
195
215
|
}
|
196
216
|
|
217
|
+
grpc_tls_certificate_verifier* grpc_tls_certificate_verifier_no_op_create() {
|
218
|
+
grpc_core::ExecCtx exec_ctx;
|
219
|
+
return new grpc_core::NoOpCertificateVerifier();
|
220
|
+
}
|
221
|
+
|
197
222
|
grpc_tls_certificate_verifier*
|
198
223
|
grpc_tls_certificate_verifier_host_name_create() {
|
199
224
|
grpc_core::ExecCtx exec_ctx;
|
@@ -29,6 +29,7 @@
|
|
29
29
|
#include "src/core/lib/gprpp/ref_counted.h"
|
30
30
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
31
31
|
#include "src/core/lib/gprpp/thd.h"
|
32
|
+
#include "src/core/lib/gprpp/unique_type_name.h"
|
32
33
|
#include "src/core/lib/iomgr/load_file.h"
|
33
34
|
#include "src/core/lib/iomgr/pollset_set.h"
|
34
35
|
#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
|
@@ -57,7 +58,7 @@ struct grpc_tls_certificate_verifier
|
|
57
58
|
// verifiers as effectively the same.
|
58
59
|
int Compare(const grpc_tls_certificate_verifier* other) const {
|
59
60
|
GPR_ASSERT(other != nullptr);
|
60
|
-
int r =
|
61
|
+
int r = type().Compare(other->type());
|
61
62
|
if (r != 0) return r;
|
62
63
|
return CompareImpl(other);
|
63
64
|
}
|
@@ -66,7 +67,7 @@ struct grpc_tls_certificate_verifier
|
|
66
67
|
// implementation for down-casting purposes. Every verifier implementation
|
67
68
|
// should use a unique string instance, which should be returned by all
|
68
69
|
// instances of that verifier implementation.
|
69
|
-
virtual
|
70
|
+
virtual grpc_core::UniqueTypeName type() const = 0;
|
70
71
|
|
71
72
|
private:
|
72
73
|
// Implementation for `Compare` method intended to be overridden by
|
@@ -99,7 +100,7 @@ class ExternalCertificateVerifier : public grpc_tls_certificate_verifier {
|
|
99
100
|
external_verifier_->cancel(external_verifier_->user_data, request);
|
100
101
|
}
|
101
102
|
|
102
|
-
|
103
|
+
UniqueTypeName type() const override;
|
103
104
|
|
104
105
|
private:
|
105
106
|
int CompareImpl(const grpc_tls_certificate_verifier* other) const override {
|
@@ -121,6 +122,29 @@ class ExternalCertificateVerifier : public grpc_tls_certificate_verifier {
|
|
121
122
|
request_map_ ABSL_GUARDED_BY(mu_);
|
122
123
|
};
|
123
124
|
|
125
|
+
// An internal verifier that won't perform any post-handshake checks.
|
126
|
+
// Note: using this solely without any other authentication mechanisms on the
|
127
|
+
// peer identity will leave your applications to the MITM(Man-In-The-Middle)
|
128
|
+
// attacks. Users should avoid doing so in production environments.
|
129
|
+
class NoOpCertificateVerifier : public grpc_tls_certificate_verifier {
|
130
|
+
public:
|
131
|
+
bool Verify(grpc_tls_custom_verification_check_request*,
|
132
|
+
std::function<void(absl::Status)>, absl::Status*) override {
|
133
|
+
return true; // synchronous check
|
134
|
+
};
|
135
|
+
void Cancel(grpc_tls_custom_verification_check_request*) override {}
|
136
|
+
|
137
|
+
UniqueTypeName type() const override;
|
138
|
+
|
139
|
+
private:
|
140
|
+
int CompareImpl(
|
141
|
+
const grpc_tls_certificate_verifier* /* other */) const override {
|
142
|
+
// No differentiating factor between different NoOpCertificateVerifier
|
143
|
+
// objects.
|
144
|
+
return 0;
|
145
|
+
}
|
146
|
+
};
|
147
|
+
|
124
148
|
// An internal verifier that will perform hostname verification check.
|
125
149
|
class HostNameCertificateVerifier : public grpc_tls_certificate_verifier {
|
126
150
|
public:
|
@@ -129,7 +153,7 @@ class HostNameCertificateVerifier : public grpc_tls_certificate_verifier {
|
|
129
153
|
absl::Status* sync_status) override;
|
130
154
|
void Cancel(grpc_tls_custom_verification_check_request*) override {}
|
131
155
|
|
132
|
-
|
156
|
+
UniqueTypeName type() const override;
|
133
157
|
|
134
158
|
private:
|
135
159
|
int CompareImpl(
|
@@ -106,6 +106,11 @@ TlsCredentials::create_security_connector(
|
|
106
106
|
return sc;
|
107
107
|
}
|
108
108
|
|
109
|
+
grpc_core::UniqueTypeName TlsCredentials::type() const {
|
110
|
+
static grpc_core::UniqueTypeName::Factory kFactory("Tls");
|
111
|
+
return kFactory.Create();
|
112
|
+
}
|
113
|
+
|
109
114
|
int TlsCredentials::cmp_impl(const grpc_channel_credentials* other) const {
|
110
115
|
const TlsCredentials* o = static_cast<const TlsCredentials*>(other);
|
111
116
|
if (*options_ == *o->options_) return 0;
|
@@ -126,6 +131,11 @@ TlsServerCredentials::create_security_connector(
|
|
126
131
|
CreateTlsServerSecurityConnector(this->Ref(), options_);
|
127
132
|
}
|
128
133
|
|
134
|
+
grpc_core::UniqueTypeName TlsServerCredentials::type() const {
|
135
|
+
static grpc_core::UniqueTypeName::Factory kFactory("Tls");
|
136
|
+
return kFactory.Create();
|
137
|
+
}
|
138
|
+
|
129
139
|
/** -- Wrapper APIs declared in grpc_security.h -- **/
|
130
140
|
|
131
141
|
grpc_channel_credentials* grpc_tls_credentials_create(
|
@@ -38,7 +38,7 @@ class TlsCredentials final : public grpc_channel_credentials {
|
|
38
38
|
const char* target_name, const grpc_channel_args* args,
|
39
39
|
grpc_channel_args** new_args) override;
|
40
40
|
|
41
|
-
|
41
|
+
grpc_core::UniqueTypeName type() const override;
|
42
42
|
|
43
43
|
grpc_tls_credentials_options* options() const { return options_.get(); }
|
44
44
|
|
@@ -57,7 +57,7 @@ class TlsServerCredentials final : public grpc_server_credentials {
|
|
57
57
|
grpc_core::RefCountedPtr<grpc_server_security_connector>
|
58
58
|
create_security_connector(const grpc_channel_args* /* args */) override;
|
59
59
|
|
60
|
-
|
60
|
+
grpc_core::UniqueTypeName type() const override;
|
61
61
|
|
62
62
|
grpc_tls_credentials_options* options() const { return options_.get(); }
|
63
63
|
|
@@ -105,7 +105,10 @@ int XdsCertificateVerifier::CompareImpl(
|
|
105
105
|
return cluster_name_.compare(o->cluster_name_);
|
106
106
|
}
|
107
107
|
|
108
|
-
|
108
|
+
UniqueTypeName XdsCertificateVerifier::type() const {
|
109
|
+
static UniqueTypeName::Factory kFactory("Xds");
|
110
|
+
return kFactory.Create();
|
111
|
+
}
|
109
112
|
|
110
113
|
bool TestOnlyXdsVerifySubjectAlternativeNames(
|
111
114
|
const char* const* subject_alternative_names,
|
@@ -182,7 +185,10 @@ XdsCredentials::create_security_connector(
|
|
182
185
|
std::move(call_creds), target_name, temp_args.args, new_args);
|
183
186
|
}
|
184
187
|
|
185
|
-
|
188
|
+
UniqueTypeName XdsCredentials::Type() {
|
189
|
+
static UniqueTypeName::Factory kFactory("Xds");
|
190
|
+
return kFactory.Create();
|
191
|
+
}
|
186
192
|
|
187
193
|
//
|
188
194
|
// XdsServerCredentials
|
@@ -220,7 +226,10 @@ XdsServerCredentials::create_security_connector(const grpc_channel_args* args) {
|
|
220
226
|
return fallback_credentials_->create_security_connector(args);
|
221
227
|
}
|
222
228
|
|
223
|
-
|
229
|
+
UniqueTypeName XdsServerCredentials::Type() {
|
230
|
+
static UniqueTypeName::Factory kFactory("Xds");
|
231
|
+
return kFactory.Create();
|
232
|
+
}
|
224
233
|
|
225
234
|
} // namespace grpc_core
|
226
235
|
|
@@ -41,7 +41,7 @@ class XdsCertificateVerifier : public grpc_tls_certificate_verifier {
|
|
41
41
|
absl::Status* sync_status) override;
|
42
42
|
void Cancel(grpc_tls_custom_verification_check_request*) override;
|
43
43
|
|
44
|
-
|
44
|
+
UniqueTypeName type() const override;
|
45
45
|
|
46
46
|
private:
|
47
47
|
int CompareImpl(const grpc_tls_certificate_verifier* other) const override;
|
@@ -60,9 +60,9 @@ class XdsCredentials final : public grpc_channel_credentials {
|
|
60
60
|
RefCountedPtr<grpc_call_credentials> call_creds, const char* target_name,
|
61
61
|
const grpc_channel_args* args, grpc_channel_args** new_args) override;
|
62
62
|
|
63
|
-
static
|
63
|
+
static UniqueTypeName Type();
|
64
64
|
|
65
|
-
|
65
|
+
UniqueTypeName type() const override { return Type(); }
|
66
66
|
|
67
67
|
private:
|
68
68
|
int cmp_impl(const grpc_channel_credentials* other) const override {
|
@@ -82,9 +82,9 @@ class XdsServerCredentials final : public grpc_server_credentials {
|
|
82
82
|
RefCountedPtr<grpc_server_security_connector> create_security_connector(
|
83
83
|
const grpc_channel_args* /* args */) override;
|
84
84
|
|
85
|
-
static
|
85
|
+
static UniqueTypeName Type();
|
86
86
|
|
87
|
-
|
87
|
+
UniqueTypeName type() const override { return Type(); }
|
88
88
|
|
89
89
|
private:
|
90
90
|
RefCountedPtr<grpc_server_credentials> fallback_credentials_;
|
@@ -30,7 +30,6 @@
|
|
30
30
|
|
31
31
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
|
32
32
|
#include "src/core/lib/channel/channel_args.h"
|
33
|
-
#include "src/core/lib/channel/handshaker.h"
|
34
33
|
#include "src/core/lib/gpr/string.h"
|
35
34
|
#include "src/core/lib/gprpp/host_port.h"
|
36
35
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
@@ -39,6 +38,7 @@
|
|
39
38
|
#include "src/core/lib/security/credentials/credentials.h"
|
40
39
|
#include "src/core/lib/security/credentials/fake/fake_credentials.h"
|
41
40
|
#include "src/core/lib/security/transport/security_handshaker.h"
|
41
|
+
#include "src/core/lib/transport/handshaker.h"
|
42
42
|
#include "src/core/tsi/fake_transport_security.h"
|
43
43
|
|
44
44
|
namespace {
|
@@ -23,9 +23,9 @@
|
|
23
23
|
|
24
24
|
#include <grpc/grpc_security.h>
|
25
25
|
|
26
|
-
#include "src/core/lib/channel/handshaker.h"
|
27
26
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
28
27
|
#include "src/core/lib/security/security_connector/security_connector.h"
|
28
|
+
#include "src/core/lib/transport/handshaker.h"
|
29
29
|
|
30
30
|
/* Creates a fake connector that emulates real channel security. */
|
31
31
|
grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
@@ -26,12 +26,12 @@
|
|
26
26
|
#include <grpc/support/string_util.h>
|
27
27
|
|
28
28
|
#include "src/core/lib/channel/channel_args.h"
|
29
|
-
#include "src/core/lib/channel/handshaker.h"
|
30
29
|
#include "src/core/lib/gpr/string.h"
|
31
30
|
#include "src/core/lib/security/context/security_context.h"
|
32
31
|
#include "src/core/lib/security/credentials/credentials.h"
|
33
32
|
#include "src/core/lib/security/security_connector/security_connector.h"
|
34
33
|
#include "src/core/lib/security/transport/security_handshaker.h"
|
34
|
+
#include "src/core/lib/transport/handshaker.h"
|
35
35
|
|
36
36
|
grpc_core::DebugOnlyTraceFlag grpc_trace_security_connector_refcount(
|
37
37
|
false, "security_connector_refcount");
|
@@ -25,12 +25,12 @@
|
|
25
25
|
|
26
26
|
#include <grpc/grpc_security.h>
|
27
27
|
|
28
|
-
#include "src/core/lib/channel/handshaker.h"
|
29
28
|
#include "src/core/lib/gprpp/ref_counted.h"
|
30
29
|
#include "src/core/lib/iomgr/endpoint.h"
|
31
30
|
#include "src/core/lib/iomgr/pollset.h"
|
32
31
|
#include "src/core/lib/iomgr/tcp_server.h"
|
33
32
|
#include "src/core/lib/promise/arena_promise.h"
|
33
|
+
#include "src/core/lib/transport/handshaker.h"
|
34
34
|
#include "src/core/tsi/transport_security_interface.h"
|
35
35
|
|
36
36
|
extern grpc_core::DebugOnlyTraceFlag grpc_trace_security_connector_refcount;
|
@@ -30,7 +30,6 @@
|
|
30
30
|
#include <grpc/support/log.h>
|
31
31
|
|
32
32
|
#include "src/core/ext/transport/chttp2/alpn/alpn.h"
|
33
|
-
#include "src/core/lib/channel/handshaker.h"
|
34
33
|
#include "src/core/lib/gpr/string.h"
|
35
34
|
#include "src/core/lib/gprpp/host_port.h"
|
36
35
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
@@ -42,6 +41,7 @@
|
|
42
41
|
#include "src/core/lib/security/security_connector/load_system_roots.h"
|
43
42
|
#include "src/core/lib/security/security_connector/ssl_utils.h"
|
44
43
|
#include "src/core/lib/security/transport/security_handshaker.h"
|
44
|
+
#include "src/core/lib/transport/handshaker.h"
|
45
45
|
#include "src/core/tsi/ssl_transport_security.h"
|
46
46
|
#include "src/core/tsi/transport_security.h"
|
47
47
|
|
@@ -31,7 +31,6 @@
|
|
31
31
|
#include "src/core/lib/channel/channel_stack.h"
|
32
32
|
#include "src/core/lib/channel/promise_based_filter.h"
|
33
33
|
#include "src/core/lib/gpr/string.h"
|
34
|
-
#include "src/core/lib/gprpp/capture.h"
|
35
34
|
#include "src/core/lib/iomgr/error.h"
|
36
35
|
#include "src/core/lib/profiling/timers.h"
|
37
36
|
#include "src/core/lib/promise/promise.h"
|
@@ -151,13 +150,12 @@ ArenaPromise<absl::StatusOr<CallArgs>> ClientAuthFilter::GetCallCredsMetadata(
|
|
151
150
|
auto client_initial_metadata = std::move(call_args.client_initial_metadata);
|
152
151
|
return TrySeq(
|
153
152
|
creds->GetRequestMetadata(std::move(client_initial_metadata), &args_),
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
std::move(call_args)));
|
153
|
+
[call_args =
|
154
|
+
std::move(call_args)](ClientMetadataHandle new_metadata) mutable {
|
155
|
+
call_args.client_initial_metadata = std::move(new_metadata);
|
156
|
+
return Immediate<absl::StatusOr<CallArgs>>(
|
157
|
+
absl::StatusOr<CallArgs>(std::move(call_args)));
|
158
|
+
});
|
161
159
|
}
|
162
160
|
|
163
161
|
ArenaPromise<ServerMetadataHandle> ClientAuthFilter::MakeCallPromise(
|
@@ -20,6 +20,8 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/security/transport/secure_endpoint.h"
|
22
22
|
|
23
|
+
#include <limits.h>
|
24
|
+
|
23
25
|
#include <new>
|
24
26
|
|
25
27
|
#include <grpc/slice.h>
|
@@ -72,10 +74,15 @@ struct secure_endpoint {
|
|
72
74
|
->CreateMemoryOwner(absl::StrCat(grpc_endpoint_get_peer(transport),
|
73
75
|
":secure_endpoint"));
|
74
76
|
self_reservation = memory_owner.MakeReservation(sizeof(*this));
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
77
|
+
if (zero_copy_protector) {
|
78
|
+
read_staging_buffer = grpc_empty_slice();
|
79
|
+
write_staging_buffer = grpc_empty_slice();
|
80
|
+
} else {
|
81
|
+
read_staging_buffer =
|
82
|
+
memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE));
|
83
|
+
write_staging_buffer =
|
84
|
+
memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE));
|
85
|
+
}
|
79
86
|
has_posted_reclaimer.store(false, std::memory_order_relaxed);
|
80
87
|
gpr_ref_init(&ref, 1);
|
81
88
|
}
|
@@ -97,8 +104,8 @@ struct secure_endpoint {
|
|
97
104
|
struct tsi_frame_protector* protector;
|
98
105
|
struct tsi_zero_copy_grpc_protector* zero_copy_protector;
|
99
106
|
gpr_mu protector_mu;
|
100
|
-
|
101
|
-
|
107
|
+
grpc_core::Mutex read_mu;
|
108
|
+
grpc_core::Mutex write_mu;
|
102
109
|
/* saved upper level callbacks and user_data. */
|
103
110
|
grpc_closure* read_cb = nullptr;
|
104
111
|
grpc_closure* write_cb = nullptr;
|
@@ -229,7 +236,7 @@ static void on_read(void* user_data, grpc_error_handle error) {
|
|
229
236
|
secure_endpoint* ep = static_cast<secure_endpoint*>(user_data);
|
230
237
|
|
231
238
|
{
|
232
|
-
|
239
|
+
grpc_core::MutexLock l(&ep->read_mu);
|
233
240
|
uint8_t* cur = GRPC_SLICE_START_PTR(ep->read_staging_buffer);
|
234
241
|
uint8_t* end = GRPC_SLICE_END_PTR(ep->read_staging_buffer);
|
235
242
|
|
@@ -313,7 +320,8 @@ static void on_read(void* user_data, grpc_error_handle error) {
|
|
313
320
|
}
|
314
321
|
|
315
322
|
static void endpoint_read(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
|
316
|
-
grpc_closure* cb, bool urgent
|
323
|
+
grpc_closure* cb, bool urgent,
|
324
|
+
int /*min_progress_size*/) {
|
317
325
|
secure_endpoint* ep = reinterpret_cast<secure_endpoint*>(secure_ep);
|
318
326
|
ep->read_cb = cb;
|
319
327
|
ep->read_buffer = slices;
|
@@ -327,7 +335,8 @@ static void endpoint_read(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
|
|
327
335
|
return;
|
328
336
|
}
|
329
337
|
|
330
|
-
grpc_endpoint_read(ep->wrapped_ep, &ep->source_buffer, &ep->on_read, urgent
|
338
|
+
grpc_endpoint_read(ep->wrapped_ep, &ep->source_buffer, &ep->on_read, urgent,
|
339
|
+
/*min_progress_size=*/1);
|
331
340
|
}
|
332
341
|
|
333
342
|
static void flush_write_staging_buffer(secure_endpoint* ep, uint8_t** cur,
|
@@ -342,7 +351,8 @@ static void flush_write_staging_buffer(secure_endpoint* ep, uint8_t** cur,
|
|
342
351
|
}
|
343
352
|
|
344
353
|
static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
|
345
|
-
grpc_closure* cb, void* arg
|
354
|
+
grpc_closure* cb, void* arg,
|
355
|
+
int /*max_frame_size*/) {
|
346
356
|
GPR_TIMER_SCOPE("secure_endpoint.endpoint_write", 0);
|
347
357
|
|
348
358
|
unsigned i;
|
@@ -350,7 +360,7 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
|
|
350
360
|
secure_endpoint* ep = reinterpret_cast<secure_endpoint*>(secure_ep);
|
351
361
|
|
352
362
|
{
|
353
|
-
|
363
|
+
grpc_core::MutexLock l(&ep->write_mu);
|
354
364
|
uint8_t* cur = GRPC_SLICE_START_PTR(ep->write_staging_buffer);
|
355
365
|
uint8_t* end = GRPC_SLICE_END_PTR(ep->write_staging_buffer);
|
356
366
|
|
@@ -435,7 +445,8 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
|
|
435
445
|
return;
|
436
446
|
}
|
437
447
|
|
438
|
-
grpc_endpoint_write(ep->wrapped_ep, &ep->output_buffer, cb, arg
|
448
|
+
grpc_endpoint_write(ep->wrapped_ep, &ep->output_buffer, cb, arg,
|
449
|
+
/*max_frame_size=*/INT_MAX);
|
439
450
|
}
|
440
451
|
|
441
452
|
static void endpoint_shutdown(grpc_endpoint* secure_ep, grpc_error_handle why) {
|
@@ -31,13 +31,13 @@
|
|
31
31
|
|
32
32
|
#include "src/core/lib/channel/channel_args.h"
|
33
33
|
#include "src/core/lib/channel/channelz.h"
|
34
|
-
#include "src/core/lib/channel/handshaker.h"
|
35
34
|
#include "src/core/lib/config/core_configuration.h"
|
36
35
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
37
36
|
#include "src/core/lib/security/context/security_context.h"
|
38
37
|
#include "src/core/lib/security/transport/secure_endpoint.h"
|
39
38
|
#include "src/core/lib/security/transport/tsi_error.h"
|
40
39
|
#include "src/core/lib/slice/slice_internal.h"
|
40
|
+
#include "src/core/lib/transport/handshaker.h"
|
41
41
|
#include "src/core/tsi/transport_security_grpc.h"
|
42
42
|
|
43
43
|
#define GRPC_INITIAL_HANDSHAKE_BUFFER_SIZE 256
|
@@ -369,7 +369,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
|
|
369
369
|
&on_handshake_data_received_from_peer_,
|
370
370
|
&SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler,
|
371
371
|
this, grpc_schedule_on_exec_ctx),
|
372
|
-
/*urgent=*/true);
|
372
|
+
/*urgent=*/true, /*min_progress_size=*/1);
|
373
373
|
return error;
|
374
374
|
}
|
375
375
|
if (result != TSI_OK) {
|
@@ -393,7 +393,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
|
|
393
393
|
&on_handshake_data_sent_to_peer_,
|
394
394
|
&SecurityHandshaker::OnHandshakeDataSentToPeerFnScheduler, this,
|
395
395
|
grpc_schedule_on_exec_ctx),
|
396
|
-
nullptr);
|
396
|
+
nullptr, /*max_frame_size=*/INT_MAX);
|
397
397
|
} else if (handshaker_result == nullptr) {
|
398
398
|
// There is nothing to send, but need to read from peer.
|
399
399
|
grpc_endpoint_read(
|
@@ -402,7 +402,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
|
|
402
402
|
&on_handshake_data_received_from_peer_,
|
403
403
|
&SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler,
|
404
404
|
this, grpc_schedule_on_exec_ctx),
|
405
|
-
/*urgent=*/true);
|
405
|
+
/*urgent=*/true, /*min_progress_size=*/1);
|
406
406
|
} else {
|
407
407
|
// Handshake has finished, check peer and so on.
|
408
408
|
error = CheckPeerLocked();
|
@@ -508,7 +508,7 @@ void SecurityHandshaker::OnHandshakeDataSentToPeerFn(void* arg,
|
|
508
508
|
&h->on_handshake_data_received_from_peer_,
|
509
509
|
&SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler,
|
510
510
|
h.get(), grpc_schedule_on_exec_ctx),
|
511
|
-
/*urgent=*/true);
|
511
|
+
/*urgent=*/true, /*min_progress_size=*/1);
|
512
512
|
} else {
|
513
513
|
error = h->CheckPeerLocked();
|
514
514
|
if (error != GRPC_ERROR_NONE) {
|
@@ -21,9 +21,9 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
-
#include "src/core/lib/channel/handshaker.h"
|
25
24
|
#include "src/core/lib/config/core_configuration.h"
|
26
25
|
#include "src/core/lib/security/security_connector/security_connector.h"
|
26
|
+
#include "src/core/lib/transport/handshaker.h"
|
27
27
|
|
28
28
|
namespace grpc_core {
|
29
29
|
|
@@ -143,9 +143,9 @@ static void on_md_processing_done_inner(grpc_call_element* elem,
|
|
143
143
|
grpc_error_handle error) {
|
144
144
|
call_data* calld = static_cast<call_data*>(elem->call_data);
|
145
145
|
grpc_transport_stream_op_batch* batch = calld->recv_initial_metadata_batch;
|
146
|
-
/* TODO(
|
146
|
+
/* TODO(ZhenLian): Implement support for response_md. */
|
147
147
|
if (response_md != nullptr && num_response_md > 0) {
|
148
|
-
gpr_log(
|
148
|
+
gpr_log(GPR_ERROR,
|
149
149
|
"response_md in auth metadata processing not supported for now. "
|
150
150
|
"Ignoring...");
|
151
151
|
}
|
@@ -332,6 +332,7 @@ const grpc_channel_filter grpc_server_auth_filter = {
|
|
332
332
|
server_auth_destroy_call_elem,
|
333
333
|
sizeof(channel_data),
|
334
334
|
server_auth_init_channel_elem,
|
335
|
+
grpc_channel_stack_no_post_init,
|
335
336
|
server_auth_destroy_channel_elem,
|
336
337
|
grpc_channel_next_get_info,
|
337
338
|
"server-auth"};
|
@@ -19,18 +19,14 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
-
#include <
|
23
|
-
#include <vector>
|
22
|
+
#include <stddef.h>
|
24
23
|
|
25
|
-
#include
|
26
|
-
|
24
|
+
#include "absl/strings/string_view.h"
|
25
|
+
|
26
|
+
#include <grpc/slice.h>
|
27
27
|
|
28
28
|
#include "src/core/lib/gprpp/ref_counted.h"
|
29
|
-
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
30
|
-
#include "src/core/lib/iomgr/error.h"
|
31
|
-
#include "src/core/lib/json/json.h"
|
32
29
|
#include "src/core/lib/service_config/service_config_parser.h"
|
33
|
-
#include "src/core/lib/slice/slice_internal.h"
|
34
30
|
|
35
31
|
// The main purpose of the code here is to parse the service config in
|
36
32
|
// JSON form, which will look like this:
|
@@ -19,11 +19,14 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
+
#include <stddef.h>
|
23
|
+
|
22
24
|
#include <map>
|
25
|
+
#include <memory>
|
26
|
+
#include <utility>
|
23
27
|
|
24
28
|
#include "absl/strings/string_view.h"
|
25
29
|
|
26
|
-
#include "src/core/lib/channel/context.h"
|
27
30
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
28
31
|
#include "src/core/lib/service_config/service_config.h"
|
29
32
|
#include "src/core/lib/service_config/service_config_parser.h"
|
@@ -18,16 +18,23 @@
|
|
18
18
|
|
19
19
|
#include "src/core/lib/service_config/service_config_impl.h"
|
20
20
|
|
21
|
+
#include <string.h>
|
22
|
+
|
23
|
+
#include <map>
|
21
24
|
#include <string>
|
25
|
+
#include <utility>
|
22
26
|
|
27
|
+
#include "absl/memory/memory.h"
|
23
28
|
#include "absl/strings/str_cat.h"
|
24
29
|
|
25
30
|
#include <grpc/support/log.h>
|
26
31
|
|
27
32
|
#include "src/core/lib/config/core_configuration.h"
|
33
|
+
#include "src/core/lib/gprpp/memory.h"
|
28
34
|
#include "src/core/lib/json/json.h"
|
29
35
|
#include "src/core/lib/service_config/service_config_parser.h"
|
30
36
|
#include "src/core/lib/slice/slice_internal.h"
|
37
|
+
#include "src/core/lib/slice/slice_refcount.h"
|
31
38
|
|
32
39
|
namespace grpc_core {
|
33
40
|
|