aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2016-03-11 09:52:42 -0800
committerGravatar Craig Tiller <ctiller@google.com>2016-03-11 09:52:42 -0800
commite2327dbb8e45936c81802119142a7cda28230f24 (patch)
tree8a426dacc675479323c5808433a289625d93f82b /src
parent1e55bd455d5fa901e19c1ccf64996c0adc7a4584 (diff)
Fit and finish for dns retry loop
Diffstat (limited to 'src')
-rw-r--r--src/core/client_config/resolvers/dns_resolver.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/core/client_config/resolvers/dns_resolver.c b/src/core/client_config/resolvers/dns_resolver.c
index 55457647b3..e28e4757a1 100644
--- a/src/core/client_config/resolvers/dns_resolver.c
+++ b/src/core/client_config/resolvers/dns_resolver.c
@@ -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");
}