grpc 1.43.1 → 1.44.0.pre2
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 +84 -64
- data/include/grpc/grpc_security.h +10 -0
- data/include/grpc/impl/codegen/compression_types.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +6 -0
- data/src/core/ext/filters/client_channel/backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +62 -68
- data/src/core/ext/filters/client_channel/client_channel.h +8 -8
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -14
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +3 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +31 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +43 -29
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +120 -68
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +60 -48
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +19 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +50 -105
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +19 -3
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +207 -81
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +23 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +118 -207
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +82 -73
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +10 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -5
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +157 -67
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +37 -64
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +12 -16
- data/src/core/ext/filters/client_channel/subchannel.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +37 -48
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -8
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +51 -122
- data/src/core/ext/filters/http/client_authority_filter.cc +8 -24
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +42 -140
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +5 -25
- data/src/core/ext/filters/http/server/http_server_filter.cc +50 -135
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/rbac/rbac_filter.cc +157 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +74 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +605 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +11 -6
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +89 -29
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +45 -186
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +341 -279
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +69 -159
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +19 -32
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
- data/src/core/ext/transport/chttp2/transport/internal.h +0 -33
- data/src/core/ext/transport/chttp2/transport/parsing.cc +0 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +47 -116
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +11 -63
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +61 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +55 -0
- data/src/core/ext/xds/upb_utils.h +65 -0
- data/src/core/ext/xds/xds_api.cc +81 -3458
- data/src/core/ext/xds/xds_api.h +56 -611
- data/src/core/ext/xds/xds_bootstrap.cc +189 -125
- data/src/core/ext/xds/xds_bootstrap.h +20 -15
- data/src/core/ext/xds/xds_certificate_provider.h +1 -0
- data/src/core/ext/xds/xds_channel_creds.cc +108 -0
- data/src/core/ext/xds/xds_channel_creds.h +50 -0
- data/src/core/ext/xds/xds_client.cc +584 -994
- data/src/core/ext/xds/xds_client.h +78 -135
- data/src/core/ext/xds/xds_cluster.cc +451 -0
- data/src/core/ext/xds/xds_cluster.h +111 -0
- data/src/core/ext/xds/xds_common_types.cc +388 -0
- data/src/core/ext/xds/xds_common_types.h +110 -0
- data/src/core/ext/xds/xds_endpoint.cc +364 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_filters.cc +5 -0
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1036 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +993 -0
- data/src/core/ext/xds/xds_route_config.h +215 -0
- data/src/core/ext/xds/xds_routing.cc +11 -8
- data/src/core/ext/xds/xds_routing.h +8 -5
- data/src/core/ext/xds/xds_server_config_fetcher.cc +159 -99
- data/src/core/lib/address_utils/parse_address.cc +20 -0
- data/src/core/lib/address_utils/parse_address.h +5 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
- data/src/core/lib/backoff/backoff.cc +4 -30
- data/src/core/lib/backoff/backoff.h +3 -3
- data/src/core/lib/channel/channel_args.cc +0 -1
- data/src/core/lib/channel/channel_stack.cc +8 -0
- data/src/core/lib/channel/channel_stack.h +1 -1
- data/src/core/lib/channel/channel_stack_builder.cc +5 -9
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channelz.cc +1 -0
- data/src/core/lib/compression/compression.cc +19 -111
- data/src/core/lib/compression/compression_internal.cc +142 -202
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +11 -11
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/gpr/useful.h +4 -0
- data/src/core/lib/gprpp/bitset.h +7 -0
- data/src/core/lib/gprpp/chunked_vector.h +45 -3
- data/src/core/lib/gprpp/status_helper.cc +20 -28
- data/src/core/lib/gprpp/status_helper.h +6 -19
- data/src/core/lib/gprpp/table.h +11 -0
- data/src/core/lib/http/httpcli.cc +37 -46
- data/src/core/lib/http/httpcli.h +3 -15
- data/src/core/lib/iomgr/call_combiner.cc +15 -4
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +25 -3
- data/src/core/lib/iomgr/error.cc +2 -0
- data/src/core/lib/iomgr/error.h +3 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +3 -2
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +66 -48
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/exec_ctx.cc +22 -9
- data/src/core/lib/iomgr/executor.cc +10 -1
- data/src/core/lib/iomgr/fork_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr_custom.cc +4 -1
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +5 -24
- data/src/core/lib/iomgr/resolve_address.h +47 -44
- data/src/core/lib/iomgr/resolve_address_custom.cc +131 -109
- data/src/core/lib/iomgr/resolve_address_custom.h +101 -19
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +82 -66
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
- data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
- data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/promise/activity.h +49 -20
- data/src/core/lib/promise/detail/status.h +5 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +10 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.cc +3 -2
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.h +4 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.h +0 -1
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
- data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
- data/src/core/lib/security/authorization/evaluate_args.cc +30 -15
- data/src/core/lib/security/authorization/evaluate_args.h +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +170 -0
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/context/security_context.h +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -5
- data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -3
- data/src/core/lib/security/credentials/credentials.h +10 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +6 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +7 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +2 -7
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -5
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +16 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +16 -28
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +8 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +6 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +44 -57
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +13 -15
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +5 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +6 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +7 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +0 -4
- data/src/core/lib/security/security_connector/security_connector.h +5 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +14 -24
- data/src/core/lib/security/security_connector/ssl_utils.h +5 -14
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +2 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +53 -33
- data/src/core/lib/security/transport/server_auth_filter.cc +40 -35
- data/src/core/{ext → lib}/service_config/service_config.cc +2 -2
- data/src/core/{ext → lib}/service_config/service_config.h +4 -4
- data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
- data/src/core/{ext → lib}/service_config/service_config_parser.cc +1 -1
- data/src/core/{ext → lib}/service_config/service_config_parser.h +3 -3
- data/src/core/lib/slice/slice.cc +3 -1
- data/src/core/lib/slice/slice.h +43 -13
- data/src/core/lib/slice/slice_intern.cc +3 -101
- data/src/core/lib/slice/slice_internal.h +1 -2
- data/src/core/lib/slice/slice_refcount.h +4 -13
- data/src/core/lib/slice/slice_refcount_base.h +0 -16
- data/src/core/lib/surface/call.cc +140 -382
- data/src/core/lib/surface/call.h +4 -4
- data/src/core/lib/surface/channel.cc +42 -44
- data/src/core/lib/surface/channel.h +4 -4
- data/src/core/lib/surface/init.cc +0 -2
- data/src/core/lib/surface/lame_client.cc +0 -1
- data/src/core/lib/surface/server.cc +12 -29
- data/src/core/lib/surface/server.h +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.h +14 -0
- data/src/core/lib/transport/metadata_batch.h +799 -717
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +95 -92
- data/src/core/lib/transport/timeout_encoding.cc +200 -66
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +6 -39
- data/src/core/lib/uri/uri_parser.cc +223 -53
- data/src/core/lib/uri/uri_parser.h +36 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
- data/src/core/tsi/ssl_transport_security.cc +53 -13
- data/src/core/tsi/ssl_transport_security.h +18 -6
- data/src/ruby/ext/grpc/extconf.rb +10 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
- data/third_party/xxhash/xxhash.h +607 -352
- metadata +149 -77
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
- data/src/core/lib/compression/algorithm_metadata.h +0 -62
- data/src/core/lib/compression/compression_args.cc +0 -140
- data/src/core/lib/compression/compression_args.h +0 -58
- data/src/core/lib/compression/stream_compression.cc +0 -81
- data/src/core/lib/compression/stream_compression.h +0 -117
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -91
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
- data/src/core/lib/slice/static_slice.cc +0 -377
- data/src/core/lib/slice/static_slice.h +0 -300
- data/src/core/lib/transport/metadata.cc +0 -714
- data/src/core/lib/transport/metadata.h +0 -449
- data/src/core/lib/transport/metadata_batch.cc +0 -99
- data/src/core/lib/transport/static_metadata.cc +0 -1032
- data/src/core/lib/transport/static_metadata.h +0 -322
- data/src/core/lib/transport/status_metadata.cc +0 -63
- data/src/core/lib/transport/status_metadata.h +0 -48
@@ -57,55 +57,63 @@ grpc_core::TraceFlag grpc_trace_cares_address_sorting(false,
|
|
57
57
|
grpc_core::TraceFlag grpc_trace_cares_resolver(false, "cares_resolver");
|
58
58
|
|
59
59
|
typedef struct fd_node {
|
60
|
+
/* default constructor exists only for linked list manipulation */
|
61
|
+
fd_node() : ev_driver(nullptr) {}
|
62
|
+
|
63
|
+
explicit fd_node(grpc_ares_ev_driver* ev_driver) : ev_driver(ev_driver) {}
|
64
|
+
|
60
65
|
/** the owner of this fd node */
|
61
|
-
grpc_ares_ev_driver* ev_driver;
|
66
|
+
grpc_ares_ev_driver* const ev_driver;
|
62
67
|
/** a closure wrapping on_readable_locked, which should be
|
63
68
|
invoked when the grpc_fd in this node becomes readable. */
|
64
|
-
grpc_closure read_closure;
|
69
|
+
grpc_closure read_closure ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
65
70
|
/** a closure wrapping on_writable_locked, which should be
|
66
71
|
invoked when the grpc_fd in this node becomes writable. */
|
67
|
-
grpc_closure write_closure;
|
72
|
+
grpc_closure write_closure ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
68
73
|
/** next fd node in the list */
|
69
|
-
struct fd_node* next;
|
74
|
+
struct fd_node* next ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
70
75
|
|
71
76
|
/** wrapped fd that's polled by grpc's poller for the current platform */
|
72
|
-
grpc_core::GrpcPolledFd* grpc_polled_fd
|
77
|
+
grpc_core::GrpcPolledFd* grpc_polled_fd
|
78
|
+
ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
73
79
|
/** if the readable closure has been registered */
|
74
|
-
bool readable_registered;
|
80
|
+
bool readable_registered ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
75
81
|
/** if the writable closure has been registered */
|
76
|
-
bool writable_registered;
|
82
|
+
bool writable_registered ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
77
83
|
/** if the fd has been shutdown yet from grpc iomgr perspective */
|
78
|
-
bool already_shutdown;
|
84
|
+
bool already_shutdown ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
79
85
|
} fd_node;
|
80
86
|
|
81
87
|
struct grpc_ares_ev_driver {
|
88
|
+
explicit grpc_ares_ev_driver(grpc_ares_request* request) : request(request) {}
|
89
|
+
|
82
90
|
/** the ares_channel owned by this event driver */
|
83
|
-
ares_channel channel;
|
91
|
+
ares_channel channel ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
84
92
|
/** pollset set for driving the IO events of the channel */
|
85
|
-
grpc_pollset_set* pollset_set;
|
93
|
+
grpc_pollset_set* pollset_set ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
86
94
|
/** refcount of the event driver */
|
87
95
|
gpr_refcount refs;
|
88
96
|
|
89
|
-
/** work_serializer to synchronize c-ares and I/O callbacks on */
|
90
|
-
std::shared_ptr<grpc_core::WorkSerializer> work_serializer;
|
91
97
|
/** a list of grpc_fd that this event driver is currently using. */
|
92
|
-
fd_node* fds;
|
98
|
+
fd_node* fds ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
93
99
|
/** is this event driver being shut down */
|
94
|
-
bool shutting_down;
|
100
|
+
bool shutting_down ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
95
101
|
/** request object that's using this ev driver */
|
96
|
-
grpc_ares_request* request;
|
102
|
+
grpc_ares_request* const request;
|
97
103
|
/** Owned by the ev_driver. Creates new GrpcPolledFd's */
|
98
|
-
std::unique_ptr<grpc_core::GrpcPolledFdFactory> polled_fd_factory
|
104
|
+
std::unique_ptr<grpc_core::GrpcPolledFdFactory> polled_fd_factory
|
105
|
+
ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
99
106
|
/** query timeout in milliseconds */
|
100
|
-
int query_timeout_ms;
|
107
|
+
int query_timeout_ms ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
101
108
|
/** alarm to cancel active queries */
|
102
|
-
grpc_timer query_timeout;
|
109
|
+
grpc_timer query_timeout ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
103
110
|
/** cancels queries on a timeout */
|
104
|
-
grpc_closure on_timeout_locked;
|
111
|
+
grpc_closure on_timeout_locked ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
105
112
|
/** alarm to poll ares_process on in case fd events don't happen */
|
106
|
-
grpc_timer ares_backup_poll_alarm;
|
113
|
+
grpc_timer ares_backup_poll_alarm ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
107
114
|
/** polls ares_process on a periodic timer */
|
108
|
-
grpc_closure on_ares_backup_poll_alarm_locked
|
115
|
+
grpc_closure on_ares_backup_poll_alarm_locked
|
116
|
+
ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
109
117
|
};
|
110
118
|
|
111
119
|
// TODO(apolcyn): make grpc_ares_hostbyname_request a sub-class
|
@@ -125,8 +133,10 @@ typedef struct grpc_ares_hostbyname_request {
|
|
125
133
|
const char* qtype;
|
126
134
|
} grpc_ares_hostbyname_request;
|
127
135
|
|
128
|
-
static void grpc_ares_request_ref_locked(grpc_ares_request* r)
|
129
|
-
|
136
|
+
static void grpc_ares_request_ref_locked(grpc_ares_request* r)
|
137
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(r->mu);
|
138
|
+
static void grpc_ares_request_unref_locked(grpc_ares_request* r)
|
139
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(r->mu);
|
130
140
|
|
131
141
|
// TODO(apolcyn): as a part of C++-ification, find a way to
|
132
142
|
// organize per-query and per-resolution information in such a way
|
@@ -153,14 +163,19 @@ class GrpcAresQuery {
|
|
153
163
|
};
|
154
164
|
|
155
165
|
static grpc_ares_ev_driver* grpc_ares_ev_driver_ref(
|
156
|
-
grpc_ares_ev_driver* ev_driver)
|
166
|
+
grpc_ares_ev_driver* ev_driver)
|
167
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) {
|
157
168
|
GRPC_CARES_TRACE_LOG("request:%p Ref ev_driver %p", ev_driver->request,
|
158
169
|
ev_driver);
|
159
170
|
gpr_ref(&ev_driver->refs);
|
160
171
|
return ev_driver;
|
161
172
|
}
|
162
173
|
|
163
|
-
static void
|
174
|
+
static void grpc_ares_complete_request_locked(grpc_ares_request* r)
|
175
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(r->mu);
|
176
|
+
|
177
|
+
static void grpc_ares_ev_driver_unref(grpc_ares_ev_driver* ev_driver)
|
178
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) {
|
164
179
|
GRPC_CARES_TRACE_LOG("request:%p Unref ev_driver %p", ev_driver->request,
|
165
180
|
ev_driver);
|
166
181
|
if (gpr_unref(&ev_driver->refs)) {
|
@@ -173,17 +188,19 @@ static void grpc_ares_ev_driver_unref(grpc_ares_ev_driver* ev_driver) {
|
|
173
188
|
}
|
174
189
|
}
|
175
190
|
|
176
|
-
static void fd_node_destroy_locked(fd_node* fdn)
|
191
|
+
static void fd_node_destroy_locked(fd_node* fdn)
|
192
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) {
|
177
193
|
GRPC_CARES_TRACE_LOG("request:%p delete fd: %s", fdn->ev_driver->request,
|
178
194
|
fdn->grpc_polled_fd->GetName());
|
179
195
|
GPR_ASSERT(!fdn->readable_registered);
|
180
196
|
GPR_ASSERT(!fdn->writable_registered);
|
181
197
|
GPR_ASSERT(fdn->already_shutdown);
|
182
198
|
delete fdn->grpc_polled_fd;
|
183
|
-
|
199
|
+
delete fdn;
|
184
200
|
}
|
185
201
|
|
186
|
-
static void fd_node_shutdown_locked(fd_node* fdn, const char* reason)
|
202
|
+
static void fd_node_shutdown_locked(fd_node* fdn, const char* reason)
|
203
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) {
|
187
204
|
if (!fdn->already_shutdown) {
|
188
205
|
fdn->already_shutdown = true;
|
189
206
|
fdn->grpc_polled_fd->ShutdownLocked(
|
@@ -192,7 +209,8 @@ static void fd_node_shutdown_locked(fd_node* fdn, const char* reason) {
|
|
192
209
|
}
|
193
210
|
|
194
211
|
void grpc_ares_ev_driver_on_queries_complete_locked(
|
195
|
-
grpc_ares_ev_driver* ev_driver)
|
212
|
+
grpc_ares_ev_driver* ev_driver)
|
213
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) {
|
196
214
|
// We mark the event driver as being shut down.
|
197
215
|
// grpc_ares_notify_on_event_locked will shut down any remaining
|
198
216
|
// fds.
|
@@ -202,7 +220,8 @@ void grpc_ares_ev_driver_on_queries_complete_locked(
|
|
202
220
|
grpc_ares_ev_driver_unref(ev_driver);
|
203
221
|
}
|
204
222
|
|
205
|
-
void grpc_ares_ev_driver_shutdown_locked(grpc_ares_ev_driver* ev_driver)
|
223
|
+
void grpc_ares_ev_driver_shutdown_locked(grpc_ares_ev_driver* ev_driver)
|
224
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) {
|
206
225
|
ev_driver->shutting_down = true;
|
207
226
|
fd_node* fn = ev_driver->fds;
|
208
227
|
while (fn != nullptr) {
|
@@ -213,7 +232,8 @@ void grpc_ares_ev_driver_shutdown_locked(grpc_ares_ev_driver* ev_driver) {
|
|
213
232
|
|
214
233
|
// Search fd in the fd_node list head. This is an O(n) search, the max possible
|
215
234
|
// value of n is ARES_GETSOCK_MAXNUM (16). n is typically 1 - 2 in our tests.
|
216
|
-
static fd_node* pop_fd_node_locked(fd_node** head, ares_socket_t as)
|
235
|
+
static fd_node* pop_fd_node_locked(fd_node** head, ares_socket_t as)
|
236
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) {
|
217
237
|
fd_node phony_head;
|
218
238
|
phony_head.next = *head;
|
219
239
|
fd_node* node = &phony_head;
|
@@ -230,7 +250,8 @@ static fd_node* pop_fd_node_locked(fd_node** head, ares_socket_t as) {
|
|
230
250
|
}
|
231
251
|
|
232
252
|
static grpc_millis calculate_next_ares_backup_poll_alarm_ms(
|
233
|
-
grpc_ares_ev_driver* driver)
|
253
|
+
grpc_ares_ev_driver* driver)
|
254
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) {
|
234
255
|
// An alternative here could be to use ares_timeout to try to be more
|
235
256
|
// accurate, but that would require using "struct timeval"'s, which just makes
|
236
257
|
// things a bit more complicated. So just poll every second, as suggested
|
@@ -244,8 +265,9 @@ static grpc_millis calculate_next_ares_backup_poll_alarm_ms(
|
|
244
265
|
grpc_core::ExecCtx::Get()->Now();
|
245
266
|
}
|
246
267
|
|
247
|
-
static void
|
248
|
-
|
268
|
+
static void on_timeout(void* arg, grpc_error_handle error) {
|
269
|
+
grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
|
270
|
+
grpc_core::MutexLock lock(&driver->request->mu);
|
249
271
|
GRPC_CARES_TRACE_LOG(
|
250
272
|
"request:%p ev_driver=%p on_timeout_locked. driver->shutting_down=%d. "
|
251
273
|
"err=%s",
|
@@ -255,28 +277,10 @@ static void on_timeout_locked(grpc_ares_ev_driver* driver,
|
|
255
277
|
grpc_ares_ev_driver_shutdown_locked(driver);
|
256
278
|
}
|
257
279
|
grpc_ares_ev_driver_unref(driver);
|
258
|
-
GRPC_ERROR_UNREF(error);
|
259
280
|
}
|
260
281
|
|
261
|
-
static void
|
262
|
-
|
263
|
-
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
264
|
-
driver->work_serializer->Run(
|
265
|
-
[driver, error]() { on_timeout_locked(driver, error); }, DEBUG_LOCATION);
|
266
|
-
}
|
267
|
-
|
268
|
-
static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver);
|
269
|
-
|
270
|
-
static void on_ares_backup_poll_alarm_locked(grpc_ares_ev_driver* driver,
|
271
|
-
grpc_error_handle error);
|
272
|
-
|
273
|
-
static void on_ares_backup_poll_alarm(void* arg, grpc_error_handle error) {
|
274
|
-
grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
|
275
|
-
(void)GRPC_ERROR_REF(error);
|
276
|
-
driver->work_serializer->Run(
|
277
|
-
[driver, error]() { on_ares_backup_poll_alarm_locked(driver, error); },
|
278
|
-
DEBUG_LOCATION);
|
279
|
-
}
|
282
|
+
static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver)
|
283
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu);
|
280
284
|
|
281
285
|
/* In case of non-responsive DNS servers, dropped packets, etc., c-ares has
|
282
286
|
* intelligent timeout and retry logic, which we can take advantage of by
|
@@ -286,8 +290,9 @@ static void on_ares_backup_poll_alarm(void* arg, grpc_error_handle error) {
|
|
286
290
|
* b) when some time has passed without fd events having happened
|
287
291
|
* For the latter, we use this backup poller. Also see
|
288
292
|
* https://github.com/grpc/grpc/pull/17688 description for more details. */
|
289
|
-
static void
|
290
|
-
|
293
|
+
static void on_ares_backup_poll_alarm(void* arg, grpc_error_handle error) {
|
294
|
+
grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
|
295
|
+
grpc_core::MutexLock lock(&driver->request->mu);
|
291
296
|
GRPC_CARES_TRACE_LOG(
|
292
297
|
"request:%p ev_driver=%p on_ares_backup_poll_alarm_locked. "
|
293
298
|
"driver->shutting_down=%d. "
|
@@ -325,10 +330,11 @@ static void on_ares_backup_poll_alarm_locked(grpc_ares_ev_driver* driver,
|
|
325
330
|
grpc_ares_notify_on_event_locked(driver);
|
326
331
|
}
|
327
332
|
grpc_ares_ev_driver_unref(driver);
|
328
|
-
GRPC_ERROR_UNREF(error);
|
329
333
|
}
|
330
334
|
|
331
|
-
static void
|
335
|
+
static void on_readable(void* arg, grpc_error_handle error) {
|
336
|
+
fd_node* fdn = static_cast<fd_node*>(arg);
|
337
|
+
grpc_core::MutexLock lock(&fdn->ev_driver->request->mu);
|
332
338
|
GPR_ASSERT(fdn->readable_registered);
|
333
339
|
grpc_ares_ev_driver* ev_driver = fdn->ev_driver;
|
334
340
|
const ares_socket_t as = fdn->grpc_polled_fd->GetWrappedAresSocketLocked();
|
@@ -350,17 +356,11 @@ static void on_readable_locked(fd_node* fdn, grpc_error_handle error) {
|
|
350
356
|
}
|
351
357
|
grpc_ares_notify_on_event_locked(ev_driver);
|
352
358
|
grpc_ares_ev_driver_unref(ev_driver);
|
353
|
-
GRPC_ERROR_UNREF(error);
|
354
359
|
}
|
355
360
|
|
356
|
-
static void
|
361
|
+
static void on_writable(void* arg, grpc_error_handle error) {
|
357
362
|
fd_node* fdn = static_cast<fd_node*>(arg);
|
358
|
-
(
|
359
|
-
fdn->ev_driver->work_serializer->Run(
|
360
|
-
[fdn, error]() { on_readable_locked(fdn, error); }, DEBUG_LOCATION);
|
361
|
-
}
|
362
|
-
|
363
|
-
static void on_writable_locked(fd_node* fdn, grpc_error_handle error) {
|
363
|
+
grpc_core::MutexLock lock(&fdn->ev_driver->request->mu);
|
364
364
|
GPR_ASSERT(fdn->writable_registered);
|
365
365
|
grpc_ares_ev_driver* ev_driver = fdn->ev_driver;
|
366
366
|
const ares_socket_t as = fdn->grpc_polled_fd->GetWrappedAresSocketLocked();
|
@@ -380,19 +380,12 @@ static void on_writable_locked(fd_node* fdn, grpc_error_handle error) {
|
|
380
380
|
}
|
381
381
|
grpc_ares_notify_on_event_locked(ev_driver);
|
382
382
|
grpc_ares_ev_driver_unref(ev_driver);
|
383
|
-
GRPC_ERROR_UNREF(error);
|
384
|
-
}
|
385
|
-
|
386
|
-
static void on_writable(void* arg, grpc_error_handle error) {
|
387
|
-
fd_node* fdn = static_cast<fd_node*>(arg);
|
388
|
-
(void)GRPC_ERROR_REF(error); /* ref owned by lambda */
|
389
|
-
fdn->ev_driver->work_serializer->Run(
|
390
|
-
[fdn, error]() { on_writable_locked(fdn, error); }, DEBUG_LOCATION);
|
391
383
|
}
|
392
384
|
|
393
385
|
// Get the file descriptors used by the ev_driver's ares channel, register
|
394
386
|
// driver_closure with these filedescriptors.
|
395
|
-
static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver)
|
387
|
+
static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver)
|
388
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) {
|
396
389
|
fd_node* new_list = nullptr;
|
397
390
|
if (!ev_driver->shutting_down) {
|
398
391
|
ares_socket_t socks[ARES_GETSOCK_MAXNUM];
|
@@ -404,13 +397,12 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver) {
|
|
404
397
|
fd_node* fdn = pop_fd_node_locked(&ev_driver->fds, socks[i]);
|
405
398
|
// Create a new fd_node if sock[i] is not in the fd_node list.
|
406
399
|
if (fdn == nullptr) {
|
407
|
-
fdn =
|
400
|
+
fdn = new fd_node(ev_driver);
|
408
401
|
fdn->grpc_polled_fd =
|
409
402
|
ev_driver->polled_fd_factory->NewGrpcPolledFdLocked(
|
410
|
-
socks[i], ev_driver->pollset_set
|
403
|
+
socks[i], ev_driver->pollset_set);
|
411
404
|
GRPC_CARES_TRACE_LOG("request:%p new fd: %s", ev_driver->request,
|
412
405
|
fdn->grpc_polled_fd->GetName());
|
413
|
-
fdn->ev_driver = ev_driver;
|
414
406
|
fdn->readable_registered = false;
|
415
407
|
fdn->writable_registered = false;
|
416
408
|
fdn->already_shutdown = false;
|
@@ -466,7 +458,8 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver) {
|
|
466
458
|
ev_driver->fds = new_list;
|
467
459
|
}
|
468
460
|
|
469
|
-
void grpc_ares_ev_driver_start_locked(grpc_ares_ev_driver* ev_driver)
|
461
|
+
void grpc_ares_ev_driver_start_locked(grpc_ares_ev_driver* ev_driver)
|
462
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) {
|
470
463
|
grpc_ares_notify_on_event_locked(ev_driver);
|
471
464
|
// Initialize overall DNS resolution timeout alarm
|
472
465
|
grpc_millis timeout =
|
@@ -501,10 +494,9 @@ void (*grpc_ares_test_only_inject_config)(ares_channel channel) =
|
|
501
494
|
|
502
495
|
grpc_error_handle grpc_ares_ev_driver_create_locked(
|
503
496
|
grpc_ares_ev_driver** ev_driver, grpc_pollset_set* pollset_set,
|
504
|
-
int query_timeout_ms,
|
505
|
-
|
506
|
-
|
507
|
-
*ev_driver = new grpc_ares_ev_driver();
|
497
|
+
int query_timeout_ms, grpc_ares_request* request)
|
498
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(request->mu) {
|
499
|
+
*ev_driver = new grpc_ares_ev_driver(request);
|
508
500
|
ares_options opts;
|
509
501
|
memset(&opts, 0, sizeof(opts));
|
510
502
|
opts.flags |= ARES_FLAG_STAYOPEN;
|
@@ -514,17 +506,15 @@ grpc_error_handle grpc_ares_ev_driver_create_locked(
|
|
514
506
|
if (status != ARES_SUCCESS) {
|
515
507
|
grpc_error_handle err = GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
516
508
|
"Failed to init ares channel. C-ares error: ", ares_strerror(status)));
|
517
|
-
|
509
|
+
delete *ev_driver;
|
518
510
|
return err;
|
519
511
|
}
|
520
|
-
(*ev_driver)->work_serializer = std::move(work_serializer);
|
521
512
|
gpr_ref_init(&(*ev_driver)->refs, 1);
|
522
513
|
(*ev_driver)->pollset_set = pollset_set;
|
523
514
|
(*ev_driver)->fds = nullptr;
|
524
515
|
(*ev_driver)->shutting_down = false;
|
525
|
-
(*ev_driver)->request = request;
|
526
516
|
(*ev_driver)->polled_fd_factory =
|
527
|
-
grpc_core::NewGrpcPolledFdFactory((*ev_driver)->
|
517
|
+
grpc_core::NewGrpcPolledFdFactory(&(*ev_driver)->request->mu);
|
528
518
|
(*ev_driver)
|
529
519
|
->polled_fd_factory->ConfigureAresChannelLocked((*ev_driver)->channel);
|
530
520
|
(*ev_driver)->query_timeout_ms = query_timeout_ms;
|
@@ -570,18 +560,21 @@ void grpc_cares_wrapper_address_sorting_sort(const grpc_ares_request* r,
|
|
570
560
|
}
|
571
561
|
}
|
572
562
|
|
573
|
-
static void grpc_ares_request_ref_locked(grpc_ares_request* r)
|
563
|
+
static void grpc_ares_request_ref_locked(grpc_ares_request* r)
|
564
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(r->mu) {
|
574
565
|
r->pending_queries++;
|
575
566
|
}
|
576
567
|
|
577
|
-
static void grpc_ares_request_unref_locked(grpc_ares_request* r)
|
568
|
+
static void grpc_ares_request_unref_locked(grpc_ares_request* r)
|
569
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(r->mu) {
|
578
570
|
r->pending_queries--;
|
579
571
|
if (r->pending_queries == 0u) {
|
580
572
|
grpc_ares_ev_driver_on_queries_complete_locked(r->ev_driver);
|
581
573
|
}
|
582
574
|
}
|
583
575
|
|
584
|
-
void grpc_ares_complete_request_locked(grpc_ares_request* r)
|
576
|
+
void grpc_ares_complete_request_locked(grpc_ares_request* r)
|
577
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(r->mu) {
|
585
578
|
/* Invoke on_done callback and destroy the
|
586
579
|
request */
|
587
580
|
r->ev_driver = nullptr;
|
@@ -606,7 +599,8 @@ void grpc_ares_complete_request_locked(grpc_ares_request* r) {
|
|
606
599
|
* qtype must outlive it. */
|
607
600
|
static grpc_ares_hostbyname_request* create_hostbyname_request_locked(
|
608
601
|
grpc_ares_request* parent_request, const char* host, uint16_t port,
|
609
|
-
bool is_balancer, const char* qtype)
|
602
|
+
bool is_balancer, const char* qtype)
|
603
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_request->mu) {
|
610
604
|
GRPC_CARES_TRACE_LOG(
|
611
605
|
"request:%p create_hostbyname_request_locked host:%s port:%d "
|
612
606
|
"is_balancer:%d qtype:%s",
|
@@ -621,15 +615,18 @@ static grpc_ares_hostbyname_request* create_hostbyname_request_locked(
|
|
621
615
|
return hr;
|
622
616
|
}
|
623
617
|
|
624
|
-
static void destroy_hostbyname_request_locked(
|
625
|
-
|
618
|
+
static void destroy_hostbyname_request_locked(grpc_ares_hostbyname_request* hr)
|
619
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(hr->parent_request->mu) {
|
626
620
|
grpc_ares_request_unref_locked(hr->parent_request);
|
627
621
|
gpr_free(hr->host);
|
628
622
|
delete hr;
|
629
623
|
}
|
630
624
|
|
631
625
|
static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/,
|
632
|
-
struct hostent* hostent)
|
626
|
+
struct hostent* hostent)
|
627
|
+
ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
628
|
+
// This callback is invoked from the c-ares library, so disable thread safety
|
629
|
+
// analysis. Note that we are guaranteed to be holding r->mu, though.
|
633
630
|
grpc_ares_hostbyname_request* hr =
|
634
631
|
static_cast<grpc_ares_hostbyname_request*>(arg);
|
635
632
|
grpc_ares_request* r = hr->parent_request;
|
@@ -702,7 +699,10 @@ static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/,
|
|
702
699
|
}
|
703
700
|
|
704
701
|
static void on_srv_query_done_locked(void* arg, int status, int /*timeouts*/,
|
705
|
-
unsigned char* abuf,
|
702
|
+
unsigned char* abuf,
|
703
|
+
int alen) ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
704
|
+
// This callback is invoked from the c-ares library, so disable thread safety
|
705
|
+
// analysis. Note that we are guaranteed to be holding r->mu, though.
|
706
706
|
GrpcAresQuery* q = static_cast<GrpcAresQuery*>(arg);
|
707
707
|
grpc_ares_request* r = q->parent_request();
|
708
708
|
if (status == ARES_SUCCESS) {
|
@@ -749,7 +749,10 @@ static void on_srv_query_done_locked(void* arg, int status, int /*timeouts*/,
|
|
749
749
|
static const char g_service_config_attribute_prefix[] = "grpc_config=";
|
750
750
|
|
751
751
|
static void on_txt_done_locked(void* arg, int status, int /*timeouts*/,
|
752
|
-
unsigned char* buf,
|
752
|
+
unsigned char* buf,
|
753
|
+
int len) ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
754
|
+
// This callback is invoked from the c-ares library, so disable thread safety
|
755
|
+
// analysis. Note that we are guaranteed to be holding r->mu, though.
|
753
756
|
GrpcAresQuery* q = static_cast<GrpcAresQuery*>(arg);
|
754
757
|
std::unique_ptr<GrpcAresQuery> query_deleter(q);
|
755
758
|
grpc_ares_request* r = q->parent_request();
|
@@ -806,8 +809,7 @@ fail:
|
|
806
809
|
void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
|
807
810
|
grpc_ares_request* r, const char* dns_server, const char* name,
|
808
811
|
const char* default_port, grpc_pollset_set* interested_parties,
|
809
|
-
int query_timeout_ms
|
810
|
-
std::shared_ptr<grpc_core::WorkSerializer> work_serializer) {
|
812
|
+
int query_timeout_ms) ABSL_EXCLUSIVE_LOCKS_REQUIRED(r->mu) {
|
811
813
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
812
814
|
grpc_ares_hostbyname_request* hr = nullptr;
|
813
815
|
/* parse name, splitting it into host and port parts */
|
@@ -820,7 +822,7 @@ void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
|
|
820
822
|
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
821
823
|
goto error_cleanup;
|
822
824
|
} else if (port.empty()) {
|
823
|
-
if (default_port == nullptr) {
|
825
|
+
if (default_port == nullptr || strlen(default_port) == 0) {
|
824
826
|
error = grpc_error_set_str(
|
825
827
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("no port in name"),
|
826
828
|
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
@@ -829,8 +831,7 @@ void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
|
|
829
831
|
port = default_port;
|
830
832
|
}
|
831
833
|
error = grpc_ares_ev_driver_create_locked(&r->ev_driver, interested_parties,
|
832
|
-
query_timeout_ms,
|
833
|
-
std::move(work_serializer), r);
|
834
|
+
query_timeout_ms, r);
|
834
835
|
if (error != GRPC_ERROR_NONE) goto error_cleanup;
|
835
836
|
// If dns_server is specified, use it.
|
836
837
|
if (dns_server != nullptr && dns_server[0] != '\0') {
|
@@ -912,7 +913,7 @@ static bool inner_resolve_as_ip_literal_locked(
|
|
912
913
|
return false;
|
913
914
|
}
|
914
915
|
if (port->empty()) {
|
915
|
-
if (default_port == nullptr) {
|
916
|
+
if (default_port == nullptr || strlen(default_port) == 0) {
|
916
917
|
gpr_log(GPR_ERROR,
|
917
918
|
"No port or default port for %s while attempting to resolve as "
|
918
919
|
"ip literal.",
|
@@ -975,7 +976,7 @@ static bool inner_maybe_resolve_localhost_manually_locked(
|
|
975
976
|
return false;
|
976
977
|
}
|
977
978
|
if (port->empty()) {
|
978
|
-
if (default_port == nullptr) {
|
979
|
+
if (default_port == nullptr || strlen(default_port) == 0) {
|
979
980
|
gpr_log(GPR_ERROR,
|
980
981
|
"No port or default port for %s during manual localhost "
|
981
982
|
"resolution check.",
|
@@ -1029,21 +1030,21 @@ static bool grpc_ares_maybe_resolve_localhost_manually_locked(
|
|
1029
1030
|
}
|
1030
1031
|
#endif /* GRPC_ARES_RESOLVE_LOCALHOST_MANUALLY */
|
1031
1032
|
|
1032
|
-
static grpc_ares_request*
|
1033
|
+
static grpc_ares_request* grpc_dns_lookup_ares_impl(
|
1033
1034
|
const char* dns_server, const char* name, const char* default_port,
|
1034
1035
|
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
1035
1036
|
std::unique_ptr<grpc_core::ServerAddressList>* addrs,
|
1036
1037
|
std::unique_ptr<grpc_core::ServerAddressList>* balancer_addrs,
|
1037
|
-
char** service_config_json, int query_timeout_ms
|
1038
|
-
std::shared_ptr<grpc_core::WorkSerializer> work_serializer) {
|
1038
|
+
char** service_config_json, int query_timeout_ms) {
|
1039
1039
|
grpc_ares_request* r = new grpc_ares_request();
|
1040
|
+
grpc_core::MutexLock lock(&r->mu);
|
1040
1041
|
r->ev_driver = nullptr;
|
1041
1042
|
r->on_done = on_done;
|
1042
1043
|
r->addresses_out = addrs;
|
1043
1044
|
r->balancer_addresses_out = balancer_addrs;
|
1044
1045
|
r->service_config_json_out = service_config_json;
|
1045
1046
|
GRPC_CARES_TRACE_LOG(
|
1046
|
-
"request:%p c-ares
|
1047
|
+
"request:%p c-ares grpc_dns_lookup_ares_impl name=%s, "
|
1047
1048
|
"default_port=%s",
|
1048
1049
|
r, name, default_port);
|
1049
1050
|
// Early out if the target is an ipv4 or ipv6 literal.
|
@@ -1066,29 +1067,30 @@ static grpc_ares_request* grpc_dns_lookup_ares_locked_impl(
|
|
1066
1067
|
}
|
1067
1068
|
// Look up name using c-ares lib.
|
1068
1069
|
grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
|
1069
|
-
r, dns_server, name, default_port, interested_parties, query_timeout_ms
|
1070
|
-
std::move(work_serializer));
|
1070
|
+
r, dns_server, name, default_port, interested_parties, query_timeout_ms);
|
1071
1071
|
return r;
|
1072
1072
|
}
|
1073
1073
|
|
1074
|
-
grpc_ares_request* (*
|
1074
|
+
grpc_ares_request* (*grpc_dns_lookup_ares)(
|
1075
1075
|
const char* dns_server, const char* name, const char* default_port,
|
1076
1076
|
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
1077
1077
|
std::unique_ptr<grpc_core::ServerAddressList>* addrs,
|
1078
1078
|
std::unique_ptr<grpc_core::ServerAddressList>* balancer_addrs,
|
1079
|
-
char** service_config_json,
|
1080
|
-
|
1081
|
-
grpc_dns_lookup_ares_locked_impl;
|
1079
|
+
char** service_config_json,
|
1080
|
+
int query_timeout_ms) = grpc_dns_lookup_ares_impl;
|
1082
1081
|
|
1083
|
-
static void
|
1082
|
+
static void grpc_cancel_ares_request_impl(grpc_ares_request* r) {
|
1084
1083
|
GPR_ASSERT(r != nullptr);
|
1084
|
+
grpc_core::MutexLock lock(&r->mu);
|
1085
|
+
GRPC_CARES_TRACE_LOG("request:%p grpc_cancel_ares_request ev_driver:%p", r,
|
1086
|
+
r->ev_driver);
|
1085
1087
|
if (r->ev_driver != nullptr) {
|
1086
1088
|
grpc_ares_ev_driver_shutdown_locked(r->ev_driver);
|
1087
1089
|
}
|
1088
1090
|
}
|
1089
1091
|
|
1090
|
-
void (*
|
1091
|
-
|
1092
|
+
void (*grpc_cancel_ares_request)(grpc_ares_request* r) =
|
1093
|
+
grpc_cancel_ares_request_impl;
|
1092
1094
|
|
1093
1095
|
// ares_library_init and ares_library_cleanup are currently no-op except under
|
1094
1096
|
// Windows. Calling them may cause race conditions when other parts of the
|
@@ -1109,95 +1111,4 @@ grpc_error_handle grpc_ares_init(void) { return GRPC_ERROR_NONE; }
|
|
1109
1111
|
void grpc_ares_cleanup(void) {}
|
1110
1112
|
#endif // GPR_WINDOWS
|
1111
1113
|
|
1112
|
-
/*
|
1113
|
-
* grpc_resolve_address_ares related structs and functions
|
1114
|
-
*/
|
1115
|
-
|
1116
|
-
typedef struct grpc_resolve_address_ares_request {
|
1117
|
-
/* work_serializer that queries and related callbacks run under */
|
1118
|
-
std::shared_ptr<grpc_core::WorkSerializer> work_serializer;
|
1119
|
-
/** the pointer to receive the resolved addresses */
|
1120
|
-
grpc_resolved_addresses** addrs_out;
|
1121
|
-
/** currently resolving addresses */
|
1122
|
-
std::unique_ptr<ServerAddressList> addresses;
|
1123
|
-
/** closure to call when the resolve_address_ares request completes */
|
1124
|
-
grpc_closure* on_resolve_address_done;
|
1125
|
-
/** a closure wrapping on_resolve_address_done, which should be invoked when
|
1126
|
-
the grpc_dns_lookup_ares_locked operation is done. */
|
1127
|
-
grpc_closure on_dns_lookup_done_locked;
|
1128
|
-
/* target name */
|
1129
|
-
const char* name;
|
1130
|
-
/* default port to use if none is specified */
|
1131
|
-
const char* default_port;
|
1132
|
-
/* pollset_set to be driven by */
|
1133
|
-
grpc_pollset_set* interested_parties;
|
1134
|
-
/* underlying ares_request that the query is performed on */
|
1135
|
-
grpc_ares_request* ares_request = nullptr;
|
1136
|
-
} grpc_resolve_address_ares_request;
|
1137
|
-
|
1138
|
-
static void on_dns_lookup_done_locked(grpc_resolve_address_ares_request* r,
|
1139
|
-
grpc_error_handle error) {
|
1140
|
-
delete r->ares_request;
|
1141
|
-
grpc_resolved_addresses** resolved_addresses = r->addrs_out;
|
1142
|
-
if (r->addresses == nullptr || r->addresses->empty()) {
|
1143
|
-
*resolved_addresses = nullptr;
|
1144
|
-
} else {
|
1145
|
-
*resolved_addresses = static_cast<grpc_resolved_addresses*>(
|
1146
|
-
gpr_zalloc(sizeof(grpc_resolved_addresses)));
|
1147
|
-
(*resolved_addresses)->naddrs = r->addresses->size();
|
1148
|
-
(*resolved_addresses)->addrs =
|
1149
|
-
static_cast<grpc_resolved_address*>(gpr_zalloc(
|
1150
|
-
sizeof(grpc_resolved_address) * (*resolved_addresses)->naddrs));
|
1151
|
-
for (size_t i = 0; i < (*resolved_addresses)->naddrs; ++i) {
|
1152
|
-
memcpy(&(*resolved_addresses)->addrs[i], &(*r->addresses)[i].address(),
|
1153
|
-
sizeof(grpc_resolved_address));
|
1154
|
-
}
|
1155
|
-
}
|
1156
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_resolve_address_done, error);
|
1157
|
-
delete r;
|
1158
|
-
}
|
1159
|
-
|
1160
|
-
static void on_dns_lookup_done(void* arg, grpc_error_handle error) {
|
1161
|
-
grpc_resolve_address_ares_request* r =
|
1162
|
-
static_cast<grpc_resolve_address_ares_request*>(arg);
|
1163
|
-
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
1164
|
-
r->work_serializer->Run([r, error]() { on_dns_lookup_done_locked(r, error); },
|
1165
|
-
DEBUG_LOCATION);
|
1166
|
-
}
|
1167
|
-
|
1168
|
-
static void grpc_resolve_address_invoke_dns_lookup_ares_locked(void* arg) {
|
1169
|
-
grpc_resolve_address_ares_request* r =
|
1170
|
-
static_cast<grpc_resolve_address_ares_request*>(arg);
|
1171
|
-
GRPC_CLOSURE_INIT(&r->on_dns_lookup_done_locked, on_dns_lookup_done, r,
|
1172
|
-
grpc_schedule_on_exec_ctx);
|
1173
|
-
r->ares_request = grpc_dns_lookup_ares_locked(
|
1174
|
-
nullptr /* dns_server */, r->name, r->default_port, r->interested_parties,
|
1175
|
-
&r->on_dns_lookup_done_locked, &r->addresses,
|
1176
|
-
nullptr /* balancer_addresses */, nullptr /* service_config_json */,
|
1177
|
-
GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS, r->work_serializer);
|
1178
|
-
}
|
1179
|
-
|
1180
|
-
static void grpc_resolve_address_ares_impl(const char* name,
|
1181
|
-
const char* default_port,
|
1182
|
-
grpc_pollset_set* interested_parties,
|
1183
|
-
grpc_closure* on_done,
|
1184
|
-
grpc_resolved_addresses** addrs) {
|
1185
|
-
grpc_resolve_address_ares_request* r =
|
1186
|
-
new grpc_resolve_address_ares_request();
|
1187
|
-
r->work_serializer = std::make_shared<grpc_core::WorkSerializer>();
|
1188
|
-
r->addrs_out = addrs;
|
1189
|
-
r->on_resolve_address_done = on_done;
|
1190
|
-
r->name = name;
|
1191
|
-
r->default_port = default_port;
|
1192
|
-
r->interested_parties = interested_parties;
|
1193
|
-
r->work_serializer->Run(
|
1194
|
-
[r]() { grpc_resolve_address_invoke_dns_lookup_ares_locked(r); },
|
1195
|
-
DEBUG_LOCATION);
|
1196
|
-
}
|
1197
|
-
|
1198
|
-
void (*grpc_resolve_address_ares)(
|
1199
|
-
const char* name, const char* default_port,
|
1200
|
-
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
1201
|
-
grpc_resolved_addresses** addrs) = grpc_resolve_address_ares_impl;
|
1202
|
-
|
1203
1114
|
#endif /* GRPC_ARES == 1 */
|