grpc 1.41.1 → 1.42.0.pre1
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 +55 -43
- data/include/grpc/event_engine/event_engine.h +82 -42
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/grpc_security.h +18 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
- data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
- data/src/core/ext/filters/client_channel/client_channel.h +74 -27
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -5
- data/src/core/ext/filters/client_channel/connector.h +18 -18
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
- data/src/core/ext/filters/client_channel/resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
- data/src/core/ext/filters/client_channel/server_address.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
- data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
- data/src/core/ext/filters/client_channel/subchannel.h +29 -49
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
- data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
- data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
- data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +325 -362
- data/src/core/ext/xds/xds_api.h +134 -82
- data/src/core/ext/xds/xds_bootstrap.h +10 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +527 -314
- data/src/core/ext/xds/xds_client.h +42 -37
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
- data/src/core/lib/address_utils/parse_address.cc +2 -0
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +24 -6
- data/src/core/lib/channel/channel_args.h +9 -0
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_trace.cc +1 -1
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +3 -3
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/channelz_registry.cc +1 -1
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +1 -3
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/compression/compression.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +6 -4
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +44 -2
- data/src/core/lib/config/core_configuration.h +39 -1
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats_data.cc +13 -13
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/tls.h +1 -1
- data/src/core/lib/gpr/useful.h +79 -32
- data/src/core/lib/gprpp/arena.h +10 -0
- data/src/core/lib/gprpp/bitset.h +38 -16
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -1
- data/src/core/lib/gprpp/match.h +1 -1
- data/src/core/lib/gprpp/memory.h +6 -0
- data/src/core/lib/gprpp/overload.h +1 -1
- data/src/core/lib/gprpp/status_helper.cc +23 -3
- data/src/core/lib/gprpp/status_helper.h +12 -1
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/http/httpcli.cc +200 -182
- data/src/core/lib/http/parser.cc +2 -2
- data/src/core/lib/iomgr/call_combiner.cc +28 -10
- data/src/core/lib/iomgr/combiner.cc +6 -21
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
- data/src/core/lib/iomgr/error.cc +113 -52
- data/src/core/lib/iomgr/error.h +50 -9
- data/src/core/lib/iomgr/error_cfstream.cc +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
- data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
- data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
- data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
- data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -9
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
- data/src/core/lib/iomgr/executor.cc +6 -20
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/pollset_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_custom.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
- data/src/core/lib/iomgr/resource_quota.cc +13 -11
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_posix.cc +4 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_windows.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +13 -13
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/json/json_util.cc +68 -0
- data/src/core/lib/json/json_util.h +57 -99
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +4 -2
- data/src/core/lib/security/credentials/credentials.h +6 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +9 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.cc +73 -43
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/slice/slice.cc +0 -16
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +5 -5
- data/src/core/lib/slice/slice_intern.cc +8 -13
- data/src/core/lib/slice/slice_internal.h +1 -244
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
- data/src/core/lib/surface/call.cc +103 -120
- data/src/core/lib/surface/call.h +0 -6
- data/src/core/lib/surface/channel.cc +19 -32
- data/src/core/lib/surface/channel.h +0 -9
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/completion_queue.cc +6 -5
- data/src/core/lib/surface/init.cc +0 -39
- data/src/core/lib/surface/init_secure.cc +17 -14
- data/src/core/lib/surface/lame_client.cc +18 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +25 -17
- data/src/core/lib/surface/server.h +17 -10
- data/src/core/lib/surface/validate_metadata.cc +5 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +42 -17
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +31 -10
- data/src/core/lib/transport/metadata.h +2 -1
- data/src/core/lib/transport/metadata_batch.cc +35 -371
- data/src/core/lib/transport/metadata_batch.h +905 -71
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +714 -846
- data/src/core/lib/transport/static_metadata.h +115 -379
- data/src/core/lib/transport/status_metadata.cc +1 -0
- data/src/core/lib/transport/transport.cc +4 -5
- data/src/core/lib/transport/transport_op_string.cc +40 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
- data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +36 -73
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
- data/src/core/tsi/ssl_transport_security.cc +10 -2
- data/src/core/tsi/transport_security.cc +12 -0
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_interface.h +26 -0
- data/src/ruby/ext/grpc/extconf.rb +12 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +20 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +104 -114
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +72 -45
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +479 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -564
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +0 -1
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- metadata +78 -66
- data/include/grpc/event_engine/slice_allocator.h +0 -71
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/iomgr/udp_server.cc +0 -747
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/transport/authority_override.cc +0 -40
- data/src/core/lib/transport/authority_override.h +0 -37
@@ -339,7 +339,12 @@ void RoundRobin::RoundRobinSubchannelList::
|
|
339
339
|
void RoundRobin::RoundRobinSubchannelList::
|
340
340
|
UpdateRoundRobinStateFromSubchannelStateCountsLocked() {
|
341
341
|
RoundRobin* p = static_cast<RoundRobin*>(policy());
|
342
|
-
|
342
|
+
// If we have at least one READY subchannel, then swap to the new list.
|
343
|
+
// Also, if all of the subchannels are in TRANSIENT_FAILURE, then we know
|
344
|
+
// we've tried all of them and failed, so we go ahead and swap over
|
345
|
+
// anyway; this may cause the channel to go from READY to TRANSIENT_FAILURE,
|
346
|
+
// but we are doing what the control plane told us to do.
|
347
|
+
if (num_ready_ > 0 || num_transient_failure_ == num_subchannels()) {
|
343
348
|
if (p->subchannel_list_.get() != this) {
|
344
349
|
// Promote this list to p->subchannel_list_.
|
345
350
|
// This list must be p->latest_pending_subchannel_list_, because
|
@@ -150,6 +150,7 @@ class WeightedTargetLb : public LoadBalancingPolicy {
|
|
150
150
|
const absl::Status& status,
|
151
151
|
std::unique_ptr<SubchannelPicker> picker) override;
|
152
152
|
void RequestReresolution() override;
|
153
|
+
absl::string_view GetAuthority() override;
|
153
154
|
void AddTraceEvent(TraceSeverity severity,
|
154
155
|
absl::string_view message) override;
|
155
156
|
|
@@ -564,7 +565,7 @@ void WeightedTargetLb::WeightedChild::DeactivateLocked() {
|
|
564
565
|
void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimer(
|
565
566
|
void* arg, grpc_error_handle error) {
|
566
567
|
WeightedChild* self = static_cast<WeightedChild*>(arg);
|
567
|
-
GRPC_ERROR_REF(error); // ref owned by lambda
|
568
|
+
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
568
569
|
self->weighted_target_policy_->work_serializer()->Run(
|
569
570
|
[self, error]() { self->OnDelayedRemovalTimerLocked(error); },
|
570
571
|
DEBUG_LOCATION);
|
@@ -607,6 +608,11 @@ void WeightedTargetLb::WeightedChild::Helper::RequestReresolution() {
|
|
607
608
|
->RequestReresolution();
|
608
609
|
}
|
609
610
|
|
611
|
+
absl::string_view WeightedTargetLb::WeightedChild::Helper::GetAuthority() {
|
612
|
+
return weighted_child_->weighted_target_policy_->channel_control_helper()
|
613
|
+
->GetAuthority();
|
614
|
+
}
|
615
|
+
|
610
616
|
void WeightedTargetLb::WeightedChild::Helper::AddTraceEvent(
|
611
617
|
TraceSeverity severity, absl::string_view message) {
|
612
618
|
if (weighted_child_->weighted_target_policy_->shutting_down_) return;
|
@@ -23,7 +23,6 @@
|
|
23
23
|
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
24
24
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
25
25
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
26
|
-
#include "src/core/ext/filters/client_channel/service_config.h"
|
27
26
|
#include "src/core/ext/xds/xds_certificate_provider.h"
|
28
27
|
#include "src/core/ext/xds/xds_client.h"
|
29
28
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -123,6 +122,7 @@ class CdsLb : public LoadBalancingPolicy {
|
|
123
122
|
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
124
123
|
std::unique_ptr<SubchannelPicker> picker) override;
|
125
124
|
void RequestReresolution() override;
|
125
|
+
absl::string_view GetAuthority() override;
|
126
126
|
void AddTraceEvent(TraceSeverity severity,
|
127
127
|
absl::string_view message) override;
|
128
128
|
|
@@ -207,7 +207,7 @@ CdsLb::ClusterWatcher::Notifier::Notifier(RefCountedPtr<CdsLb> parent,
|
|
207
207
|
void CdsLb::ClusterWatcher::Notifier::RunInExecCtx(void* arg,
|
208
208
|
grpc_error_handle error) {
|
209
209
|
Notifier* self = static_cast<Notifier*>(arg);
|
210
|
-
GRPC_ERROR_REF(error);
|
210
|
+
(void)GRPC_ERROR_REF(error);
|
211
211
|
self->parent_->work_serializer()->Run(
|
212
212
|
[self, error]() { self->RunInWorkSerializer(error); }, DEBUG_LOCATION);
|
213
213
|
}
|
@@ -261,6 +261,10 @@ void CdsLb::Helper::RequestReresolution() {
|
|
261
261
|
parent_->channel_control_helper()->RequestReresolution();
|
262
262
|
}
|
263
263
|
|
264
|
+
absl::string_view CdsLb::Helper::GetAuthority() {
|
265
|
+
return parent_->channel_control_helper()->GetAuthority();
|
266
|
+
}
|
267
|
+
|
264
268
|
void CdsLb::Helper::AddTraceEvent(TraceSeverity severity,
|
265
269
|
absl::string_view message) {
|
266
270
|
if (parent_->shutting_down_) return;
|
@@ -24,6 +24,6 @@
|
|
24
24
|
// For testing purpose, this channel arg indicating xds_cluster_resolver LB
|
25
25
|
// policy should use the fake DNS resolver to resolve logical dns cluster.
|
26
26
|
#define GRPC_ARG_XDS_LOGICAL_DNS_CLUSTER_FAKE_RESOLVER_RESPONSE_GENERATOR \
|
27
|
-
"grpc.
|
27
|
+
"grpc.TEST_ONLY.xds_logical_dns_cluster_fake_resolver_response_generator"
|
28
28
|
|
29
29
|
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_XDS_XDS_CHANNEL_ARGS_H
|
@@ -222,6 +222,7 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
|
|
222
222
|
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
223
223
|
std::unique_ptr<SubchannelPicker> picker) override;
|
224
224
|
void RequestReresolution() override;
|
225
|
+
absl::string_view GetAuthority() override;
|
225
226
|
void AddTraceEvent(TraceSeverity severity,
|
226
227
|
absl::string_view message) override;
|
227
228
|
|
@@ -576,6 +577,10 @@ void XdsClusterImplLb::Helper::RequestReresolution() {
|
|
576
577
|
xds_cluster_impl_policy_->channel_control_helper()->RequestReresolution();
|
577
578
|
}
|
578
579
|
|
580
|
+
absl::string_view XdsClusterImplLb::Helper::GetAuthority() {
|
581
|
+
return xds_cluster_impl_policy_->channel_control_helper()->GetAuthority();
|
582
|
+
}
|
583
|
+
|
579
584
|
void XdsClusterImplLb::Helper::AddTraceEvent(TraceSeverity severity,
|
580
585
|
absl::string_view message) {
|
581
586
|
if (xds_cluster_impl_policy_->shutting_down_) return;
|
@@ -151,6 +151,7 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
|
|
151
151
|
const absl::Status& status,
|
152
152
|
std::unique_ptr<SubchannelPicker> picker) override;
|
153
153
|
void RequestReresolution() override;
|
154
|
+
absl::string_view GetAuthority() override;
|
154
155
|
void AddTraceEvent(TraceSeverity severity,
|
155
156
|
absl::string_view message) override;
|
156
157
|
|
@@ -493,7 +494,7 @@ void XdsClusterManagerLb::ClusterChild::DeactivateLocked() {
|
|
493
494
|
void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimer(
|
494
495
|
void* arg, grpc_error_handle error) {
|
495
496
|
ClusterChild* self = static_cast<ClusterChild*>(arg);
|
496
|
-
GRPC_ERROR_REF(error); // Ref owned by the lambda
|
497
|
+
(void)GRPC_ERROR_REF(error); // Ref owned by the lambda
|
497
498
|
self->xds_cluster_manager_policy_->work_serializer()->Run(
|
498
499
|
[self, error]() { self->OnDelayedRemovalTimerLocked(error); },
|
499
500
|
DEBUG_LOCATION);
|
@@ -570,6 +571,12 @@ void XdsClusterManagerLb::ClusterChild::Helper::RequestReresolution() {
|
|
570
571
|
->RequestReresolution();
|
571
572
|
}
|
572
573
|
|
574
|
+
absl::string_view XdsClusterManagerLb::ClusterChild::Helper::GetAuthority() {
|
575
|
+
return xds_cluster_manager_child_->xds_cluster_manager_policy_
|
576
|
+
->channel_control_helper()
|
577
|
+
->GetAuthority();
|
578
|
+
}
|
579
|
+
|
573
580
|
void XdsClusterManagerLb::ClusterChild::Helper::AddTraceEvent(
|
574
581
|
TraceSeverity severity, absl::string_view message) {
|
575
582
|
if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_) {
|
@@ -299,6 +299,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
299
299
|
// This is a no-op, because we get the addresses from the xds
|
300
300
|
// client, which is a watch-based API.
|
301
301
|
void RequestReresolution() override {}
|
302
|
+
absl::string_view GetAuthority() override;
|
302
303
|
void AddTraceEvent(TraceSeverity severity,
|
303
304
|
absl::string_view message) override;
|
304
305
|
|
@@ -380,6 +381,10 @@ void XdsClusterResolverLb::Helper::UpdateState(
|
|
380
381
|
state, status, std::move(picker));
|
381
382
|
}
|
382
383
|
|
384
|
+
absl::string_view XdsClusterResolverLb::Helper::GetAuthority() {
|
385
|
+
return xds_cluster_resolver_policy_->channel_control_helper()->GetAuthority();
|
386
|
+
}
|
387
|
+
|
383
388
|
void XdsClusterResolverLb::Helper::AddTraceEvent(TraceSeverity severity,
|
384
389
|
absl::string_view message) {
|
385
390
|
if (xds_cluster_resolver_policy_->shutting_down_) return;
|
@@ -453,7 +458,7 @@ XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
|
453
458
|
void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
454
459
|
RunInExecCtx(void* arg, grpc_error_handle error) {
|
455
460
|
Notifier* self = static_cast<Notifier*>(arg);
|
456
|
-
GRPC_ERROR_REF(error);
|
461
|
+
(void)GRPC_ERROR_REF(error);
|
457
462
|
self->discovery_mechanism_->parent()->work_serializer()->Run(
|
458
463
|
[self, error]() { self->RunInWorkSerializer(error); }, DEBUG_LOCATION);
|
459
464
|
}
|
@@ -572,13 +577,6 @@ XdsClusterResolverLb::XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client,
|
|
572
577
|
}
|
573
578
|
// EDS-only flow.
|
574
579
|
if (!is_xds_uri_) {
|
575
|
-
// Setup channelz linkage.
|
576
|
-
channelz::ChannelNode* parent_channelz_node =
|
577
|
-
grpc_channel_args_find_pointer<channelz::ChannelNode>(
|
578
|
-
args.args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
579
|
-
if (parent_channelz_node != nullptr) {
|
580
|
-
xds_client_->AddChannelzLinkage(parent_channelz_node);
|
581
|
-
}
|
582
580
|
// Couple polling.
|
583
581
|
grpc_pollset_set_add_pollset_set(xds_client_->interested_parties(),
|
584
582
|
interested_parties());
|
@@ -602,13 +600,6 @@ void XdsClusterResolverLb::ShutdownLocked() {
|
|
602
600
|
MaybeDestroyChildPolicyLocked();
|
603
601
|
discovery_mechanisms_.clear();
|
604
602
|
if (!is_xds_uri_) {
|
605
|
-
// Remove channelz linkage.
|
606
|
-
channelz::ChannelNode* parent_channelz_node =
|
607
|
-
grpc_channel_args_find_pointer<channelz::ChannelNode>(
|
608
|
-
args_, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
609
|
-
if (parent_channelz_node != nullptr) {
|
610
|
-
xds_client_->RemoveChannelzLinkage(parent_channelz_node);
|
611
|
-
}
|
612
603
|
// Decouple polling.
|
613
604
|
grpc_pollset_set_del_pollset_set(xds_client_->interested_parties(),
|
614
605
|
interested_parties());
|
@@ -1171,7 +1162,7 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1171
1162
|
if (!discovery_mechanism_errors.empty()) {
|
1172
1163
|
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
1173
1164
|
absl::StrCat("field:discovery_mechanism element: ", i, " error"));
|
1174
|
-
for (grpc_error_handle discovery_mechanism_error :
|
1165
|
+
for (const grpc_error_handle& discovery_mechanism_error :
|
1175
1166
|
discovery_mechanism_errors) {
|
1176
1167
|
error = grpc_error_add_child(error, discovery_mechanism_error);
|
1177
1168
|
}
|
@@ -29,7 +29,6 @@
|
|
29
29
|
#include "absl/types/variant.h"
|
30
30
|
|
31
31
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
32
|
-
#include "src/core/ext/filters/client_channel/service_config.h"
|
33
32
|
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
34
33
|
#include "src/core/lib/gprpp/orphanable.h"
|
35
34
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
@@ -154,6 +153,9 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
154
153
|
/// Produce a vector of metadata key/value strings for tests.
|
155
154
|
virtual std::vector<std::pair<std::string, std::string>>
|
156
155
|
TestOnlyCopyToVector() = 0;
|
156
|
+
|
157
|
+
virtual absl::optional<absl::string_view> Lookup(
|
158
|
+
absl::string_view key, std::string* buffer) const = 0;
|
157
159
|
};
|
158
160
|
|
159
161
|
/// Arguments used when picking a subchannel for a call.
|
@@ -261,6 +263,11 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
261
263
|
|
262
264
|
/// A proxy object implemented by the client channel and used by the
|
263
265
|
/// LB policy to communicate with the channel.
|
266
|
+
// TODO(roth): Once insecure builds go away, add methods for accessing
|
267
|
+
// channel creds. By default, that should strip off the call creds
|
268
|
+
// attached to the channel creds, but there should also be a "use at
|
269
|
+
// your own risk" option to get the channel creds without stripping
|
270
|
+
// off the attached call creds.
|
264
271
|
class ChannelControlHelper {
|
265
272
|
public:
|
266
273
|
ChannelControlHelper() = default;
|
@@ -279,6 +286,9 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
279
286
|
/// Requests that the resolver re-resolve.
|
280
287
|
virtual void RequestReresolution() = 0;
|
281
288
|
|
289
|
+
/// Returns the channel authority.
|
290
|
+
virtual absl::string_view GetAuthority() = 0;
|
291
|
+
|
282
292
|
/// Adds a trace message associated with the channel.
|
283
293
|
enum TraceSeverity { TRACE_INFO, TRACE_WARNING, TRACE_ERROR };
|
284
294
|
virtual void AddTraceEvent(TraceSeverity severity,
|
@@ -0,0 +1,139 @@
|
|
1
|
+
// Copyright 2021 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#include <grpc/support/port_platform.h>
|
16
|
+
|
17
|
+
#include "src/core/lib/iomgr/port.h"
|
18
|
+
|
19
|
+
#ifdef GRPC_HAVE_UNIX_SOCKET
|
20
|
+
|
21
|
+
#include <sys/un.h>
|
22
|
+
|
23
|
+
#include <grpc/support/alloc.h>
|
24
|
+
#include <grpc/support/string_util.h>
|
25
|
+
|
26
|
+
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
27
|
+
#include "src/core/ext/filters/client_channel/server_address.h"
|
28
|
+
#include "src/core/lib/address_utils/parse_address.h"
|
29
|
+
#include "src/core/lib/channel/channel_args.h"
|
30
|
+
#include "src/core/lib/gpr/string.h"
|
31
|
+
|
32
|
+
namespace grpc_core {
|
33
|
+
namespace {
|
34
|
+
|
35
|
+
class BinderResolver : public Resolver {
|
36
|
+
public:
|
37
|
+
BinderResolver(ServerAddressList addresses, ResolverArgs args)
|
38
|
+
: result_handler_(std::move(args.result_handler)),
|
39
|
+
addresses_(std::move(addresses)),
|
40
|
+
channel_args_(grpc_channel_args_copy(args.args)) {}
|
41
|
+
|
42
|
+
~BinderResolver() override { grpc_channel_args_destroy(channel_args_); };
|
43
|
+
|
44
|
+
void StartLocked() override {
|
45
|
+
Result result;
|
46
|
+
result.addresses = std::move(addresses_);
|
47
|
+
result.args = channel_args_;
|
48
|
+
channel_args_ = nullptr;
|
49
|
+
result_handler_->ReturnResult(std::move(result));
|
50
|
+
}
|
51
|
+
|
52
|
+
void ShutdownLocked() override {}
|
53
|
+
|
54
|
+
private:
|
55
|
+
std::unique_ptr<ResultHandler> result_handler_;
|
56
|
+
ServerAddressList addresses_;
|
57
|
+
const grpc_channel_args* channel_args_ = nullptr;
|
58
|
+
};
|
59
|
+
|
60
|
+
class BinderResolverFactory : public ResolverFactory {
|
61
|
+
public:
|
62
|
+
bool IsValidUri(const URI& uri) const override {
|
63
|
+
return ParseUri(uri, nullptr);
|
64
|
+
}
|
65
|
+
|
66
|
+
OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
|
67
|
+
ServerAddressList addresses;
|
68
|
+
if (!ParseUri(args.uri, &addresses)) return nullptr;
|
69
|
+
return MakeOrphanable<BinderResolver>(std::move(addresses),
|
70
|
+
std::move(args));
|
71
|
+
}
|
72
|
+
|
73
|
+
const char* scheme() const override { return "binder"; }
|
74
|
+
|
75
|
+
private:
|
76
|
+
static grpc_error_handle BinderAddrPopulate(
|
77
|
+
absl::string_view path, grpc_resolved_address* resolved_addr) {
|
78
|
+
path = absl::StripPrefix(path, "/");
|
79
|
+
if (path.empty()) {
|
80
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING("path is empty");
|
81
|
+
}
|
82
|
+
// Store parsed path in a unix socket so it can be reinterpreted as
|
83
|
+
// sockaddr. An invalid address family (AF_MAX) is set to make sure it won't
|
84
|
+
// be accidentally used.
|
85
|
+
memset(resolved_addr, 0, sizeof(*resolved_addr));
|
86
|
+
struct sockaddr_un* un =
|
87
|
+
reinterpret_cast<struct sockaddr_un*>(resolved_addr->addr);
|
88
|
+
un->sun_family = AF_MAX;
|
89
|
+
static_assert(sizeof(un->sun_path) >= 101,
|
90
|
+
"unix socket path size is unexpectedly short");
|
91
|
+
if (path.size() + 1 > sizeof(un->sun_path)) {
|
92
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
93
|
+
absl::StrCat(path, " is too long to be handled"));
|
94
|
+
}
|
95
|
+
// `un` has already be set to zero, no need to append null after the string
|
96
|
+
memcpy(un->sun_path, path.data(), path.size());
|
97
|
+
resolved_addr->len =
|
98
|
+
static_cast<socklen_t>(sizeof(un->sun_family) + path.size() + 1);
|
99
|
+
return GRPC_ERROR_NONE;
|
100
|
+
}
|
101
|
+
|
102
|
+
static bool ParseUri(const URI& uri, ServerAddressList* addresses) {
|
103
|
+
grpc_resolved_address addr;
|
104
|
+
{
|
105
|
+
if (!uri.authority().empty()) {
|
106
|
+
gpr_log(GPR_ERROR, "authority is not supported in binder scheme");
|
107
|
+
return false;
|
108
|
+
}
|
109
|
+
grpc_error_handle error = BinderAddrPopulate(uri.path(), &addr);
|
110
|
+
if (error != GRPC_ERROR_NONE) {
|
111
|
+
gpr_log(GPR_ERROR, "%s", grpc_error_std_string(error).c_str());
|
112
|
+
GRPC_ERROR_UNREF(error);
|
113
|
+
return false;
|
114
|
+
}
|
115
|
+
}
|
116
|
+
if (addresses != nullptr) {
|
117
|
+
addresses->emplace_back(addr, nullptr /* args */);
|
118
|
+
}
|
119
|
+
return true;
|
120
|
+
}
|
121
|
+
};
|
122
|
+
|
123
|
+
} // namespace
|
124
|
+
} // namespace grpc_core
|
125
|
+
|
126
|
+
void grpc_resolver_binder_init() {
|
127
|
+
grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
|
128
|
+
absl::make_unique<grpc_core::BinderResolverFactory>());
|
129
|
+
}
|
130
|
+
|
131
|
+
void grpc_resolver_binder_shutdown() {}
|
132
|
+
|
133
|
+
#else
|
134
|
+
|
135
|
+
void grpc_resolver_binder_init() {}
|
136
|
+
|
137
|
+
void grpc_resolver_binder_shutdown() {}
|
138
|
+
|
139
|
+
#endif
|
@@ -39,7 +39,7 @@
|
|
39
39
|
#include "src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h"
|
40
40
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
41
41
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
42
|
-
#include "src/core/ext/
|
42
|
+
#include "src/core/ext/service_config/service_config.h"
|
43
43
|
#include "src/core/lib/backoff/backoff.h"
|
44
44
|
#include "src/core/lib/channel/channel_args.h"
|
45
45
|
#include "src/core/lib/gpr/string.h"
|
@@ -193,7 +193,7 @@ void AresDnsResolver::ShutdownLocked() {
|
|
193
193
|
|
194
194
|
void AresDnsResolver::OnNextResolution(void* arg, grpc_error_handle error) {
|
195
195
|
AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
|
196
|
-
GRPC_ERROR_REF(error); // ref owned by lambda
|
196
|
+
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
197
197
|
r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
|
198
198
|
DEBUG_LOCATION);
|
199
199
|
}
|
@@ -305,7 +305,7 @@ std::string ChooseServiceConfig(char* service_config_choice_json,
|
|
305
305
|
|
306
306
|
void AresDnsResolver::OnResolved(void* arg, grpc_error_handle error) {
|
307
307
|
AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
|
308
|
-
GRPC_ERROR_REF(error); // ref owned by lambda
|
308
|
+
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
309
309
|
r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); },
|
310
310
|
DEBUG_LOCATION);
|
311
311
|
}
|
@@ -313,7 +313,7 @@ void AresDnsResolver::OnResolved(void* arg, grpc_error_handle error) {
|
|
313
313
|
void AresDnsResolver::OnResolvedLocked(grpc_error_handle error) {
|
314
314
|
GPR_ASSERT(resolving_);
|
315
315
|
resolving_ = false;
|
316
|
-
|
316
|
+
delete pending_request_;
|
317
317
|
pending_request_ = nullptr;
|
318
318
|
if (shutdown_initiated_) {
|
319
319
|
Unref(DEBUG_LOCATION, "OnResolvedLocked() shutdown");
|
@@ -445,7 +445,13 @@ void AresDnsResolver::StartResolvingLocked() {
|
|
445
445
|
|
446
446
|
class AresDnsResolverFactory : public ResolverFactory {
|
447
447
|
public:
|
448
|
-
bool IsValidUri(const URI&
|
448
|
+
bool IsValidUri(const URI& uri) const override {
|
449
|
+
if (absl::StripPrefix(uri.path(), "/").empty()) {
|
450
|
+
gpr_log(GPR_ERROR, "no server name supplied in dns URI");
|
451
|
+
return false;
|
452
|
+
}
|
453
|
+
return true;
|
454
|
+
}
|
449
455
|
|
450
456
|
OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
|
451
457
|
return MakeOrphanable<AresDnsResolver>(std::move(args));
|
@@ -424,7 +424,7 @@ class GrpcPolledFdWindows {
|
|
424
424
|
static void OnTcpConnect(void* arg, grpc_error_handle error) {
|
425
425
|
GrpcPolledFdWindows* grpc_polled_fd =
|
426
426
|
static_cast<GrpcPolledFdWindows*>(arg);
|
427
|
-
GRPC_ERROR_REF(error); // ref owned by lambda
|
427
|
+
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
428
428
|
grpc_polled_fd->work_serializer_->Run(
|
429
429
|
[grpc_polled_fd, error]() {
|
430
430
|
grpc_polled_fd->OnTcpConnectLocked(error);
|
@@ -579,7 +579,7 @@ class GrpcPolledFdWindows {
|
|
579
579
|
|
580
580
|
static void OnIocpReadable(void* arg, grpc_error_handle error) {
|
581
581
|
GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
|
582
|
-
GRPC_ERROR_REF(error); // ref owned by lambda
|
582
|
+
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
583
583
|
polled_fd->work_serializer_->Run(
|
584
584
|
[polled_fd, error]() { polled_fd->OnIocpReadableLocked(error); },
|
585
585
|
DEBUG_LOCATION);
|
@@ -624,7 +624,7 @@ class GrpcPolledFdWindows {
|
|
624
624
|
|
625
625
|
static void OnIocpWriteable(void* arg, grpc_error_handle error) {
|
626
626
|
GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
|
627
|
-
GRPC_ERROR_REF(error); // error owned by lambda
|
627
|
+
(void)GRPC_ERROR_REF(error); // error owned by lambda
|
628
628
|
polled_fd->work_serializer_->Run(
|
629
629
|
[polled_fd, error]() { polled_fd->OnIocpWriteableLocked(error); },
|
630
630
|
DEBUG_LOCATION);
|
@@ -47,7 +47,6 @@
|
|
47
47
|
#include "src/core/lib/iomgr/nameser.h"
|
48
48
|
#include "src/core/lib/iomgr/sockaddr.h"
|
49
49
|
#include "src/core/lib/iomgr/timer.h"
|
50
|
-
#include "src/core/lib/transport/authority_override.h"
|
51
50
|
|
52
51
|
using grpc_core::ServerAddress;
|
53
52
|
using grpc_core::ServerAddressList;
|
@@ -57,29 +56,6 @@ grpc_core::TraceFlag grpc_trace_cares_address_sorting(false,
|
|
57
56
|
|
58
57
|
grpc_core::TraceFlag grpc_trace_cares_resolver(false, "cares_resolver");
|
59
58
|
|
60
|
-
typedef struct grpc_ares_ev_driver grpc_ares_ev_driver;
|
61
|
-
|
62
|
-
struct grpc_ares_request {
|
63
|
-
/** indicates the DNS server to use, if specified */
|
64
|
-
struct ares_addr_port_node dns_server_addr;
|
65
|
-
/** following members are set in grpc_resolve_address_ares_impl */
|
66
|
-
/** closure to call when the request completes */
|
67
|
-
grpc_closure* on_done;
|
68
|
-
/** the pointer to receive the resolved addresses */
|
69
|
-
std::unique_ptr<grpc_core::ServerAddressList>* addresses_out;
|
70
|
-
/** the pointer to receive the resolved balancer addresses */
|
71
|
-
std::unique_ptr<grpc_core::ServerAddressList>* balancer_addresses_out;
|
72
|
-
/** the pointer to receive the service config in JSON */
|
73
|
-
char** service_config_json_out;
|
74
|
-
/** the evernt driver used by this request */
|
75
|
-
grpc_ares_ev_driver* ev_driver;
|
76
|
-
/** number of ongoing queries */
|
77
|
-
size_t pending_queries;
|
78
|
-
|
79
|
-
/** the errors explaining query failures, appended to in query callbacks */
|
80
|
-
grpc_error_handle error;
|
81
|
-
};
|
82
|
-
|
83
59
|
typedef struct fd_node {
|
84
60
|
/** the owner of this fd node */
|
85
61
|
grpc_ares_ev_driver* ev_driver;
|
@@ -284,7 +260,7 @@ static void on_timeout_locked(grpc_ares_ev_driver* driver,
|
|
284
260
|
|
285
261
|
static void on_timeout(void* arg, grpc_error_handle error) {
|
286
262
|
grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
|
287
|
-
GRPC_ERROR_REF(error); // ref owned by lambda
|
263
|
+
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
288
264
|
driver->work_serializer->Run(
|
289
265
|
[driver, error]() { on_timeout_locked(driver, error); }, DEBUG_LOCATION);
|
290
266
|
}
|
@@ -296,7 +272,7 @@ static void on_ares_backup_poll_alarm_locked(grpc_ares_ev_driver* driver,
|
|
296
272
|
|
297
273
|
static void on_ares_backup_poll_alarm(void* arg, grpc_error_handle error) {
|
298
274
|
grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
|
299
|
-
GRPC_ERROR_REF(error);
|
275
|
+
(void)GRPC_ERROR_REF(error);
|
300
276
|
driver->work_serializer->Run(
|
301
277
|
[driver, error]() { on_ares_backup_poll_alarm_locked(driver, error); },
|
302
278
|
DEBUG_LOCATION);
|
@@ -379,7 +355,7 @@ static void on_readable_locked(fd_node* fdn, grpc_error_handle error) {
|
|
379
355
|
|
380
356
|
static void on_readable(void* arg, grpc_error_handle error) {
|
381
357
|
fd_node* fdn = static_cast<fd_node*>(arg);
|
382
|
-
GRPC_ERROR_REF(error); /* ref owned by lambda */
|
358
|
+
(void)GRPC_ERROR_REF(error); /* ref owned by lambda */
|
383
359
|
fdn->ev_driver->work_serializer->Run(
|
384
360
|
[fdn, error]() { on_readable_locked(fdn, error); }, DEBUG_LOCATION);
|
385
361
|
}
|
@@ -409,7 +385,7 @@ static void on_writable_locked(fd_node* fdn, grpc_error_handle error) {
|
|
409
385
|
|
410
386
|
static void on_writable(void* arg, grpc_error_handle error) {
|
411
387
|
fd_node* fdn = static_cast<fd_node*>(arg);
|
412
|
-
GRPC_ERROR_REF(error); /* ref owned by lambda */
|
388
|
+
(void)GRPC_ERROR_REF(error); /* ref owned by lambda */
|
413
389
|
fdn->ev_driver->work_serializer->Run(
|
414
390
|
[fdn, error]() { on_writable_locked(fdn, error); }, DEBUG_LOCATION);
|
415
391
|
}
|
@@ -670,8 +646,8 @@ static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/,
|
|
670
646
|
for (size_t i = 0; hostent->h_addr_list[i] != nullptr; ++i) {
|
671
647
|
absl::InlinedVector<grpc_arg, 1> args_to_add;
|
672
648
|
if (hr->is_balancer) {
|
673
|
-
args_to_add.emplace_back(
|
674
|
-
|
649
|
+
args_to_add.emplace_back(grpc_channel_arg_string_create(
|
650
|
+
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY), hr->host));
|
675
651
|
}
|
676
652
|
grpc_channel_args* args = grpc_channel_args_copy_and_add(
|
677
653
|
nullptr, args_to_add.data(), args_to_add.size());
|
@@ -841,13 +817,13 @@ void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
|
|
841
817
|
if (host.empty()) {
|
842
818
|
error = grpc_error_set_str(
|
843
819
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("unparseable host:port"),
|
844
|
-
GRPC_ERROR_STR_TARGET_ADDRESS,
|
820
|
+
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
845
821
|
goto error_cleanup;
|
846
822
|
} else if (port.empty()) {
|
847
823
|
if (default_port == nullptr) {
|
848
824
|
error = grpc_error_set_str(
|
849
825
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("no port in name"),
|
850
|
-
GRPC_ERROR_STR_TARGET_ADDRESS,
|
826
|
+
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
851
827
|
goto error_cleanup;
|
852
828
|
}
|
853
829
|
port = default_port;
|
@@ -879,7 +855,7 @@ void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
|
|
879
855
|
} else {
|
880
856
|
error = grpc_error_set_str(
|
881
857
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("cannot parse authority"),
|
882
|
-
GRPC_ERROR_STR_TARGET_ADDRESS,
|
858
|
+
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
883
859
|
goto error_cleanup;
|
884
860
|
}
|
885
861
|
int status =
|
@@ -1060,15 +1036,12 @@ static grpc_ares_request* grpc_dns_lookup_ares_locked_impl(
|
|
1060
1036
|
std::unique_ptr<grpc_core::ServerAddressList>* balancer_addrs,
|
1061
1037
|
char** service_config_json, int query_timeout_ms,
|
1062
1038
|
std::shared_ptr<grpc_core::WorkSerializer> work_serializer) {
|
1063
|
-
grpc_ares_request* r =
|
1064
|
-
static_cast<grpc_ares_request*>(gpr_zalloc(sizeof(grpc_ares_request)));
|
1039
|
+
grpc_ares_request* r = new grpc_ares_request();
|
1065
1040
|
r->ev_driver = nullptr;
|
1066
1041
|
r->on_done = on_done;
|
1067
1042
|
r->addresses_out = addrs;
|
1068
1043
|
r->balancer_addresses_out = balancer_addrs;
|
1069
1044
|
r->service_config_json_out = service_config_json;
|
1070
|
-
r->error = GRPC_ERROR_NONE;
|
1071
|
-
r->pending_queries = 0;
|
1072
1045
|
GRPC_CARES_TRACE_LOG(
|
1073
1046
|
"request:%p c-ares grpc_dns_lookup_ares_locked_impl name=%s, "
|
1074
1047
|
"default_port=%s",
|
@@ -1164,7 +1137,7 @@ typedef struct grpc_resolve_address_ares_request {
|
|
1164
1137
|
|
1165
1138
|
static void on_dns_lookup_done_locked(grpc_resolve_address_ares_request* r,
|
1166
1139
|
grpc_error_handle error) {
|
1167
|
-
|
1140
|
+
delete r->ares_request;
|
1168
1141
|
grpc_resolved_addresses** resolved_addresses = r->addrs_out;
|
1169
1142
|
if (r->addresses == nullptr || r->addresses->empty()) {
|
1170
1143
|
*resolved_addresses = nullptr;
|
@@ -1187,7 +1160,7 @@ static void on_dns_lookup_done_locked(grpc_resolve_address_ares_request* r,
|
|
1187
1160
|
static void on_dns_lookup_done(void* arg, grpc_error_handle error) {
|
1188
1161
|
grpc_resolve_address_ares_request* r =
|
1189
1162
|
static_cast<grpc_resolve_address_ares_request*>(arg);
|
1190
|
-
GRPC_ERROR_REF(error); // ref owned by lambda
|
1163
|
+
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
1191
1164
|
r->work_serializer->Run([r, error]() { on_dns_lookup_done_locked(r, error); },
|
1192
1165
|
DEBUG_LOCATION);
|
1193
1166
|
}
|
@@ -42,7 +42,27 @@ extern grpc_core::TraceFlag grpc_trace_cares_resolver;
|
|
42
42
|
} \
|
43
43
|
} while (0)
|
44
44
|
|
45
|
-
typedef struct
|
45
|
+
typedef struct grpc_ares_ev_driver grpc_ares_ev_driver;
|
46
|
+
|
47
|
+
struct grpc_ares_request {
|
48
|
+
/** indicates the DNS server to use, if specified */
|
49
|
+
struct ares_addr_port_node dns_server_addr;
|
50
|
+
/** following members are set in grpc_resolve_address_ares_impl */
|
51
|
+
/** closure to call when the request completes */
|
52
|
+
grpc_closure* on_done = nullptr;
|
53
|
+
/** the pointer to receive the resolved addresses */
|
54
|
+
std::unique_ptr<grpc_core::ServerAddressList>* addresses_out;
|
55
|
+
/** the pointer to receive the resolved balancer addresses */
|
56
|
+
std::unique_ptr<grpc_core::ServerAddressList>* balancer_addresses_out;
|
57
|
+
/** the pointer to receive the service config in JSON */
|
58
|
+
char** service_config_json_out = nullptr;
|
59
|
+
/** the evernt driver used by this request */
|
60
|
+
grpc_ares_ev_driver* ev_driver = nullptr;
|
61
|
+
/** number of ongoing queries */
|
62
|
+
size_t pending_queries = 0;
|
63
|
+
/** the errors explaining query failures, appended to in query callbacks */
|
64
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
65
|
+
};
|
46
66
|
|
47
67
|
/* Asynchronously resolve \a name. Use \a default_port if a port isn't
|
48
68
|
designated in \a name, otherwise use the port in \a name. grpc_ares_init()
|