aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c21
-rw-r--r--src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c24
2 files changed, 25 insertions, 20 deletions
diff --git a/src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c b/src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c
index b7cdc63d75..4ad40f8615 100644
--- a/src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c
+++ b/src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c
@@ -253,10 +253,11 @@ static void dns_ares_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
args->on_complete = on_complete;
args->resolver = resolver;
GRPC_RESOLVER_REF(resolver, "ares-next");
- grpc_closure_sched(exec_ctx, grpc_closure_create(
- dns_ares_next_locked, args,
- grpc_combiner_scheduler(r->combiner, false)),
- GRPC_ERROR_NONE);
+ grpc_closure_sched(
+ exec_ctx,
+ grpc_closure_create(dns_ares_next_locked, args,
+ grpc_combiner_scheduler(r->base.combiner, false)),
+ GRPC_ERROR_NONE);
}
static void dns_ares_start_resolving_locked(grpc_exec_ctx *exec_ctx,
@@ -286,7 +287,6 @@ static void dns_ares_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx,
static void dns_ares_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *gr) {
gpr_log(GPR_DEBUG, "dns_ares_destroy");
ares_dns_resolver *r = (ares_dns_resolver *)gr;
- GRPC_COMBINER_UNREF(exec_ctx, r->combiner, "dns_ares_destroy");
if (r->resolved_result != NULL) {
grpc_channel_args_destroy(exec_ctx, r->resolved_result);
}
@@ -309,8 +309,7 @@ static grpc_resolver *dns_ares_create(grpc_exec_ctx *exec_ctx,
if (path[0] == '/') ++path;
// Create resolver.
ares_dns_resolver *r = gpr_zalloc(sizeof(ares_dns_resolver));
- r->combiner = grpc_combiner_create(NULL);
- grpc_resolver_init(&r->base, &dns_ares_resolver_vtable, r->combiner);
+ grpc_resolver_init(&r->base, &dns_ares_resolver_vtable, args->combiner);
r->name_to_resolve = gpr_strdup(path);
r->default_port = gpr_strdup(default_port);
r->channel_args = grpc_channel_args_copy(args->args);
@@ -325,16 +324,16 @@ static grpc_resolver *dns_ares_create(grpc_exec_ctx *exec_ctx,
GRPC_DNS_MIN_CONNECT_TIMEOUT_SECONDS * 1000,
GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000);
grpc_closure_init(&r->dns_ares_shutdown_locked, dns_ares_shutdown_locked, r,
- grpc_combiner_scheduler(r->combiner, false));
+ grpc_combiner_scheduler(r->base.combiner, false));
grpc_closure_init(&r->dns_ares_channel_saw_error_locked,
dns_ares_channel_saw_error_locked, r,
- grpc_combiner_scheduler(r->combiner, false));
+ grpc_combiner_scheduler(r->base.combiner, false));
grpc_closure_init(&r->dns_ares_on_retry_timer_locked,
dns_ares_on_retry_timer_locked, r,
- grpc_combiner_scheduler(r->combiner, false));
+ grpc_combiner_scheduler(r->base.combiner, false));
grpc_closure_init(&r->dns_ares_on_resolved_locked,
dns_ares_on_resolved_locked, r,
- grpc_combiner_scheduler(r->combiner, false));
+ grpc_combiner_scheduler(r->base.combiner, false));
return &r->base;
}
diff --git a/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c b/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c
index f077e1b091..7a104665c1 100644
--- a/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c
+++ b/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c
@@ -95,16 +95,16 @@ static uint16_t strhtons(const char *port) {
static void grpc_ares_request_unref(grpc_exec_ctx *exec_ctx,
grpc_ares_request *r) {
- // If there are no pending queries, invoke on_done callback and destroy the
- // request
+ /* If there are no pending queries, invoke on_done callback and destroy the
+ request */
if (gpr_unref(&r->pending_queries)) {
- // TODO(zyc): Sort results with RPC6724 before invoking on_done.
+ /* TODO(zyc): Sort results with RPC6724 before invoking on_done. */
if (exec_ctx == NULL) {
- // A new exec_ctx is created here, as the c-ares interface does not
- // provide one in ares_host_callback. It's safe to schedule on_done with
- // the newly created exec_ctx, since the caller has been warned not to
- // acquire locks in on_done. ares_dns_resolver is using combiner to
- // protect resources needed by on_done.
+ /* A new exec_ctx is created here, as the c-ares interface does not
+ provide one in ares_host_callback. It's safe to schedule on_done with
+ the newly created exec_ctx, since the caller has been warned not to
+ acquire locks in on_done. ares_dns_resolver is using combiner to
+ protect resources needed by on_done. */
grpc_exec_ctx new_exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_closure_sched(&new_exec_ctx, r->on_done, r->error);
grpc_exec_ctx_finish(&new_exec_ctx);
@@ -197,6 +197,12 @@ void grpc_resolve_address_ares_impl(grpc_exec_ctx *exec_ctx, const char *name,
grpc_pollset_set *interested_parties,
grpc_closure *on_done,
grpc_resolved_addresses **addrs) {
+ /* TODO(zyc): Enable tracing after #9603 is checked in */
+ /* if (grpc_dns_trace) {
+ gpr_log(GPR_DEBUG, "resolve_address (blocking): name=%s, default_port=%s",
+ name, default_port);
+ } */
+
/* parse name, splitting it into host and port parts */
char *host;
char *port;
@@ -241,7 +247,7 @@ void grpc_resolve_address_ares_impl(grpc_exec_ctx *exec_ctx, const char *name,
ares_gethostbyname(*channel, r->host, AF_INET6, on_done_cb, r);
}
ares_gethostbyname(*channel, r->host, AF_INET, on_done_cb, r);
- // TODO(zyc): Handle CNAME records here.
+ /* TODO(zyc): Handle CNAME records here. */
grpc_ares_ev_driver_start(exec_ctx, r->ev_driver);
grpc_ares_request_unref(exec_ctx, r);
return;