diff --git a/src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c b/src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c index b65974e1bbee44bed82b3240a78841bec22cd8c1..31fc7e1dfed51bc22276c237c402cc594f45c580 100644 --- a/src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c +++ b/src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c @@ -116,9 +116,10 @@ static void driver_cb(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { ARES_GETSOCK_READABLE(d->bitmask, i) ? d->socks[i] : ARES_SOCKET_BAD, ARES_GETSOCK_WRITABLE(d->bitmask, i) ? d->socks[i] : ARES_SOCKET_BAD); } + } else { + ares_cancel(d->channel); } grpc_ares_notify_on_event(exec_ctx, d); - grpc_exec_ctx_flush(exec_ctx); } void grpc_ares_gethostbyname(grpc_ares_ev_driver *ev_driver, const char *host, 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 2010cdef9834cfb534c4df73611a8aaa0b6f9668..e1f0f34a6504ad0fee99a1c3948efdca572b05b1 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 @@ -152,7 +152,7 @@ static void on_done_cb(void *arg, int status, int timeouts, addr = (struct sockaddr_in *)&(*addresses)->addrs[i].addr; memcpy(&addr->sin_addr, hostent->h_addr_list[i - prev_naddr], - sizeof(struct in_addr)); + sizeof(struct in_addr)); ares_inet_ntop(AF_INET, &addr->sin_addr, output, INET_ADDRSTRLEN); gpr_log(GPR_ERROR, "addr: %s", output); gpr_log(GPR_ERROR, "port: %s", r->port);