// In late 2023, c-ares modified its default DNS timeout and retry behavior during a major refactor.
reinit_channel_on_timeout_(config.reinit_channel_on_timeout()), resolvers_csv_(resolvers_csv),
scope_(root_scope.createScope("dns.cares.")), stats_(generateCaresDnsResolverStats(*scope_)) {
// Treat responses with `ARES_ENODATA` or `ARES_ENOTFOUND` status as DNS response with no records.
status == ARES_ENOTIMP || (status == ARES_ETIMEOUT && parent_.reinit_channel_on_timeout_)) {
if (!pending_response_.address_list_.empty() && dns_lookup_family_ != DnsLookupFamily::All) {
ENVOY_LOG_EVENT(trace, "cares_dns_resolution_start", "dns resolution for {} started", dns_name);
// if ~DnsResolverImpl() happens via ares_destroy() and subsequent handling of ARES_EDESTRUCTION
void DnsResolverImpl::AddrInfoPendingResolution::startResolution() { startResolutionImpl(family_); }
const Api::SysCallIntResult rc = Api::OsSysCallsSingleton::get().getifaddrs(interface_addresses);
RETURN_IF_NOT_OK(Envoy::MessageUtil::unpackTo(typed_dns_resolver_config.typed_config(), cares));