clang-format

pull/797/head
Brad House 5 months ago
parent c2b91beaef
commit bbcb1a2bdf
  1. 2
      src/lib/ares__addrinfo2hostent.c
  2. 4
      src/lib/ares__addrinfo_localhost.c
  3. 12
      src/lib/ares__buf.c
  4. 35
      src/lib/ares__hosts_file.c
  5. 8
      src/lib/ares__htable.c
  6. 2
      src/lib/ares__htable_asvp.c
  7. 2
      src/lib/ares__htable_vpvp.c
  8. 12
      src/lib/ares__iface_ips.c
  9. 8
      src/lib/ares__parse_into_addrinfo.c
  10. 2
      src/lib/ares__slist.c
  11. 4
      src/lib/ares__socket.c
  12. 6
      src/lib/ares__threads.c
  13. 2
      src/lib/ares_cancel.c
  14. 20
      src/lib/ares_dns_mapping.c
  15. 14
      src/lib/ares_dns_name.c
  16. 2
      src/lib/ares_dns_record.c
  17. 67
      src/lib/ares_event_configchg.c
  18. 4
      src/lib/ares_event_epoll.c
  19. 14
      src/lib/ares_event_thread.c
  20. 4
      src/lib/ares_event_wake_pipe.c
  21. 4
      src/lib/ares_getaddrinfo.c
  22. 5
      src/lib/ares_gethostbyaddr.c
  23. 2
      src/lib/ares_gethostbyname.c
  24. 4
      src/lib/ares_getnameinfo.c
  25. 8
      src/lib/ares_init.c
  26. 8
      src/lib/ares_math.c
  27. 28
      src/lib/ares_metrics.c
  28. 4
      src/lib/ares_options.c
  29. 10
      src/lib/ares_parse_caa_reply.c
  30. 6
      src/lib/ares_parse_mx_reply.c
  31. 12
      src/lib/ares_parse_naptr_reply.c
  32. 12
      src/lib/ares_parse_ns_reply.c
  33. 8
      src/lib/ares_parse_ptr_reply.c
  34. 8
      src/lib/ares_parse_soa_reply.c
  35. 6
      src/lib/ares_parse_srv_reply.c
  36. 6
      src/lib/ares_parse_txt_reply.c
  37. 4
      src/lib/ares_parse_uri_reply.c
  38. 42
      src/lib/ares_private.h
  39. 17
      src/lib/ares_process.c
  40. 12
      src/lib/ares_qcache.c
  41. 4
      src/lib/ares_query.c
  42. 9
      src/lib/ares_rand.c
  43. 20
      src/lib/ares_search.c
  44. 2
      src/lib/ares_send.c
  45. 4
      src/lib/ares_strsplit.c
  46. 2
      src/lib/ares_sysconfig_files.c
  47. 23
      src/lib/ares_sysconfig_mac.c
  48. 11
      src/lib/ares_timeout.c
  49. 22
      src/lib/ares_update_servers.c
  50. 4
      src/lib/config-win32.h
  51. 13
      test/ares_queryloop.c

@ -195,7 +195,7 @@ enomem:
ares_free_hostent(*host); ares_free_hostent(*host);
*host = NULL; *host = NULL;
return ARES_ENOMEM; return ARES_ENOMEM;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
ares_status_t ares__addrinfo2addrttl(const struct ares_addrinfo *ai, int family, ares_status_t ares__addrinfo2addrttl(const struct ares_addrinfo *ai, int family,

@ -208,7 +208,7 @@ ares_status_t ares__addrinfo_localhost(const char *name, unsigned short port,
case AF_INET6: case AF_INET6:
case AF_UNSPEC: case AF_UNSPEC:
break; break;
default: /* LCOV_EXCL_LINE: DefensiveCoding */ default: /* LCOV_EXCL_LINE: DefensiveCoding */
return ARES_EBADFAMILY; /* LCOV_EXCL_LINE: DefensiveCoding */ return ARES_EBADFAMILY; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
@ -233,5 +233,5 @@ enomem:
ares_free(ai->name); ares_free(ai->name);
ai->name = NULL; ai->name = NULL;
return ARES_ENOMEM; return ARES_ENOMEM;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }

@ -1187,24 +1187,24 @@ ares_status_t ares__buf_load_file(const char *filename, ares__buf_t *buf)
/* Get length portably, fstat() is POSIX, not C */ /* Get length portably, fstat() is POSIX, not C */
if (fseek(fp, 0, SEEK_END) != 0) { if (fseek(fp, 0, SEEK_END) != 0) {
status = ARES_EFILE; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EFILE; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
ftell_len = ftell(fp); ftell_len = ftell(fp);
if (ftell_len < 0) { if (ftell_len < 0) {
status = ARES_EFILE; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EFILE; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
len = (size_t)ftell_len; len = (size_t)ftell_len;
if (fseek(fp, 0, SEEK_SET) != 0) { if (fseek(fp, 0, SEEK_SET) != 0) {
status = ARES_EFILE; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EFILE; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
if (len == 0) { if (len == 0) {
status = ARES_SUCCESS; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_SUCCESS; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
/* Read entire data into buffer */ /* Read entire data into buffer */
@ -1212,13 +1212,13 @@ ares_status_t ares__buf_load_file(const char *filename, ares__buf_t *buf)
ptr = ares__buf_append_start(buf, &ptr_len); ptr = ares__buf_append_start(buf, &ptr_len);
if (ptr == NULL) { if (ptr == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
ptr_len = fread(ptr, 1, len, fp); ptr_len = fread(ptr, 1, len, fp);
if (ptr_len != len) { if (ptr_len != len) {
status = ARES_EFILE; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EFILE; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
ares__buf_append_finish(buf, len); ares__buf_append_finish(buf, len);

@ -316,7 +316,7 @@ static ares_status_t ares__hosts_file_add(ares_hosts_file_t *hosts,
status = ares__hosts_file_merge_entry(hosts, match, entry, matchtype); status = ares__hosts_file_merge_entry(hosts, match, entry, matchtype);
if (status != ARES_SUCCESS) { if (status != ARES_SUCCESS) {
ares__hosts_entry_destroy(entry); /* LCOV_EXCL_LINE: DefensiveCoding */ ares__hosts_entry_destroy(entry); /* LCOV_EXCL_LINE: DefensiveCoding */
return status; /* LCOV_EXCL_LINE: DefensiveCoding */ return status; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
/* entry was invalidated above by merging */ /* entry was invalidated above by merging */
entry = match; entry = match;
@ -617,7 +617,8 @@ static ares_bool_t ares__hosts_expired(const char *filename,
/* Expire every 60s if we can't get a time */ /* Expire every 60s if we can't get a time */
if (mod_ts == 0) { if (mod_ts == 0) {
mod_ts = time(NULL) - 60; /* LCOV_EXCL_LINE: only on systems without stat() */ mod_ts =
time(NULL) - 60; /* LCOV_EXCL_LINE: only on systems without stat() */
} }
/* If filenames are different, its expired */ /* If filenames are different, its expired */
@ -779,7 +780,7 @@ ares_status_t ares__hosts_entry_to_hostent(const ares_hosts_entry_t *entry,
*hostent = ares_malloc_zero(sizeof(**hostent)); *hostent = ares_malloc_zero(sizeof(**hostent));
if (*hostent == NULL) { if (*hostent == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
(*hostent)->h_addrtype = (HOSTENT_ADDRTYPE_TYPE)family; (*hostent)->h_addrtype = (HOSTENT_ADDRTYPE_TYPE)family;
@ -814,7 +815,7 @@ ares_status_t ares__hosts_entry_to_hostent(const ares_hosts_entry_t *entry,
(idx + 2) * sizeof(*(*hostent)->h_addr_list)); (idx + 2) * sizeof(*(*hostent)->h_addr_list));
if (temp == NULL) { if (temp == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
(*hostent)->h_addr_list = temp; (*hostent)->h_addr_list = temp;
@ -822,7 +823,7 @@ ares_status_t ares__hosts_entry_to_hostent(const ares_hosts_entry_t *entry,
(*hostent)->h_addr_list[idx] = ares_malloc(ptr_len); (*hostent)->h_addr_list[idx] = ares_malloc(ptr_len);
if ((*hostent)->h_addr_list[idx] == NULL) { if ((*hostent)->h_addr_list[idx] == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
memcpy((*hostent)->h_addr_list[idx], ptr, ptr_len); memcpy((*hostent)->h_addr_list[idx], ptr, ptr_len);
@ -840,7 +841,7 @@ ares_status_t ares__hosts_entry_to_hostent(const ares_hosts_entry_t *entry,
(*hostent)->h_name = ares_strdup(ares__llist_first_val(entry->hosts)); (*hostent)->h_name = ares_strdup(ares__llist_first_val(entry->hosts));
if ((*hostent)->h_name == NULL) { if ((*hostent)->h_name == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* Copy aliases */ /* Copy aliases */
@ -856,7 +857,7 @@ ares_status_t ares__hosts_entry_to_hostent(const ares_hosts_entry_t *entry,
ares_malloc_zero((naliases + 1) * sizeof(*(*hostent)->h_aliases)); ares_malloc_zero((naliases + 1) * sizeof(*(*hostent)->h_aliases));
if ((*hostent)->h_aliases == NULL) { if ((*hostent)->h_aliases == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* Copy all entries to the alias except the first */ /* Copy all entries to the alias except the first */
@ -867,7 +868,7 @@ ares_status_t ares__hosts_entry_to_hostent(const ares_hosts_entry_t *entry,
(*hostent)->h_aliases[idx] = ares_strdup(ares__llist_node_val(node)); (*hostent)->h_aliases[idx] = ares_strdup(ares__llist_node_val(node));
if ((*hostent)->h_aliases[idx] == NULL) { if ((*hostent)->h_aliases[idx] == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
idx++; idx++;
@ -885,7 +886,7 @@ fail:
ares_free_hostent(*hostent); ares_free_hostent(*hostent);
*hostent = NULL; *hostent = NULL;
return status; return status;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
static ares_status_t static ares_status_t
@ -917,19 +918,19 @@ static ares_status_t
cname = ares__append_addrinfo_cname(&cnames); cname = ares__append_addrinfo_cname(&cnames);
if (cname == NULL) { if (cname == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
cname->alias = ares_strdup(host); cname->alias = ares_strdup(host);
if (cname->alias == NULL) { if (cname->alias == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
cname->name = ares_strdup(primaryhost); cname->name = ares_strdup(primaryhost);
if (cname->name == NULL) { if (cname->name == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
node = ares__llist_node_next(node); node = ares__llist_node_next(node);
@ -940,13 +941,13 @@ static ares_status_t
cname = ares__append_addrinfo_cname(&cnames); cname = ares__append_addrinfo_cname(&cnames);
if (cname == NULL) { if (cname == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
cname->name = ares_strdup(primaryhost); cname->name = ares_strdup(primaryhost);
if (cname->name == NULL) { if (cname->name == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }
status = ARES_SUCCESS; status = ARES_SUCCESS;
@ -954,7 +955,7 @@ static ares_status_t
done: done:
if (status != ARES_SUCCESS) { if (status != ARES_SUCCESS) {
ares__freeaddrinfo_cnames(cnames); /* LCOV_EXCL_LINE: DefensiveCoding */ ares__freeaddrinfo_cnames(cnames); /* LCOV_EXCL_LINE: DefensiveCoding */
return status; /* LCOV_EXCL_LINE: DefensiveCoding */ return status; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
*cnames_out = cnames; *cnames_out = cnames;
@ -977,14 +978,14 @@ ares_status_t ares__hosts_entry_to_addrinfo(const ares_hosts_entry_t *entry,
case AF_INET6: case AF_INET6:
case AF_UNSPEC: case AF_UNSPEC:
break; break;
default: /* LCOV_EXCL_LINE: DefensiveCoding */ default: /* LCOV_EXCL_LINE: DefensiveCoding */
return ARES_EBADFAMILY; /* LCOV_EXCL_LINE: DefensiveCoding */ return ARES_EBADFAMILY; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
ai->name = ares_strdup(name); ai->name = ares_strdup(name);
if (ai->name == NULL) { if (ai->name == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
for (node = ares__llist_node_first(entry->ips); node != NULL; for (node = ares__llist_node_first(entry->ips); node != NULL;

@ -207,7 +207,7 @@ static ares_bool_t ares__htable_expand(ares__htable_t *htable)
* middle, we wouldn't be able to recover. */ * middle, we wouldn't be able to recover. */
buckets = ares_malloc_zero(sizeof(*buckets) * htable->size); buckets = ares_malloc_zero(sizeof(*buckets) * htable->size);
if (buckets == NULL) { if (buckets == NULL) {
goto done; /* LCOV_EXCL_LINE */ goto done; /* LCOV_EXCL_LINE */
} }
/* The maximum number of new llists we'll need is the number of collisions /* The maximum number of new llists we'll need is the number of collisions
@ -270,7 +270,7 @@ static ares_bool_t ares__htable_expand(ares__htable_t *htable)
if (buckets[idx] == NULL) { if (buckets[idx] == NULL) {
/* Silence static analysis, this isn't possible but it doesn't know */ /* Silence static analysis, this isn't possible but it doesn't know */
if (prealloc_llist == NULL || prealloc_llist_len == 0) { if (prealloc_llist == NULL || prealloc_llist_len == 0) {
goto done; /* LCOV_EXCL_LINE */ goto done; /* LCOV_EXCL_LINE */
} }
buckets[idx] = prealloc_llist[prealloc_llist_len - 1]; buckets[idx] = prealloc_llist[prealloc_llist_len - 1];
prealloc_llist_len--; prealloc_llist_len--;
@ -304,7 +304,7 @@ done:
/* On failure, we need to restore the htable size */ /* On failure, we need to restore the htable size */
if (rv != ARES_TRUE) { if (rv != ARES_TRUE) {
htable->size = old_size; /* LCOV_EXCL_LINE */ htable->size = old_size; /* LCOV_EXCL_LINE */
} }
return rv; return rv;
@ -336,7 +336,7 @@ ares_bool_t ares__htable_insert(ares__htable_t *htable, void *bucket)
if (htable->num_keys + 1 > if (htable->num_keys + 1 >
(htable->size * ARES__HTABLE_EXPAND_PERCENT) / 100) { (htable->size * ARES__HTABLE_EXPAND_PERCENT) / 100) {
if (!ares__htable_expand(htable)) { if (!ares__htable_expand(htable)) {
return ARES_FALSE; /* LCOV_EXCL_LINE */ return ARES_FALSE; /* LCOV_EXCL_LINE */
} }
/* If we expanded, need to calculate a new index */ /* If we expanded, need to calculate a new index */
idx = HASH_IDX(htable, key); idx = HASH_IDX(htable, key);

@ -134,7 +134,7 @@ ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable,
out = ares_malloc_zero(sizeof(*out) * cnt); out = ares_malloc_zero(sizeof(*out) * cnt);
if (out == NULL) { if (out == NULL) {
ares_free(buckets); /* LCOV_EXCL_LINE: OutOfMemory */ ares_free(buckets); /* LCOV_EXCL_LINE: OutOfMemory */
return NULL; /* LCOV_EXCL_LINE: OutOfMemory */ return NULL; /* LCOV_EXCL_LINE: OutOfMemory */
} }
for (i = 0; i < cnt; i++) { for (i = 0; i < cnt; i++) {

@ -114,7 +114,7 @@ fail:
ares_free(htable); ares_free(htable);
} }
return NULL; return NULL;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
ares_bool_t ares__htable_vpvp_insert(ares__htable_vpvp_t *htable, void *key, ares_bool_t ares__htable_vpvp_insert(ares__htable_vpvp_t *htable, void *key,

@ -92,7 +92,7 @@ static ares__iface_ips_t *ares__iface_ips_alloc(ares__iface_ip_flags_t flags)
ips->ips = ares_malloc_zero(ips->alloc_size * sizeof(*ips->ips)); ips->ips = ares_malloc_zero(ips->alloc_size * sizeof(*ips->ips));
if (ips->ips == NULL) { if (ips->ips == NULL) {
ares_free(ips); /* LCOV_EXCL_LINE: OutOfMemory */ ares_free(ips); /* LCOV_EXCL_LINE: OutOfMemory */
return NULL; /* LCOV_EXCL_LINE: OutOfMemory */ return NULL; /* LCOV_EXCL_LINE: OutOfMemory */
} }
ips->enum_flags = flags; ips->enum_flags = flags;
return ips; return ips;
@ -218,8 +218,8 @@ static ares_status_t
/* Add */ /* Add */
idx = ips->cnt++; idx = ips->cnt++;
ips->ips[idx].flags = flags; ips->ips[idx].flags = flags;
ips->ips[idx].netmask = netmask; ips->ips[idx].netmask = netmask;
if (flags & ARES_IFACE_IP_LINKLOCAL) { if (flags & ARES_IFACE_IP_LINKLOCAL) {
ips->ips[idx].ll_scope = ll_scope; ips->ips[idx].ll_scope = ll_scope;
} }
@ -529,8 +529,9 @@ static ares_status_t ares__iface_ips_enumerate(ares__iface_ips_t *ips,
unsigned int ares__if_nametoindex(const char *name) unsigned int ares__if_nametoindex(const char *name)
{ {
#ifdef HAVE_IF_NAMETOINDEX #ifdef HAVE_IF_NAMETOINDEX
if (name == NULL) if (name == NULL) {
return 0; return 0;
}
return if_nametoindex(name); return if_nametoindex(name);
#else #else
ares_status_t status; ares_status_t status;
@ -538,8 +539,9 @@ unsigned int ares__if_nametoindex(const char *name)
size_t i; size_t i;
unsigned int index = 0; unsigned int index = 0;
if (name == NULL) if (name == NULL) {
return 0; return 0;
}
status = status =
ares__iface_ips(&ips, ARES_IFACE_IP_V6 | ARES_IFACE_IP_LINKLOCAL, name); ares__iface_ips(&ips, ARES_IFACE_IP_V6 | ARES_IFACE_IP_LINKLOCAL, name);

@ -108,18 +108,18 @@ ares_status_t ares__parse_into_addrinfo(const ares_dns_record_t *dnsrec,
cname = ares__append_addrinfo_cname(&cnames); cname = ares__append_addrinfo_cname(&cnames);
if (cname == NULL) { if (cname == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
cname->ttl = (int)ares_dns_rr_get_ttl(rr); cname->ttl = (int)ares_dns_rr_get_ttl(rr);
cname->alias = ares_strdup(ares_dns_rr_get_name(rr)); cname->alias = ares_strdup(ares_dns_rr_get_name(rr));
if (cname->alias == NULL) { if (cname->alias == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
cname->name = ares_strdup(hostname); cname->name = ares_strdup(hostname);
if (cname->name == NULL) { if (cname->name == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} else if (rtype == ARES_REC_TYPE_A) { } else if (rtype == ARES_REC_TYPE_A) {
got_a = ARES_TRUE; got_a = ARES_TRUE;
@ -154,7 +154,7 @@ ares_status_t ares__parse_into_addrinfo(const ares_dns_record_t *dnsrec,
ai->name = ares_strdup(hostname); ai->name = ares_strdup(hostname);
if (ai->name == NULL) { if (ai->name == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }

@ -254,7 +254,7 @@ fail:
ares_free(node); ares_free(node);
} }
return NULL; return NULL;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
static void ares__slist_node_pop(ares__slist_node_t *node) static void ares__slist_node_pop(ares__slist_node_t *node)

@ -305,7 +305,7 @@ ares_status_t ares__open_connection(ares_channel_t *channel,
setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (void *)&opt, sizeof(opt)) == setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (void *)&opt, sizeof(opt)) ==
-1) { -1) {
ares__close_socket(channel, s); /* LCOV_EXCL_LINE: UntestablePath */ ares__close_socket(channel, s); /* LCOV_EXCL_LINE: UntestablePath */
return ARES_ECONNREFUSED; /* LCOV_EXCL_LINE: UntestablePath */ return ARES_ECONNREFUSED; /* LCOV_EXCL_LINE: UntestablePath */
} }
} }
#endif #endif
@ -339,7 +339,7 @@ ares_status_t ares__open_connection(ares_channel_t *channel,
conn = ares_malloc(sizeof(*conn)); conn = ares_malloc(sizeof(*conn));
if (conn == NULL) { if (conn == NULL) {
ares__close_socket(channel, s); /* LCOV_EXCL_LINE: OutOfMemory */ ares__close_socket(channel, s); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
} }
memset(conn, 0, sizeof(*conn)); memset(conn, 0, sizeof(*conn));
conn->fd = s; conn->fd = s;

@ -227,7 +227,7 @@ ares__thread_mutex_t *ares__thread_mutex_create(void)
if (pthread_mutexattr_init(&attr) != 0) { if (pthread_mutexattr_init(&attr) != 0) {
ares_free(mut); /* LCOV_EXCL_LINE: UntestablePath */ ares_free(mut); /* LCOV_EXCL_LINE: UntestablePath */
return NULL; /* LCOV_EXCL_LINE: UntestablePath */ return NULL; /* LCOV_EXCL_LINE: UntestablePath */
} }
if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) != 0) { if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) != 0) {
@ -246,7 +246,7 @@ fail:
pthread_mutexattr_destroy(&attr); pthread_mutexattr_destroy(&attr);
ares_free(mut); ares_free(mut);
return NULL; return NULL;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
void ares__thread_mutex_destroy(ares__thread_mutex_t *mut) void ares__thread_mutex_destroy(ares__thread_mutex_t *mut)
@ -384,7 +384,7 @@ ares_status_t ares__thread_create(ares__thread_t **thread,
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
} }
if (pthread_create(&thr->thread, NULL, func, arg) != 0) { if (pthread_create(&thr->thread, NULL, func, arg) != 0) {
ares_free(thr); /* LCOV_EXCL_LINE: UntestablePath */ ares_free(thr); /* LCOV_EXCL_LINE: UntestablePath */
return ARES_ESERVFAIL; /* LCOV_EXCL_LINE: UntestablePath */ return ARES_ESERVFAIL; /* LCOV_EXCL_LINE: UntestablePath */
} }

@ -58,7 +58,7 @@ void ares_cancel(ares_channel_t *channel)
* can't report to caller */ * can't report to caller */
if (channel->all_queries == NULL) { if (channel->all_queries == NULL) {
channel->all_queries = list_copy; /* LCOV_EXCL_LINE: OutOfMemory */ channel->all_queries = list_copy; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
node = ares__llist_node_first(list_copy); node = ares__llist_node_first(list_copy);

@ -548,18 +548,14 @@ static const ares_dns_rr_key_t rr_hinfo_keys[] = { ARES_RR_HINFO_CPU,
ARES_RR_HINFO_OS }; ARES_RR_HINFO_OS };
static const ares_dns_rr_key_t rr_mx_keys[] = { ARES_RR_MX_PREFERENCE, static const ares_dns_rr_key_t rr_mx_keys[] = { ARES_RR_MX_PREFERENCE,
ARES_RR_MX_EXCHANGE }; ARES_RR_MX_EXCHANGE };
static const ares_dns_rr_key_t rr_sig_keys[] = { ARES_RR_SIG_TYPE_COVERED, static const ares_dns_rr_key_t rr_sig_keys[] = {
ARES_RR_SIG_ALGORITHM, ARES_RR_SIG_TYPE_COVERED, ARES_RR_SIG_ALGORITHM, ARES_RR_SIG_LABELS,
ARES_RR_SIG_LABELS, ARES_RR_SIG_ORIGINAL_TTL, ARES_RR_SIG_EXPIRATION, ARES_RR_SIG_INCEPTION,
ARES_RR_SIG_ORIGINAL_TTL, ARES_RR_SIG_KEY_TAG, ARES_RR_SIG_SIGNERS_NAME, ARES_RR_SIG_SIGNATURE
ARES_RR_SIG_EXPIRATION, };
ARES_RR_SIG_INCEPTION, static const ares_dns_rr_key_t rr_txt_keys[] = { ARES_RR_TXT_DATA };
ARES_RR_SIG_KEY_TAG, static const ares_dns_rr_key_t rr_aaaa_keys[] = { ARES_RR_AAAA_ADDR };
ARES_RR_SIG_SIGNERS_NAME, static const ares_dns_rr_key_t rr_srv_keys[] = {
ARES_RR_SIG_SIGNATURE };
static const ares_dns_rr_key_t rr_txt_keys[] = { ARES_RR_TXT_DATA };
static const ares_dns_rr_key_t rr_aaaa_keys[] = { ARES_RR_AAAA_ADDR };
static const ares_dns_rr_key_t rr_srv_keys[] = {
ARES_RR_SRV_PRIORITY, ARES_RR_SRV_WEIGHT, ARES_RR_SRV_PORT, ARES_RR_SRV_TARGET ARES_RR_SRV_PRIORITY, ARES_RR_SRV_WEIGHT, ARES_RR_SRV_PORT, ARES_RR_SRV_TARGET
}; };
static const ares_dns_rr_key_t rr_naptr_keys[] = { static const ares_dns_rr_key_t rr_naptr_keys[] = {

@ -59,7 +59,7 @@ static ares_status_t ares__nameoffset_create(ares__llist_t **list,
} }
if (*list == NULL) { if (*list == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
off = ares_malloc_zero(sizeof(*off)); off = ares_malloc_zero(sizeof(*off));
@ -73,7 +73,7 @@ static ares_status_t ares__nameoffset_create(ares__llist_t **list,
if (ares__llist_insert_last(*list, off) == NULL) { if (ares__llist_insert_last(*list, off) == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
return ARES_SUCCESS; return ARES_SUCCESS;
@ -82,7 +82,7 @@ static ares_status_t ares__nameoffset_create(ares__llist_t **list,
fail: fail:
ares__nameoffset_free(off); ares__nameoffset_free(off);
return status; return status;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
static const ares_nameoffset_t *ares__nameoffset_find(ares__llist_t *list, static const ares_nameoffset_t *ares__nameoffset_find(ares__llist_t *list,
@ -269,7 +269,7 @@ static ares_status_t ares_split_dns_name(ares_dns_labels_t *labels,
namebuf = ares__buf_create(); namebuf = ares__buf_create();
if (namebuf == NULL) { if (namebuf == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
if (*name != '\0') { if (*name != '\0') {
@ -284,7 +284,7 @@ static ares_status_t ares_split_dns_name(ares_dns_labels_t *labels,
label = ares_dns_labels_add(labels); label = ares_dns_labels_add(labels);
if (label == NULL) { if (label == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
while (ares__buf_fetch_bytes(namebuf, &c, 1) == ARES_SUCCESS) { while (ares__buf_fetch_bytes(namebuf, &c, 1) == ARES_SUCCESS) {
@ -293,7 +293,7 @@ static ares_status_t ares_split_dns_name(ares_dns_labels_t *labels,
label = ares_dns_labels_add(labels); label = ares_dns_labels_add(labels);
if (label == NULL) { if (label == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
continue; continue;
} }
@ -663,7 +663,7 @@ ares_status_t ares__dns_name_parse(ares__buf_t *buf, char **name,
*name = ares__buf_finish_str(namebuf, NULL); *name = ares__buf_finish_str(namebuf, NULL);
if (*name == NULL) { if (*name == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }

@ -293,7 +293,7 @@ ares_status_t ares_dns_record_query_set_name(ares_dns_record_t *dnsrec,
dnsrec->qd[idx].name = ares_strdup(name); dnsrec->qd[idx].name = ares_strdup(name);
if (dnsrec->qd[idx].name == NULL) { if (dnsrec->qd[idx].name == NULL) {
dnsrec->qd[idx].name = orig_name; /* LCOV_EXCL_LINE: OutOfMemory */ dnsrec->qd[idx].name = orig_name; /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
} }
ares_free(orig_name); ares_free(orig_name);

@ -149,7 +149,7 @@ ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
c->inotify_fd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC); c->inotify_fd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC);
if (c->inotify_fd == -1) { if (c->inotify_fd == -1) {
status = ARES_ESERVFAIL; /* LCOV_EXCL_LINE: UntestablePath */ status = ARES_ESERVFAIL; /* LCOV_EXCL_LINE: UntestablePath */
goto done; /* LCOV_EXCL_LINE: UntestablePath */ goto done; /* LCOV_EXCL_LINE: UntestablePath */
} }
/* We need to monitor /etc/resolv.conf, /etc/nsswitch.conf */ /* We need to monitor /etc/resolv.conf, /etc/nsswitch.conf */
@ -157,7 +157,7 @@ ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
IN_CREATE | IN_MODIFY | IN_MOVED_TO | IN_ONLYDIR) == IN_CREATE | IN_MODIFY | IN_MOVED_TO | IN_ONLYDIR) ==
-1) { -1) {
status = ARES_ESERVFAIL; /* LCOV_EXCL_LINE: UntestablePath */ status = ARES_ESERVFAIL; /* LCOV_EXCL_LINE: UntestablePath */
goto done; /* LCOV_EXCL_LINE: UntestablePath */ goto done; /* LCOV_EXCL_LINE: UntestablePath */
} }
status = status =
@ -250,32 +250,29 @@ static void ares_event_configchg_ip_cb(PVOID CallerContext,
} }
# endif # endif
static ares_bool_t ares_event_configchg_regnotify(ares_event_configchg_t *configchg) static ares_bool_t
ares_event_configchg_regnotify(ares_event_configchg_t *configchg)
{ {
# if defined(__WATCOMC__) && !defined(REG_NOTIFY_THREAD_AGNOSTIC) # if defined(__WATCOMC__) && !defined(REG_NOTIFY_THREAD_AGNOSTIC)
# define REG_NOTIFY_THREAD_AGNOSTIC 0x10000000L # define REG_NOTIFY_THREAD_AGNOSTIC 0x10000000L
# endif # endif
DWORD flags = DWORD flags = REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_LAST_SET |
REG_NOTIFY_CHANGE_NAME|REG_NOTIFY_CHANGE_LAST_SET|REG_NOTIFY_THREAD_AGNOSTIC; REG_NOTIFY_THREAD_AGNOSTIC;
if (RegNotifyChangeKeyValue(configchg->regip4, TRUE, if (RegNotifyChangeKeyValue(configchg->regip4, TRUE, flags,
flags, configchg->regip4_event, TRUE) != ERROR_SUCCESS) {
configchg->regip4_event,
TRUE) != ERROR_SUCCESS) {
return ARES_FALSE; return ARES_FALSE;
} }
if (RegNotifyChangeKeyValue(configchg->regip6, TRUE, if (RegNotifyChangeKeyValue(configchg->regip6, TRUE, flags,
flags, configchg->regip6_event, TRUE) != ERROR_SUCCESS) {
configchg->regip6_event,
TRUE) != ERROR_SUCCESS) {
return ARES_FALSE; return ARES_FALSE;
} }
return ARES_TRUE; return ARES_TRUE;
} }
static VOID CALLBACK ares_event_configchg_reg_cb(PVOID lpParameter, static VOID CALLBACK ares_event_configchg_reg_cb(PVOID lpParameter,
BOOLEAN TimerOrWaitFired) BOOLEAN TimerOrWaitFired)
{ {
ares_event_configchg_t *configchg = lpParameter; ares_event_configchg_t *configchg = lpParameter;
@ -301,7 +298,7 @@ ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
c->e = e; c->e = e;
#ifndef __WATCOMC__ # ifndef __WATCOMC__
/* NOTE: If a user goes into the control panel and changes the network /* NOTE: If a user goes into the control panel and changes the network
* adapter DNS addresses manually, this will NOT trigger a notification. * adapter DNS addresses manually, this will NOT trigger a notification.
* We've also tried listening on NotifyUnicastIpAddressChange(), but * We've also tried listening on NotifyUnicastIpAddressChange(), but
@ -313,19 +310,21 @@ ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
status = ARES_ESERVFAIL; status = ARES_ESERVFAIL;
goto done; goto done;
} }
#endif # endif
/* Monitor HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\Interfaces /* Monitor HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\Interfaces
* and HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces * and HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
* for changes via RegNotifyChangeKeyValue() */ * for changes via RegNotifyChangeKeyValue() */
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, if (RegOpenKeyEx(
"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces", HKEY_LOCAL_MACHINE,
0, KEY_NOTIFY, &c->regip4) != ERROR_SUCCESS) { "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces", 0,
KEY_NOTIFY, &c->regip4) != ERROR_SUCCESS) {
status = ARES_ESERVFAIL; status = ARES_ESERVFAIL;
goto done; goto done;
} }
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, if (RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters\\Interfaces", "SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters\\Interfaces",
0, KEY_NOTIFY, &c->regip6) != ERROR_SUCCESS) { 0, KEY_NOTIFY, &c->regip6) != ERROR_SUCCESS) {
status = ARES_ESERVFAIL; status = ARES_ESERVFAIL;
@ -345,13 +344,15 @@ ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
} }
if (!RegisterWaitForSingleObject(&c->regip4_wait, c->regip4_event, if (!RegisterWaitForSingleObject(&c->regip4_wait, c->regip4_event,
ares_event_configchg_reg_cb, c, INFINITE, WT_EXECUTEDEFAULT)) { ares_event_configchg_reg_cb, c, INFINITE,
WT_EXECUTEDEFAULT)) {
status = ARES_ESERVFAIL; status = ARES_ESERVFAIL;
goto done; goto done;
} }
if (!RegisterWaitForSingleObject(&c->regip6_wait, c->regip6_event, if (!RegisterWaitForSingleObject(&c->regip6_wait, c->regip6_event,
ares_event_configchg_reg_cb, c, INFINITE, WT_EXECUTEDEFAULT)) { ares_event_configchg_reg_cb, c, INFINITE,
WT_EXECUTEDEFAULT)) {
status = ARES_ESERVFAIL; status = ARES_ESERVFAIL;
goto done; goto done;
} }
@ -446,15 +447,16 @@ static void ares_event_configchg_cb(ares_event_thread_t *e, ares_socket_t fd,
ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg, ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
ares_event_thread_t *e) ares_event_thread_t *e)
{ {
ares_status_t status = ARES_SUCCESS; ares_status_t status = ARES_SUCCESS;
void *handle = NULL; void *handle = NULL;
const char *(*pdns_configuration_notify_key)(void) = NULL; const char *(*pdns_configuration_notify_key)(void) = NULL;
const char *notify_key = NULL; const char *notify_key = NULL;
int flags; int flags;
size_t i; size_t i;
const char *searchlibs[] = { const char *searchlibs[] = {
"/usr/lib/libSystem.dylib", "/usr/lib/libSystem.dylib",
"/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration", "/System/Library/Frameworks/SystemConfiguration.framework/"
"SystemConfiguration",
NULL NULL
}; };
@ -464,14 +466,15 @@ ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
} }
/* Load symbol as it isn't normally public */ /* Load symbol as it isn't normally public */
for (i=0; searchlibs[i] != NULL; i++) { for (i = 0; searchlibs[i] != NULL; i++) {
handle = dlopen(searchlibs[i], RTLD_LAZY); handle = dlopen(searchlibs[i], RTLD_LAZY);
if (handle == NULL) { if (handle == NULL) {
/* Fail, loop! */ /* Fail, loop! */
continue; continue;
} }
pdns_configuration_notify_key = dlsym(handle, "dns_configuration_notify_key"); pdns_configuration_notify_key =
dlsym(handle, "dns_configuration_notify_key");
if (pdns_configuration_notify_key != NULL) { if (pdns_configuration_notify_key != NULL) {
break; break;
} }

@ -76,13 +76,13 @@ static ares_bool_t ares_evsys_epoll_init(ares_event_thread_t *e)
ep->epoll_fd = epoll_create1(EPOLL_CLOEXEC); ep->epoll_fd = epoll_create1(EPOLL_CLOEXEC);
if (ep->epoll_fd == -1) { if (ep->epoll_fd == -1) {
ares_evsys_epoll_destroy(e); /* LCOV_EXCL_LINE: UntestablePath */ ares_evsys_epoll_destroy(e); /* LCOV_EXCL_LINE: UntestablePath */
return ARES_FALSE; /* LCOV_EXCL_LINE: UntestablePath */ return ARES_FALSE; /* LCOV_EXCL_LINE: UntestablePath */
} }
e->ev_signal = ares_pipeevent_create(e); e->ev_signal = ares_pipeevent_create(e);
if (e->ev_signal == NULL) { if (e->ev_signal == NULL) {
ares_evsys_epoll_destroy(e); /* LCOV_EXCL_LINE: UntestablePath */ ares_evsys_epoll_destroy(e); /* LCOV_EXCL_LINE: UntestablePath */
return ARES_FALSE; /* LCOV_EXCL_LINE: UntestablePath */ return ARES_FALSE; /* LCOV_EXCL_LINE: UntestablePath */
} }
return ARES_TRUE; return ARES_TRUE;

@ -128,7 +128,7 @@ ares_status_t ares_event_update(ares_event_t **event, ares_event_thread_t *e,
} }
if (ares__llist_insert_last(e->ev_updates, ev) == NULL) { if (ares__llist_insert_last(e->ev_updates, ev) == NULL) {
ares_free(ev); /* LCOV_EXCL_LINE: OutOfMemory */ ares_free(ev); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }
@ -394,7 +394,7 @@ static const ares_event_sys_t *ares_event_fetch_sys(ares_evsys_t evsys)
break; break;
} }
/* default */ /* default */
#if defined(USE_WINSOCK) #if defined(USE_WINSOCK)
return &ares_evsys_win32; return &ares_evsys_win32;
#elif defined(HAVE_KQUEUE) #elif defined(HAVE_KQUEUE)
@ -422,25 +422,25 @@ ares_status_t ares_event_thread_init(ares_channel_t *channel)
e->mutex = ares__thread_mutex_create(); e->mutex = ares__thread_mutex_create();
if (e->mutex == NULL) { if (e->mutex == NULL) {
ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: OutOfMemory */ ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
} }
e->ev_updates = ares__llist_create(NULL); e->ev_updates = ares__llist_create(NULL);
if (e->ev_updates == NULL) { if (e->ev_updates == NULL) {
ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: OutOfMemory */ ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
} }
e->ev_sock_handles = ares__htable_asvp_create(ares_event_destroy_cb); e->ev_sock_handles = ares__htable_asvp_create(ares_event_destroy_cb);
if (e->ev_sock_handles == NULL) { if (e->ev_sock_handles == NULL) {
ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: OutOfMemory */ ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
} }
e->ev_cust_handles = ares__htable_vpvp_create(NULL, ares_event_destroy_cb); e->ev_cust_handles = ares__htable_vpvp_create(NULL, ares_event_destroy_cb);
if (e->ev_cust_handles == NULL) { if (e->ev_cust_handles == NULL) {
ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: OutOfMemory */ ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
} }
e->channel = channel; e->channel = channel;
@ -448,7 +448,7 @@ ares_status_t ares_event_thread_init(ares_channel_t *channel)
e->ev_sys = ares_event_fetch_sys(channel->evsys); e->ev_sys = ares_event_fetch_sys(channel->evsys);
if (e->ev_sys == NULL) { if (e->ev_sys == NULL) {
ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: UntestablePath */ ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: UntestablePath */
return ARES_ENOTIMP; /* LCOV_EXCL_LINE: UntestablePath */ return ARES_ENOTIMP; /* LCOV_EXCL_LINE: UntestablePath */
} }
channel->sock_state_cb = ares_event_thread_sockstate_cb; channel->sock_state_cb = ares_event_thread_sockstate_cb;

@ -69,7 +69,7 @@ static ares_pipeevent_t *ares_pipeevent_init(void)
# ifdef HAVE_PIPE2 # ifdef HAVE_PIPE2
if (pipe2(p->filedes, O_NONBLOCK | O_CLOEXEC) != 0) { if (pipe2(p->filedes, O_NONBLOCK | O_CLOEXEC) != 0) {
ares_pipeevent_destroy(p); /* LCOV_EXCL_LINE: UntestablePath */ ares_pipeevent_destroy(p); /* LCOV_EXCL_LINE: UntestablePath */
return NULL; /* LCOV_EXCL_LINE: UntestablePath */ return NULL; /* LCOV_EXCL_LINE: UntestablePath */
} }
# else # else
if (pipe(p->filedes) != 0) { if (pipe(p->filedes) != 0) {
@ -157,7 +157,7 @@ ares_event_t *ares_pipeevent_create(ares_event_thread_t *e)
ares_pipeevent_signal); ares_pipeevent_signal);
if (status != ARES_SUCCESS) { if (status != ARES_SUCCESS) {
ares_pipeevent_destroy(p); /* LCOV_EXCL_LINE: DefensiveCoding */ ares_pipeevent_destroy(p); /* LCOV_EXCL_LINE: DefensiveCoding */
return NULL; /* LCOV_EXCL_LINE: DefensiveCoding */ return NULL; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
return event; return event;

@ -275,7 +275,7 @@ static ares_bool_t fake_addrinfo(const char *name, unsigned short port,
status = ares_append_ai_node(AF_INET, port, 0, &addr4, &ai->nodes); status = ares_append_ai_node(AF_INET, port, 0, &addr4, &ai->nodes);
if (status != ARES_SUCCESS) { if (status != ARES_SUCCESS) {
callback(arg, (int)status, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */ callback(arg, (int)status, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_TRUE; /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_TRUE; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }
} }
@ -289,7 +289,7 @@ static ares_bool_t fake_addrinfo(const char *name, unsigned short port,
status = ares_append_ai_node(AF_INET6, port, 0, &addr6, &ai->nodes); status = ares_append_ai_node(AF_INET6, port, 0, &addr6, &ai->nodes);
if (status != ARES_SUCCESS) { if (status != ARES_SUCCESS) {
callback(arg, (int)status, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */ callback(arg, (int)status, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_TRUE; /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_TRUE; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }
} }

@ -132,8 +132,9 @@ static void next_lookup(struct addr_query *aquery)
case 'b': case 'b':
name = ares_dns_addr_to_ptr(&aquery->addr); name = ares_dns_addr_to_ptr(&aquery->addr);
if (name == NULL) { if (name == NULL) {
end_aquery(aquery, ARES_ENOMEM, NULL); /* LCOV_EXCL_LINE: OutOfMemory */ end_aquery(aquery, ARES_ENOMEM,
return; /* LCOV_EXCL_LINE: OutOfMemory */ NULL); /* LCOV_EXCL_LINE: OutOfMemory */
return; /* LCOV_EXCL_LINE: OutOfMemory */
} }
aquery->remaining_lookups = p + 1; aquery->remaining_lookups = p + 1;
ares_query_dnsrec(aquery->channel, name, ARES_CLASS_IN, ares_query_dnsrec(aquery->channel, name, ARES_CLASS_IN,

@ -249,7 +249,7 @@ static ares_status_t ares__hostent_localhost(const char *name, int family,
ai = ares_malloc_zero(sizeof(*ai)); ai = ares_malloc_zero(sizeof(*ai));
if (ai == NULL) { if (ai == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
status = ares__addrinfo_localhost(name, 0, &hints, ai); status = ares__addrinfo_localhost(name, 0, &hints, ai);

@ -81,8 +81,8 @@ static void nameinfo_callback(void *arg, int status, int timeouts,
static char *lookup_service(unsigned short port, unsigned int flags, char *buf, static char *lookup_service(unsigned short port, unsigned int flags, char *buf,
size_t buflen); size_t buflen);
#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID #ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID
static void append_scopeid(const struct sockaddr_in6 *addr6, static void append_scopeid(const struct sockaddr_in6 *addr6, unsigned int flags,
unsigned int flags, char *buf, size_t buflen); char *buf, size_t buflen);
#endif #endif
static char *ares_striendstr(const char *s1, const char *s2); static char *ares_striendstr(const char *s1, const char *s2);

@ -197,7 +197,7 @@ static ares_status_t init_by_defaults(ares_channel_t *channel)
hostname = ares_malloc(len); hostname = ares_malloc(len);
if (!hostname) { if (!hostname) {
rc = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ rc = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto error; /* LCOV_EXCL_LINE: OutOfMemory */ goto error; /* LCOV_EXCL_LINE: OutOfMemory */
} }
do { do {
@ -210,7 +210,7 @@ static ares_status_t init_by_defaults(ares_channel_t *channel)
p = ares_realloc(hostname, len); p = ares_realloc(hostname, len);
if (!p) { if (!p) {
rc = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ rc = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto error; /* LCOV_EXCL_LINE: OutOfMemory */ goto error; /* LCOV_EXCL_LINE: OutOfMemory */
} }
hostname = p; hostname = p;
continue; continue;
@ -229,12 +229,12 @@ static ares_status_t init_by_defaults(ares_channel_t *channel)
channel->domains = ares_malloc(sizeof(char *)); channel->domains = ares_malloc(sizeof(char *));
if (!channel->domains) { if (!channel->domains) {
rc = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ rc = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto error; /* LCOV_EXCL_LINE: OutOfMemory */ goto error; /* LCOV_EXCL_LINE: OutOfMemory */
} }
channel->domains[0] = ares_strdup(dot + 1); channel->domains[0] = ares_strdup(dot + 1);
if (!channel->domains[0]) { if (!channel->domains[0]) {
rc = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ rc = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto error; /* LCOV_EXCL_LINE: OutOfMemory */ goto error; /* LCOV_EXCL_LINE: OutOfMemory */
} }
channel->ndomains = 1; channel->ndomains = 1;
} }

@ -60,14 +60,14 @@ static ares_int64_t ares__round_up_pow2_u64(ares_int64_t n)
ares_bool_t ares__is_64bit(void) ares_bool_t ares__is_64bit(void)
{ {
#ifdef _MSC_VER #ifdef _MSC_VER
# pragma warning( push ) # pragma warning(push)
# pragma warning( disable : 4127 ) # pragma warning(disable : 4127)
#endif #endif
return (sizeof(size_t) == 4)?ARES_FALSE:ARES_TRUE; return (sizeof(size_t) == 4) ? ARES_FALSE : ARES_TRUE;
#ifdef _MSC_VER #ifdef _MSC_VER
# pragma warning( pop ) # pragma warning(pop)
#endif #endif
} }

@ -101,20 +101,20 @@
/*! Minimum timeout value. Chosen due to it being approximately RTT half-way /*! Minimum timeout value. Chosen due to it being approximately RTT half-way
* around the world */ * around the world */
#define MIN_TIMEOUT_MS 250 #define MIN_TIMEOUT_MS 250
/*! Multiplier to apply to average latency to come up with an initial timeout */ /*! Multiplier to apply to average latency to come up with an initial timeout */
#define AVG_TIMEOUT_MULTIPLIER 5 #define AVG_TIMEOUT_MULTIPLIER 5
/*! Upper timeout bounds, only used if channel->maxtimeout not set */ /*! Upper timeout bounds, only used if channel->maxtimeout not set */
#define MAX_TIMEOUT_MS 5000 #define MAX_TIMEOUT_MS 5000
/*! Minimum queries required to form an average */ /*! Minimum queries required to form an average */
#define MIN_COUNT_FOR_AVERAGE 3 #define MIN_COUNT_FOR_AVERAGE 3
static time_t ares_metric_timestamp(ares_server_bucket_t bucket, static time_t ares_metric_timestamp(ares_server_bucket_t bucket,
const ares_timeval_t *now, const ares_timeval_t *now,
ares_bool_t is_previous) ares_bool_t is_previous)
{ {
time_t divisor = 1; /* Silence bogus MSVC warning by setting default value */ time_t divisor = 1; /* Silence bogus MSVC warning by setting default value */
@ -132,7 +132,7 @@ static time_t ares_metric_timestamp(ares_server_bucket_t bucket,
divisor = 24 * 60 * 60; divisor = 24 * 60 * 60;
break; break;
case ARES_METRIC_INCEPTION: case ARES_METRIC_INCEPTION:
return is_previous?0:1; return is_previous ? 0 : 1;
case ARES_METRIC_COUNT: case ARES_METRIC_COUNT:
return 0; /* Invalid! */ return 0; /* Invalid! */
} }
@ -150,7 +150,7 @@ static time_t ares_metric_timestamp(ares_server_bucket_t bucket,
void ares_metrics_record(const struct query *query, struct server_state *server, void ares_metrics_record(const struct query *query, struct server_state *server,
ares_status_t status, const ares_dns_record_t *dnsrec) ares_status_t status, const ares_dns_record_t *dnsrec)
{ {
ares_timeval_t now = ares__tvnow(); ares_timeval_t now = ares__tvnow();
ares_timeval_t tvdiff; ares_timeval_t tvdiff;
unsigned int query_ms; unsigned int query_ms;
ares_dns_rcode_t rcode; ares_dns_rcode_t rcode;
@ -176,8 +176,8 @@ void ares_metrics_record(const struct query *query, struct server_state *server,
} }
/* Place in each bucket */ /* Place in each bucket */
for (i=0; i<ARES_METRIC_COUNT; i++) { for (i = 0; i < ARES_METRIC_COUNT; i++) {
time_t ts = ares_metric_timestamp(i, &now, ARES_FALSE); time_t ts = ares_metric_timestamp(i, &now, ARES_FALSE);
/* Copy metrics to prev and clear */ /* Copy metrics to prev and clear */
if (ts != server->metrics[i].ts) { if (ts != server->metrics[i].ts) {
@ -208,12 +208,12 @@ void ares_metrics_record(const struct query *query, struct server_state *server,
size_t ares_metrics_server_timeout(const struct server_state *server, size_t ares_metrics_server_timeout(const struct server_state *server,
const ares_timeval_t *now) const ares_timeval_t *now)
{ {
const ares_channel_t *channel = server->channel; const ares_channel_t *channel = server->channel;
ares_server_bucket_t i; ares_server_bucket_t i;
size_t timeout_ms = 0; size_t timeout_ms = 0;
for (i=0; i<ARES_METRIC_COUNT; i++) { for (i = 0; i < ARES_METRIC_COUNT; i++) {
time_t ts = ares_metric_timestamp(i, now, ARES_FALSE); time_t ts = ares_metric_timestamp(i, now, ARES_FALSE);
/* This ts has been invalidated, see if we should use the previous /* This ts has been invalidated, see if we should use the previous
@ -227,10 +227,12 @@ size_t ares_metrics_server_timeout(const struct server_state *server,
continue; continue;
} }
/* Calculate average time for previous bucket */ /* Calculate average time for previous bucket */
timeout_ms = (size_t)(server->metrics[i].prev_total_ms / server->metrics[i].prev_total_count); timeout_ms = (size_t)(server->metrics[i].prev_total_ms /
server->metrics[i].prev_total_count);
} else { } else {
/* Calculate average time for current bucket*/ /* Calculate average time for current bucket*/
timeout_ms = (size_t)(server->metrics[i].total_ms / server->metrics[i].total_count); timeout_ms =
(size_t)(server->metrics[i].total_ms / server->metrics[i].total_count);
} }
/* Multiply average by constant to get timeout value */ /* Multiply average by constant to get timeout value */

@ -464,8 +464,8 @@ ares_status_t ares__init_by_options(ares_channel_t *channel,
/* qcache_max_ttl is unsigned unlike the others */ /* qcache_max_ttl is unsigned unlike the others */
channel->qcache_max_ttl = options->qcache_max_ttl; channel->qcache_max_ttl = options->qcache_max_ttl;
} else { } else {
optmask |= ARES_OPT_QUERY_CACHE; optmask |= ARES_OPT_QUERY_CACHE;
channel->qcache_max_ttl = 3600; channel->qcache_max_ttl = 3600;
} }
/* Initialize the ipv4 servers if provided */ /* Initialize the ipv4 servers if provided */

@ -67,7 +67,7 @@ int ares_parse_caa_reply(const unsigned char *abuf, int alen_int,
if (rr == NULL) { if (rr == NULL) {
/* Shouldn't be possible */ /* Shouldn't be possible */
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
/* XXX: Why do we allow Chaos class? */ /* XXX: Why do we allow Chaos class? */
@ -85,7 +85,7 @@ int ares_parse_caa_reply(const unsigned char *abuf, int alen_int,
caa_curr = ares_malloc_data(ARES_DATATYPE_CAA_REPLY); caa_curr = ares_malloc_data(ARES_DATATYPE_CAA_REPLY);
if (caa_curr == NULL) { if (caa_curr == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* Link in the record */ /* Link in the record */
@ -101,7 +101,7 @@ int ares_parse_caa_reply(const unsigned char *abuf, int alen_int,
(unsigned char *)ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_CAA_TAG)); (unsigned char *)ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_CAA_TAG));
if (caa_curr->property == NULL) { if (caa_curr->property == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
break; /* LCOV_EXCL_LINE: OutOfMemory */ break; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* RFC6844 says this can only be ascii, so not sure why we're recording a /* RFC6844 says this can only be ascii, so not sure why we're recording a
* length */ * length */
@ -110,14 +110,14 @@ int ares_parse_caa_reply(const unsigned char *abuf, int alen_int,
ptr = ares_dns_rr_get_bin(rr, ARES_RR_CAA_VALUE, &ptr_len); ptr = ares_dns_rr_get_bin(rr, ARES_RR_CAA_VALUE, &ptr_len);
if (ptr == NULL) { if (ptr == NULL) {
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
/* Wants NULL termination for some reason */ /* Wants NULL termination for some reason */
caa_curr->value = ares_malloc(ptr_len + 1); caa_curr->value = ares_malloc(ptr_len + 1);
if (caa_curr->value == NULL) { if (caa_curr->value == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
memcpy(caa_curr->value, ptr, ptr_len); memcpy(caa_curr->value, ptr, ptr_len);
caa_curr->value[ptr_len] = 0; caa_curr->value[ptr_len] = 0;

@ -65,7 +65,7 @@ int ares_parse_mx_reply(const unsigned char *abuf, int alen_int,
if (rr == NULL) { if (rr == NULL) {
/* Shouldn't be possible */ /* Shouldn't be possible */
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN || if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN ||
@ -77,7 +77,7 @@ int ares_parse_mx_reply(const unsigned char *abuf, int alen_int,
mx_curr = ares_malloc_data(ARES_DATATYPE_MX_REPLY); mx_curr = ares_malloc_data(ARES_DATATYPE_MX_REPLY);
if (mx_curr == NULL) { if (mx_curr == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* Link in the record */ /* Link in the record */
@ -93,7 +93,7 @@ int ares_parse_mx_reply(const unsigned char *abuf, int alen_int,
if (mx_curr->host == NULL) { if (mx_curr->host == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }

@ -64,7 +64,7 @@ int ares_parse_naptr_reply(const unsigned char *abuf, int alen_int,
if (rr == NULL) { if (rr == NULL) {
/* Shouldn't be possible */ /* Shouldn't be possible */
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN || if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN ||
@ -76,7 +76,7 @@ int ares_parse_naptr_reply(const unsigned char *abuf, int alen_int,
naptr_curr = ares_malloc_data(ARES_DATATYPE_NAPTR_REPLY); naptr_curr = ares_malloc_data(ARES_DATATYPE_NAPTR_REPLY);
if (naptr_curr == NULL) { if (naptr_curr == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* Link in the record */ /* Link in the record */
@ -95,27 +95,27 @@ int ares_parse_naptr_reply(const unsigned char *abuf, int alen_int,
ares_dns_rr_get_str(rr, ARES_RR_NAPTR_FLAGS)); ares_dns_rr_get_str(rr, ARES_RR_NAPTR_FLAGS));
if (naptr_curr->flags == NULL) { if (naptr_curr->flags == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* XXX: Why is this unsigned char * ? */ /* XXX: Why is this unsigned char * ? */
naptr_curr->service = (unsigned char *)ares_strdup( naptr_curr->service = (unsigned char *)ares_strdup(
ares_dns_rr_get_str(rr, ARES_RR_NAPTR_SERVICES)); ares_dns_rr_get_str(rr, ARES_RR_NAPTR_SERVICES));
if (naptr_curr->service == NULL) { if (naptr_curr->service == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* XXX: Why is this unsigned char * ? */ /* XXX: Why is this unsigned char * ? */
naptr_curr->regexp = (unsigned char *)ares_strdup( naptr_curr->regexp = (unsigned char *)ares_strdup(
ares_dns_rr_get_str(rr, ARES_RR_NAPTR_REGEXP)); ares_dns_rr_get_str(rr, ARES_RR_NAPTR_REGEXP));
if (naptr_curr->regexp == NULL) { if (naptr_curr->regexp == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
naptr_curr->replacement = naptr_curr->replacement =
ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_NAPTR_REPLACEMENT)); ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_NAPTR_REPLACEMENT));
if (naptr_curr->replacement == NULL) { if (naptr_curr->replacement == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }

@ -74,7 +74,7 @@ int ares_parse_ns_reply(const unsigned char *abuf, int alen_int,
hostent = ares_malloc(sizeof(*hostent)); hostent = ares_malloc(sizeof(*hostent));
if (hostent == NULL) { if (hostent == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
memset(hostent, 0, sizeof(*hostent)); memset(hostent, 0, sizeof(*hostent));
@ -82,7 +82,7 @@ int ares_parse_ns_reply(const unsigned char *abuf, int alen_int,
hostent->h_addr_list = ares_malloc(sizeof(*hostent->h_addr_list)); hostent->h_addr_list = ares_malloc(sizeof(*hostent->h_addr_list));
if (hostent->h_addr_list == NULL) { if (hostent->h_addr_list == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
hostent->h_addr_list[0] = NULL; hostent->h_addr_list[0] = NULL;
hostent->h_addrtype = AF_INET; hostent->h_addrtype = AF_INET;
@ -96,14 +96,14 @@ int ares_parse_ns_reply(const unsigned char *abuf, int alen_int,
hostent->h_name = ares_strdup(hostname); hostent->h_name = ares_strdup(hostname);
if (hostent->h_name == NULL) { if (hostent->h_name == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* Preallocate the maximum number + 1 */ /* Preallocate the maximum number + 1 */
hostent->h_aliases = ares_malloc((ancount + 1) * sizeof(*hostent->h_aliases)); hostent->h_aliases = ares_malloc((ancount + 1) * sizeof(*hostent->h_aliases));
if (hostent->h_aliases == NULL) { if (hostent->h_aliases == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
memset(hostent->h_aliases, 0, (ancount + 1) * sizeof(*hostent->h_aliases)); memset(hostent->h_aliases, 0, (ancount + 1) * sizeof(*hostent->h_aliases));
@ -114,7 +114,7 @@ int ares_parse_ns_reply(const unsigned char *abuf, int alen_int,
if (rr == NULL) { if (rr == NULL) {
/* Shouldn't be possible */ /* Shouldn't be possible */
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN || if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN ||
@ -125,7 +125,7 @@ int ares_parse_ns_reply(const unsigned char *abuf, int alen_int,
hostname = ares_dns_rr_get_str(rr, ARES_RR_NS_NSDNAME); hostname = ares_dns_rr_get_str(rr, ARES_RR_NS_NSDNAME);
if (hostname == NULL) { if (hostname == NULL) {
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
hostent->h_aliases[nscount] = ares_strdup(hostname); hostent->h_aliases[nscount] = ares_strdup(hostname);

@ -106,7 +106,7 @@ ares_status_t ares_parse_ptr_reply_dnsrec(const ares_dns_record_t *dnsrec,
if (rr == NULL) { if (rr == NULL) {
/* Shouldn't be possible */ /* Shouldn't be possible */
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN) { if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN) {
@ -118,7 +118,7 @@ ares_status_t ares_parse_ptr_reply_dnsrec(const ares_dns_record_t *dnsrec,
ptrname = ares_dns_rr_get_str(rr, ARES_RR_CNAME_CNAME); ptrname = ares_dns_rr_get_str(rr, ARES_RR_CNAME_CNAME);
if (ptrname == NULL) { if (ptrname == NULL) {
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
} }
@ -146,7 +146,7 @@ ares_status_t ares_parse_ptr_reply_dnsrec(const ares_dns_record_t *dnsrec,
hostname = ares_dns_rr_get_str(rr, ARES_RR_PTR_DNAME); hostname = ares_dns_rr_get_str(rr, ARES_RR_PTR_DNAME);
if (hostname == NULL) { if (hostname == NULL) {
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
/* Append as an alias */ /* Append as an alias */
@ -169,7 +169,7 @@ ares_status_t ares_parse_ptr_reply_dnsrec(const ares_dns_record_t *dnsrec,
hostent->h_name = ares_strdup(hostname); hostent->h_name = ares_strdup(hostname);
if (hostent->h_name == NULL) { if (hostent->h_name == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
done: done:

@ -63,7 +63,7 @@ int ares_parse_soa_reply(const unsigned char *abuf, int alen_int,
if (rr == NULL) { if (rr == NULL) {
/* Shouldn't be possible */ /* Shouldn't be possible */
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN || if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN ||
@ -75,7 +75,7 @@ int ares_parse_soa_reply(const unsigned char *abuf, int alen_int,
soa = ares_malloc_data(ARES_DATATYPE_SOA_REPLY); soa = ares_malloc_data(ARES_DATATYPE_SOA_REPLY);
if (soa == NULL) { if (soa == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
soa->serial = ares_dns_rr_get_u32(rr, ARES_RR_SOA_SERIAL); soa->serial = ares_dns_rr_get_u32(rr, ARES_RR_SOA_SERIAL);
@ -86,12 +86,12 @@ int ares_parse_soa_reply(const unsigned char *abuf, int alen_int,
soa->nsname = ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_SOA_MNAME)); soa->nsname = ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_SOA_MNAME));
if (soa->nsname == NULL) { if (soa->nsname == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
soa->hostmaster = ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_SOA_RNAME)); soa->hostmaster = ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_SOA_RNAME));
if (soa->hostmaster == NULL) { if (soa->hostmaster == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
break; break;
} }

@ -65,7 +65,7 @@ int ares_parse_srv_reply(const unsigned char *abuf, int alen_int,
if (rr == NULL) { if (rr == NULL) {
/* Shouldn't be possible */ /* Shouldn't be possible */
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN || if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN ||
@ -77,7 +77,7 @@ int ares_parse_srv_reply(const unsigned char *abuf, int alen_int,
srv_curr = ares_malloc_data(ARES_DATATYPE_SRV_REPLY); srv_curr = ares_malloc_data(ARES_DATATYPE_SRV_REPLY);
if (srv_curr == NULL) { if (srv_curr == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* Link in the record */ /* Link in the record */
@ -97,7 +97,7 @@ int ares_parse_srv_reply(const unsigned char *abuf, int alen_int,
if (srv_curr->host == NULL) { if (srv_curr->host == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }

@ -60,7 +60,7 @@ static int ares__parse_txt_reply(const unsigned char *abuf, size_t alen,
if (rr == NULL) { if (rr == NULL) {
/* Shouldn't be possible */ /* Shouldn't be possible */
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
/* XXX: Why Chaos? */ /* XXX: Why Chaos? */
@ -75,7 +75,7 @@ static int ares__parse_txt_reply(const unsigned char *abuf, size_t alen,
ares_malloc_data(ex ? ARES_DATATYPE_TXT_EXT : ARES_DATATYPE_TXT_REPLY); ares_malloc_data(ex ? ARES_DATATYPE_TXT_EXT : ARES_DATATYPE_TXT_REPLY);
if (txt_curr == NULL) { if (txt_curr == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* Link in the record */ /* Link in the record */
@ -96,7 +96,7 @@ static int ares__parse_txt_reply(const unsigned char *abuf, size_t alen,
txt_curr->txt = ares_malloc(ptr_len + 1); txt_curr->txt = ares_malloc(ptr_len + 1);
if (txt_curr->txt == NULL) { if (txt_curr->txt == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
memcpy(txt_curr->txt, ptr, ptr_len); memcpy(txt_curr->txt, ptr, ptr_len);
txt_curr->txt[ptr_len] = 0; txt_curr->txt[ptr_len] = 0;

@ -65,7 +65,7 @@ int ares_parse_uri_reply(const unsigned char *abuf, int alen_int,
if (rr == NULL) { if (rr == NULL) {
/* Shouldn't be possible */ /* Shouldn't be possible */
status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */ status = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */ goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN || if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN ||
@ -77,7 +77,7 @@ int ares_parse_uri_reply(const unsigned char *abuf, int alen_int,
uri_curr = ares_malloc_data(ARES_DATATYPE_URI_REPLY); uri_curr = ares_malloc_data(ARES_DATATYPE_URI_REPLY);
if (uri_curr == NULL) { if (uri_curr == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* Link in the record */ /* Link in the record */

@ -189,7 +189,8 @@ typedef struct {
ares_uint64_t total_count; /*!< Number of queries for bucket */ ares_uint64_t total_count; /*!< Number of queries for bucket */
time_t prev_ts; /*!< Previous period bucket timestamp */ time_t prev_ts; /*!< Previous period bucket timestamp */
ares_uint64_t prev_total_ms; /*!< Previous period bucket cumulative query time */ ares_uint64_t
prev_total_ms; /*!< Previous period bucket cumulative query time */
ares_uint64_t prev_total_count; /*!< Previous period bucket query count */ ares_uint64_t prev_total_count; /*!< Previous period bucket query count */
} ares_server_metrics_t; } ares_server_metrics_t;
@ -229,7 +230,7 @@ struct server_state {
struct query { struct query {
/* Query ID from qbuf, for faster lookup, and current timeout */ /* Query ID from qbuf, for faster lookup, and current timeout */
unsigned short qid; /* host byte order */ unsigned short qid; /* host byte order */
ares_timeval_t ts; /*!< Timestamp query was sent */ ares_timeval_t ts; /*!< Timestamp query was sent */
ares_timeval_t timeout; ares_timeval_t timeout;
ares_channel_t *channel; ares_channel_t *channel;
@ -256,8 +257,8 @@ struct query {
ares_bool_t using_tcp; ares_bool_t using_tcp;
ares_status_t error_status; ares_status_t error_status;
size_t timeouts; /* number of timeouts we saw for this request */ size_t timeouts; /* number of timeouts we saw for this request */
ares_bool_t no_retries; /* do not perform any additional retries, this is set ares_bool_t no_retries; /* do not perform any additional retries, this is set
* when a query is to be canceled */ * when a query is to be canceled */
}; };
struct apattern { struct apattern {
@ -437,21 +438,20 @@ ares_timeval_t ares__tvnow(void);
void ares__timeval_remaining(ares_timeval_t *remaining, void ares__timeval_remaining(ares_timeval_t *remaining,
const ares_timeval_t *now, const ares_timeval_t *now,
const ares_timeval_t *tout); const ares_timeval_t *tout);
void ares__timeval_diff(ares_timeval_t *tvdiff, void ares__timeval_diff(ares_timeval_t *tvdiff, const ares_timeval_t *tvstart,
const ares_timeval_t *tvstart, const ares_timeval_t *tvstop);
const ares_timeval_t *tvstop); ares_status_t ares__expand_name_validated(const unsigned char *encoded,
ares_status_t ares__expand_name_validated(const unsigned char *encoded, const unsigned char *abuf,
const unsigned char *abuf, size_t alen, char **s, size_t *enclen,
size_t alen, char **s, size_t *enclen, ares_bool_t is_hostname);
ares_bool_t is_hostname); ares_status_t ares_expand_string_ex(const unsigned char *encoded,
ares_status_t ares_expand_string_ex(const unsigned char *encoded, const unsigned char *abuf, size_t alen,
const unsigned char *abuf, size_t alen, unsigned char **s, size_t *enclen);
unsigned char **s, size_t *enclen); ares_status_t ares__init_servers_state(ares_channel_t *channel);
ares_status_t ares__init_servers_state(ares_channel_t *channel); ares_status_t ares__init_by_options(ares_channel_t *channel,
ares_status_t ares__init_by_options(ares_channel_t *channel, const struct ares_options *options,
const struct ares_options *options, int optmask);
int optmask); ares_status_t ares__init_by_sysconfig(ares_channel_t *channel);
ares_status_t ares__init_by_sysconfig(ares_channel_t *channel);
typedef struct { typedef struct {
ares__llist_t *sconfig; ares__llist_t *sconfig;
@ -683,8 +683,8 @@ ares_status_t ares_qcache_fetch(ares_channel_t *channel,
void ares_metrics_record(const struct query *query, struct server_state *server, void ares_metrics_record(const struct query *query, struct server_state *server,
ares_status_t status, const ares_dns_record_t *dnsrec); ares_status_t status, const ares_dns_record_t *dnsrec);
size_t ares_metrics_server_timeout(const struct server_state *server, size_t ares_metrics_server_timeout(const struct server_state *server,
const ares_timeval_t *now); const ares_timeval_t *now);
ares_status_t ares__channel_threading_init(ares_channel_t *channel); ares_status_t ares__channel_threading_init(ares_channel_t *channel);
void ares__channel_threading_destroy(ares_channel_t *channel); void ares__channel_threading_destroy(ares_channel_t *channel);

@ -69,13 +69,13 @@ static ares_bool_t same_questions(const ares_dns_record_t *qrec,
const ares_dns_record_t *arec); const ares_dns_record_t *arec);
static ares_bool_t same_address(const struct sockaddr *sa, static ares_bool_t same_address(const struct sockaddr *sa,
const struct ares_addr *aa); const struct ares_addr *aa);
static void end_query(ares_channel_t *channel, struct server_state *server, static void end_query(ares_channel_t *channel, struct server_state *server,
struct query *query, ares_status_t status, struct query *query, ares_status_t status,
const ares_dns_record_t *dnsrec); const ares_dns_record_t *dnsrec);
/* Invoke the server state callback after a success or failure */ /* Invoke the server state callback after a success or failure */
static void invoke_server_state_cb(const struct server_state *server, static void invoke_server_state_cb(const struct server_state *server,
ares_bool_t success, int flags) ares_bool_t success, int flags)
{ {
const ares_channel_t *channel = server->channel; const ares_channel_t *channel = server->channel;
ares__buf_t *buf; ares__buf_t *buf;
@ -94,7 +94,7 @@ static void invoke_server_state_cb(const struct server_state *server,
status = ares_get_server_addr(server, buf); status = ares_get_server_addr(server, buf);
if (status != ARES_SUCCESS) { if (status != ARES_SUCCESS) {
ares__buf_destroy(buf); /* LCOV_EXCL_LINE: OutOfMemory */ ares__buf_destroy(buf); /* LCOV_EXCL_LINE: OutOfMemory */
return; /* LCOV_EXCL_LINE: OutOfMemory */ return; /* LCOV_EXCL_LINE: OutOfMemory */
} }
server_string = ares__buf_finish_str(buf, NULL); server_string = ares__buf_finish_str(buf, NULL);
@ -945,9 +945,9 @@ static ares_status_t ares__append_tcpbuf(struct server_state *server,
return ares__buf_append(server->tcp_send, query->qbuf, query->qlen); return ares__buf_append(server->tcp_send, query->qbuf, query->qlen);
} }
static size_t ares__calc_query_timeout(const struct query *query, static size_t ares__calc_query_timeout(const struct query *query,
const struct server_state *server, const struct server_state *server,
const ares_timeval_t *now) const ares_timeval_t *now)
{ {
const ares_channel_t *channel = query->channel; const ares_channel_t *channel = query->channel;
size_t timeout = ares_metrics_server_timeout(server, now); size_t timeout = ares_metrics_server_timeout(server, now);
@ -1253,7 +1253,6 @@ static void ares_detach_query(struct query *query)
query->node_all_queries = NULL; query->node_all_queries = NULL;
} }
static void end_query(ares_channel_t *channel, struct server_state *server, static void end_query(ares_channel_t *channel, struct server_state *server,
struct query *query, ares_status_t status, struct query *query, ares_status_t status,
const ares_dns_record_t *dnsrec) const ares_dns_record_t *dnsrec)

@ -135,7 +135,7 @@ static char *ares__qcache_calc_key(const ares_dns_record_t *dnsrec)
fail: fail:
ares__buf_destroy(buf); ares__buf_destroy(buf);
return NULL; return NULL;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
static void ares__qcache_expire(ares__qcache_t *cache, static void ares__qcache_expire(ares__qcache_t *cache,
@ -214,20 +214,20 @@ ares_status_t ares__qcache_create(ares_rand_state *rand_state,
cache = ares_malloc_zero(sizeof(*cache)); cache = ares_malloc_zero(sizeof(*cache));
if (cache == NULL) { if (cache == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
cache->cache = ares__htable_strvp_create(NULL); cache->cache = ares__htable_strvp_create(NULL);
if (cache->cache == NULL) { if (cache->cache == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
cache->expire = ares__slist_create(rand_state, ares__qcache_entry_sort_cb, cache->expire = ares__slist_create(rand_state, ares__qcache_entry_sort_cb,
ares__qcache_entry_destroy_cb); ares__qcache_entry_destroy_cb);
if (cache->expire == NULL) { if (cache->expire == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
cache->max_ttl = max_ttl; cache->max_ttl = max_ttl;
@ -397,7 +397,7 @@ fail:
ares_free(entry); ares_free(entry);
} }
return ARES_ENOMEM; return ARES_ENOMEM;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
ares_status_t ares_qcache_fetch(ares_channel_t *channel, ares_status_t ares_qcache_fetch(ares_channel_t *channel,
@ -422,7 +422,7 @@ ares_status_t ares_qcache_fetch(ares_channel_t *channel,
key = ares__qcache_calc_key(dnsrec); key = ares__qcache_calc_key(dnsrec);
if (key == NULL) { if (key == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
entry = ares__htable_strvp_get_direct(channel->qcache->cache, key); entry = ares__htable_strvp_get_direct(channel->qcache->cache, key);

@ -94,7 +94,7 @@ static ares_status_t ares_query_int(ares_channel_t *channel, const char *name,
(size_t)(channel->flags & ARES_FLAG_EDNS) ? channel->ednspsz : 0); (size_t)(channel->flags & ARES_FLAG_EDNS) ? channel->ednspsz : 0);
if (status != ARES_SUCCESS) { if (status != ARES_SUCCESS) {
callback(arg, status, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */ callback(arg, status, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */
return status; /* LCOV_EXCL_LINE: OutOfMemory */ return status; /* LCOV_EXCL_LINE: OutOfMemory */
} }
qquery = ares_malloc(sizeof(*qquery)); qquery = ares_malloc(sizeof(*qquery));
@ -147,7 +147,7 @@ void ares_query(ares_channel_t *channel, const char *name, int dnsclass,
carg = ares__dnsrec_convert_arg(callback, arg); carg = ares__dnsrec_convert_arg(callback, arg);
if (carg == NULL) { if (carg == NULL) {
callback(arg, ARES_ENOMEM, 0, NULL, 0); /* LCOV_EXCL_LINE: OutOfMemory */ callback(arg, ARES_ENOMEM, 0, NULL, 0); /* LCOV_EXCL_LINE: OutOfMemory */
return; /* LCOV_EXCL_LINE: OutOfMemory */ return; /* LCOV_EXCL_LINE: OutOfMemory */
} }
ares_query_dnsrec(channel, name, (ares_dns_class_t)dnsclass, ares_query_dnsrec(channel, name, (ares_dns_class_t)dnsclass,

@ -229,7 +229,7 @@ ares_rand_state *ares__init_rand_state(void)
if (!ares__init_rand_engine(state)) { if (!ares__init_rand_engine(state)) {
ares_free(state); /* LCOV_EXCL_LINE: UntestablePath */ ares_free(state); /* LCOV_EXCL_LINE: UntestablePath */
return NULL; /* LCOV_EXCL_LINE: UntestablePath */ return NULL; /* LCOV_EXCL_LINE: UntestablePath */
} }
return state; return state;
@ -250,7 +250,7 @@ static void ares__clear_rand_state(ares_rand_state *state)
break; break;
case ARES_RAND_RC4: case ARES_RAND_RC4:
break; break;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
} }
@ -313,7 +313,7 @@ static void ares__rand_bytes_fetch(ares_rand_state *state, unsigned char *buf,
break; break;
#endif #endif
/* LCOV_EXCL_START: FallbackCode */ /* LCOV_EXCL_START: FallbackCode */
case ARES_RAND_FILE: case ARES_RAND_FILE:
while (1) { while (1) {
@ -334,8 +334,7 @@ static void ares__rand_bytes_fetch(ares_rand_state *state, unsigned char *buf,
ares_rc4_prng(&state->state.rc4, buf, len); ares_rc4_prng(&state->state.rc4, buf, len);
return; return;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
/* If we didn't return before we got here, that means we had a critical rand /* If we didn't return before we got here, that means we had a critical rand

@ -201,7 +201,7 @@ ares_status_t ares__search_name_list(const ares_channel_t *channel,
list = ares_malloc_zero(sizeof(*list) * list_len); list = ares_malloc_zero(sizeof(*list) * list_len);
if (list == NULL) { if (list == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
list[0] = alias; list[0] = alias;
alias = NULL; alias = NULL;
@ -216,7 +216,7 @@ ares_status_t ares__search_name_list(const ares_channel_t *channel,
list = ares_malloc_zero(sizeof(*list) * list_len); list = ares_malloc_zero(sizeof(*list) * list_len);
if (list == NULL) { if (list == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
list[0] = ares_strdup(name); list[0] = ares_strdup(name);
if (list[0] == NULL) { if (list[0] == NULL) {
@ -323,7 +323,7 @@ static ares_status_t ares_search_int(ares_channel_t *channel,
squery = ares_malloc_zero(sizeof(*squery)); squery = ares_malloc_zero(sizeof(*squery));
if (squery == NULL) { if (squery == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
squery->channel = channel; squery->channel = channel;
@ -332,7 +332,7 @@ static ares_status_t ares_search_int(ares_channel_t *channel,
squery->dnsrec = ares_dns_record_duplicate(dnsrec); squery->dnsrec = ares_dns_record_duplicate(dnsrec);
if (squery->dnsrec == NULL) { if (squery->dnsrec == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
squery->callback = callback; squery->callback = callback;
@ -456,7 +456,7 @@ ares_status_t ares_search_dnsrec(ares_channel_t *channel,
ares_status_t status; ares_status_t status;
if (channel == NULL || dnsrec == NULL || callback == NULL) { if (channel == NULL || dnsrec == NULL || callback == NULL) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */ return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
ares__channel_lock(channel); ares__channel_lock(channel);
@ -498,7 +498,7 @@ ares_status_t ares__lookup_hostaliases(const ares_channel_t *channel,
ares__llist_node_t *node; ares__llist_node_t *node;
if (channel == NULL || name == NULL || alias == NULL) { if (channel == NULL || name == NULL || alias == NULL) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */ return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
} }
*alias = NULL; *alias = NULL;
@ -521,8 +521,8 @@ ares_status_t ares__lookup_hostaliases(const ares_channel_t *channel,
buf = ares__buf_create(); buf = ares__buf_create();
if (buf == NULL) { if (buf == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
status = ares__buf_load_file(hostaliases, buf); status = ares__buf_load_file(hostaliases, buf);
@ -581,8 +581,8 @@ ares_status_t ares__lookup_hostaliases(const ares_channel_t *channel,
*alias = ares_strdup(fqdn); *alias = ares_strdup(fqdn);
if (*alias == NULL) { if (*alias == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
/* Good! */ /* Good! */

@ -78,7 +78,7 @@ static ares_status_t ares_send_dnsrec_int(ares_channel_t *channel,
query = ares_malloc(sizeof(struct query)); query = ares_malloc(sizeof(struct query));
if (!query) { if (!query) {
callback(arg, ARES_ENOMEM, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */ callback(arg, ARES_ENOMEM, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
} }
memset(query, 0, sizeof(*query)); memset(query, 0, sizeof(*query));

@ -64,7 +64,7 @@ char **ares__strsplit_duplicate(char **elms, size_t num_elm)
out[i] = ares_strdup(elms[i]); out[i] = ares_strdup(elms[i]);
if (out[i] == NULL) { if (out[i] == NULL) {
ares__strsplit_free(out, num_elm); /* LCOV_EXCL_LINE: OutOfMemory */ ares__strsplit_free(out, num_elm); /* LCOV_EXCL_LINE: OutOfMemory */
return NULL; /* LCOV_EXCL_LINE: OutOfMemory */ return NULL; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }
@ -109,7 +109,7 @@ char **ares__strsplit(const char *in, const char *delms, size_t *num_elm)
out = ares_malloc_zero(cnt * sizeof(*out)); out = ares_malloc_zero(cnt * sizeof(*out));
if (out == NULL) { if (out == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
for (node = ares__llist_node_first(llist); node != NULL; for (node = ares__llist_node_first(llist); node != NULL;

@ -263,7 +263,7 @@ ares_status_t ares__parse_sortlist(struct apattern **sortlist, size_t *nsort,
if (!sortlist_append(sortlist, nsort, &pat)) { if (!sortlist_append(sortlist, nsort, &pat)) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }

@ -80,12 +80,13 @@ static void dnsinfo_destroy(dnsinfo_t *dnsinfo)
static ares_status_t dnsinfo_init(dnsinfo_t **dnsinfo_out) static ares_status_t dnsinfo_init(dnsinfo_t **dnsinfo_out)
{ {
dnsinfo_t *dnsinfo = NULL; dnsinfo_t *dnsinfo = NULL;
ares_status_t status = ARES_SUCCESS; ares_status_t status = ARES_SUCCESS;
size_t i; size_t i;
const char *searchlibs[] = { const char *searchlibs[] = {
"/usr/lib/libSystem.dylib", "/usr/lib/libSystem.dylib",
"/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration", "/System/Library/Frameworks/SystemConfiguration.framework/"
"SystemConfiguration",
NULL NULL
}; };
@ -102,7 +103,7 @@ static ares_status_t dnsinfo_init(dnsinfo_t **dnsinfo_out)
goto done; goto done;
} }
for (i=0; searchlibs[i] != NULL; i++) { for (i = 0; searchlibs[i] != NULL; i++) {
dnsinfo->handle = dlopen(searchlibs[i], RTLD_LAZY /* | RTLD_NOLOAD */); dnsinfo->handle = dlopen(searchlibs[i], RTLD_LAZY /* | RTLD_NOLOAD */);
if (dnsinfo->handle == NULL) { if (dnsinfo->handle == NULL) {
/* Fail, loop */ /* Fail, loop */
@ -162,7 +163,7 @@ static ares_status_t read_resolver(const dns_resolver_t *resolver,
unsigned short port = 0; unsigned short port = 0;
ares_status_t status = ARES_SUCCESS; ares_status_t status = ARES_SUCCESS;
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 /* MacOS 10.8 */ # if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 /* MacOS 10.8 */
/* XXX: resolver->domain is for domain-specific servers. When we implement /* XXX: resolver->domain is for domain-specific servers. When we implement
* this support, we'll want to use this. But for now, we're going to * this support, we'll want to use this. But for now, we're going to
* skip any servers which set this since we can't properly route. * skip any servers which set this since we can't properly route.
@ -172,9 +173,9 @@ static ares_status_t read_resolver(const dns_resolver_t *resolver,
if (resolver->domain != NULL) { if (resolver->domain != NULL) {
return ARES_SUCCESS; return ARES_SUCCESS;
} }
#endif # endif
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 /* MacOS 10.8 */ # if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 /* MacOS 10.8 */
/* Check to see if DNS server should be used, base this on if the server is /* Check to see if DNS server should be used, base this on if the server is
* reachable or can be reachable automatically if we send traffic that * reachable or can be reachable automatically if we send traffic that
* direction. */ * direction. */
@ -183,7 +184,7 @@ static ares_status_t read_resolver(const dns_resolver_t *resolver,
kSCNetworkReachabilityFlagsConnectionOnTraffic))) { kSCNetworkReachabilityFlagsConnectionOnTraffic))) {
return ARES_SUCCESS; return ARES_SUCCESS;
} }
#endif # endif
/* NOTE: it doesn't look like resolver->flags is relevant */ /* NOTE: it doesn't look like resolver->flags is relevant */
@ -296,8 +297,8 @@ static ares_status_t read_resolver(const dns_resolver_t *resolver,
if_name = ares__if_indextoname(resolver->if_index, if_name_str, if_name = ares__if_indextoname(resolver->if_index, if_name_str,
sizeof(if_name_str)); sizeof(if_name_str));
status = ares__sconfig_append(&sysconfig->sconfig, &addr, addrport, status = ares__sconfig_append(&sysconfig->sconfig, &addr, addrport,
addrport, if_name); addrport, if_name);
if (status != ARES_SUCCESS) { if (status != ARES_SUCCESS) {
return status; return status;
} }

@ -55,16 +55,15 @@ void ares__timeval_remaining(ares_timeval_t *remaining,
} }
} }
void ares__timeval_diff(ares_timeval_t *tvdiff, void ares__timeval_diff(ares_timeval_t *tvdiff, const ares_timeval_t *tvstart,
const ares_timeval_t *tvstart,
const ares_timeval_t *tvstop) const ares_timeval_t *tvstop)
{ {
tvdiff->sec = tvstop->sec - tvstart->sec; tvdiff->sec = tvstop->sec - tvstart->sec;
if (tvstop->usec > tvstart->usec) { if (tvstop->usec > tvstart->usec) {
tvdiff->usec = tvstop->usec - tvstart->usec; tvdiff->usec = tvstop->usec - tvstart->usec;
} else { } else {
tvdiff->sec -= 1; tvdiff->sec -= 1;
tvdiff->usec = tvstop->usec + 1000000 - tvstart->usec; tvdiff->usec = tvstop->usec + 1000000 - tvstart->usec;
} }
} }
@ -73,9 +72,9 @@ static struct timeval ares_timeval_to_struct_timeval(const ares_timeval_t *atv)
struct timeval tv; struct timeval tv;
#ifdef USE_WINSOCK #ifdef USE_WINSOCK
tv.tv_sec = (long)atv->sec; tv.tv_sec = (long)atv->sec;
#else #else
tv.tv_sec = (time_t)atv->sec; tv.tv_sec = (time_t)atv->sec;
#endif #endif
tv.tv_usec = (int)atv->usec; tv.tv_usec = (int)atv->usec;

@ -397,7 +397,7 @@ ares_status_t ares__sconfig_append(ares__llist_t **sconfig,
*sconfig = ares__llist_create(ares_free); *sconfig = ares__llist_create(ares_free);
if (*sconfig == NULL) { if (*sconfig == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }
@ -423,7 +423,7 @@ ares_status_t ares__sconfig_append(ares__llist_t **sconfig,
if (ares__llist_insert_last(*sconfig, s) == NULL) { if (ares__llist_insert_last(*sconfig, s) == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
return ARES_SUCCESS; return ARES_SUCCESS;
@ -613,24 +613,24 @@ static ares_status_t ares__server_create(ares_channel_t *channel,
server->tcp_parser = ares__buf_create(); server->tcp_parser = ares__buf_create();
if (server->tcp_parser == NULL) { if (server->tcp_parser == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
server->tcp_send = ares__buf_create(); server->tcp_send = ares__buf_create();
if (server->tcp_send == NULL) { if (server->tcp_send == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
server->connections = ares__llist_create(NULL); server->connections = ares__llist_create(NULL);
if (server->connections == NULL) { if (server->connections == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
if (ares__slist_insert(channel->servers, server) == NULL) { if (ares__slist_insert(channel->servers, server) == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
} }
status = ARES_SUCCESS; status = ARES_SUCCESS;
@ -823,7 +823,7 @@ static ares_status_t
if (ares__llist_insert_last(s, sconfig) == NULL) { if (ares__llist_insert_last(s, sconfig) == NULL) {
ares_free(sconfig); /* LCOV_EXCL_LINE: OutOfMemory */ ares_free(sconfig); /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }
@ -834,7 +834,7 @@ static ares_status_t
fail: fail:
ares__llist_destroy(s); ares__llist_destroy(s);
return ARES_ENOMEM; return ARES_ENOMEM;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
static ares_status_t ares_addr_port_node_to_server_config_llist( static ares_status_t ares_addr_port_node_to_server_config_llist(
@ -877,7 +877,7 @@ static ares_status_t ares_addr_port_node_to_server_config_llist(
if (ares__llist_insert_last(s, sconfig) == NULL) { if (ares__llist_insert_last(s, sconfig) == NULL) {
ares_free(sconfig); /* LCOV_EXCL_LINE: OutOfMemory */ ares_free(sconfig); /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
} }
} }
@ -888,7 +888,7 @@ static ares_status_t ares_addr_port_node_to_server_config_llist(
fail: fail:
ares__llist_destroy(s); ares__llist_destroy(s);
return ARES_ENOMEM; return ARES_ENOMEM;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
ares_status_t ares_in_addr_to_server_config_llist(const struct in_addr *servers, ares_status_t ares_in_addr_to_server_config_llist(const struct in_addr *servers,
@ -929,7 +929,7 @@ ares_status_t ares_in_addr_to_server_config_llist(const struct in_addr *servers,
fail: fail:
ares__llist_destroy(s); ares__llist_destroy(s);
return ARES_ENOMEM; return ARES_ENOMEM;
/* LCOV_EXCL_STOP */ /* LCOV_EXCL_STOP */
} }
/* Write out the details of a server to a buffer */ /* Write out the details of a server to a buffer */

@ -212,7 +212,7 @@
# undef SEND_TYPE_ARG1 # undef SEND_TYPE_ARG1
# define SEND_TYPE_ARG1 int # define SEND_TYPE_ARG1 int
# undef RECVFROM_TYPE_ARG1 # undef RECVFROM_TYPE_ARG1
# define RECVFROM_TYPE_ARG1 int # define RECVFROM_TYPE_ARG1 int
# define NS_INADDRSZ 4 # define NS_INADDRSZ 4
# define HAVE_ARPA_NAMESER_H 1 # define HAVE_ARPA_NAMESER_H 1
# define HAVE_ARPA_INET_H 1 # define HAVE_ARPA_INET_H 1
@ -356,7 +356,7 @@
#endif #endif
#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) && \ #if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) && \
!defined(__WATCOMC__) && !defined(WATT32) !defined(__WATCOMC__) && !defined(WATT32)
/* Define if you have if_nametoindex() */ /* Define if you have if_nametoindex() */
# define HAVE_IF_NAMETOINDEX 1 # define HAVE_IF_NAMETOINDEX 1
/* Define if you have if_indextoname() */ /* Define if you have if_indextoname() */

@ -77,7 +77,6 @@ static void ai_callback(void *arg, int status, int timeouts,
ares_freeaddrinfo(result); ares_freeaddrinfo(result);
} }
static volatile ares_bool_t is_running = ARES_TRUE; static volatile ares_bool_t is_running = ARES_TRUE;
@ -96,7 +95,7 @@ static BOOL WINAPI ctrlc_handler(_In_ DWORD dwCtrlType)
#else #else
static void ctrlc_handler(int sig) static void ctrlc_handler(int sig)
{ {
switch(sig) { switch (sig) {
case SIGINT: case SIGINT:
is_running = ARES_FALSE; is_running = ARES_FALSE;
break; break;
@ -132,10 +131,10 @@ int main(int argc, char *argv[])
} }
memset(&options, 0, sizeof(options)); memset(&options, 0, sizeof(options));
optmask |= ARES_OPT_EVENT_THREAD; optmask |= ARES_OPT_EVENT_THREAD;
options.evsys = ARES_EVSYS_DEFAULT; options.evsys = ARES_EVSYS_DEFAULT;
optmask |= ARES_OPT_QUERY_CACHE; optmask |= ARES_OPT_QUERY_CACHE;
options.qcache_max_ttl = 0; options.qcache_max_ttl = 0;
status = (ares_status_t)ares_init_options(&channel, &options, optmask); status = (ares_status_t)ares_init_options(&channel, &options, optmask);
if (status != ARES_SUCCESS) { if (status != ARES_SUCCESS) {
@ -153,7 +152,7 @@ int main(int argc, char *argv[])
for (count = 1; is_running == ARES_TRUE; count++) { for (count = 1; is_running == ARES_TRUE; count++) {
struct ares_addrinfo_hints hints; struct ares_addrinfo_hints hints;
char *servers = ares_get_servers_csv(channel); char *servers = ares_get_servers_csv(channel);
memset(&hints, 0, sizeof(hints)); memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC; hints.ai_family = AF_UNSPEC;

Loading…
Cancel
Save