|
|
|
@ -95,6 +95,9 @@ static const grpc_resolver_vtable dns_resolver_vtable = { |
|
|
|
|
static void dns_shutdown(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver) { |
|
|
|
|
dns_resolver *r = (dns_resolver *)resolver; |
|
|
|
|
gpr_mu_lock(&r->mu); |
|
|
|
|
if (r->have_retry_timer) { |
|
|
|
|
grpc_timer_cancel(exec_ctx, &r->retry_timer); |
|
|
|
|
} |
|
|
|
|
if (r->next_completion != NULL) { |
|
|
|
|
*r->target_config = NULL; |
|
|
|
|
grpc_exec_ctx_enqueue(exec_ctx, r->next_completion, true, NULL); |
|
|
|
@ -133,13 +136,14 @@ static void dns_on_retry_timer(grpc_exec_ctx *exec_ctx, void *arg, |
|
|
|
|
bool success) { |
|
|
|
|
dns_resolver *r = arg; |
|
|
|
|
|
|
|
|
|
gpr_mu_lock(&r->mu); |
|
|
|
|
r->have_retry_timer = false; |
|
|
|
|
if (success) { |
|
|
|
|
gpr_mu_lock(&r->mu); |
|
|
|
|
if (!r->resolving) { |
|
|
|
|
dns_start_resolving_locked(r); |
|
|
|
|
} |
|
|
|
|
gpr_mu_unlock(&r->mu); |
|
|
|
|
} |
|
|
|
|
gpr_mu_unlock(&r->mu); |
|
|
|
|
|
|
|
|
|
GRPC_RESOLVER_UNREF(exec_ctx, &r->base, "retry-timer"); |
|
|
|
|
} |
|
|
|
|