diff --git a/cmake/libraries.cmake b/cmake/libraries.cmake index 673784bc437..1474ef965d8 100644 --- a/cmake/libraries.cmake +++ b/cmake/libraries.cmake @@ -19,7 +19,7 @@ set(FLB_PATH_LIB_ONIGMO "lib/onigmo") set(FLB_PATH_LIB_MPACK "lib/mpack-amalgamation-1.1.1") set(FLB_PATH_LIB_MINIZ "lib/miniz") set(FLB_PATH_LIB_TUTF8E "lib/tutf8e") -set(FLB_PATH_LIB_CARES "lib/c-ares-1.32.3") +set(FLB_PATH_LIB_CARES "lib/c-ares-1.33.0") set(FLB_PATH_LIB_SNAPPY "lib/snappy-fef67ac") set(FLB_PATH_LIB_RDKAFKA "lib/librdkafka-2.4.0") set(FLB_PATH_LIB_RING_BUFFER "lib/lwrb") diff --git a/lib/c-ares-1.32.3/RELEASE-NOTES.md b/lib/c-ares-1.32.3/RELEASE-NOTES.md deleted file mode 100644 index 69e6a475799..00000000000 --- a/lib/c-ares-1.32.3/RELEASE-NOTES.md +++ /dev/null @@ -1,98 +0,0 @@ -## c-ares version 1.32.3 - July 24 2024 - -This is a bugfix release. - -Changes: -* Prevent complex recursion during query requeuing and connection cleanup for - stability. [e8b32b8](https://github.com/c-ares/c-ares/commit/e8b32b8) -* Better propagate error codes on requeue situations. - [a9bc0a2](https://github.com/c-ares/c-ares/commit/a9bc0a2) -* Try to prevent SIGPIPE from being generated and delivered to integrations. - [de01baa](https://github.com/c-ares/c-ares/commit/de01baa) - -Bugfixes: -* Missing manpage for `ares_dns_record_set_id()` - [aa462b3](https://github.com/c-ares/c-ares/commit/aa462b3) -* Memory leak in `ares__hosts_entry_to_hostent()` due to allocation strategy. - [PR #824](https://github.com/c-ares/c-ares/pull/824) -* UDP write failure detected via ICMP unreachable should trigger faster - failover. [PR #821](https://github.com/c-ares/c-ares/pull/821) -* Fix pycares test case regression due to wrong error code being returned. - Regression from 1.31.0. [PR #820](https://github.com/c-ares/c-ares/pull/820) -* Fix possible Windows crash during `ares_destroy()` when using event threads. - [5609bd4](https://github.com/c-ares/c-ares/commit/5609bd4) -* `ARES_OPT_MAXTIMEOUTMS` wasn't being honored in all cases. - [a649c60](https://github.com/c-ares/c-ares/commit/a649c60) - -## c-ares version 1.32.2 - July 15 2024 - -This is a bugfix release. - -Bugfixes: - -* Windows: rework EventThread AFD code for better stability. - [PR #811](https://github.com/c-ares/c-ares/pull/811) -* Windows: If an IP address was detected to have changed, it could lead to a - crash due to a bad pointer. Regression introduced in 1.31.0. - [59e3a1f4](https://github.com/c-ares/c-ares/commit/59e3a1f4) -* Windows: use `QueryPerformanceCounters()` instead of `GetTickCount64()` for - better time accuracy (~15ms -> ~1us). -* Windows 32bit config change callback needs to be tagged as `stdcall` otherwise - could result in a crash. - [5c2bab35](https://github.com/c-ares/c-ares/commit/5c2bab35) -* Tests that need accurate timing should not depend on internal symbols as there - are C++ equivalents in `std::chrono`. - [PR #809](https://github.com/c-ares/c-ares/pull/809) -* Kqueue (MacOS, \*BSD): If the open socket count exceeded 8 (unlikely), it - would try to allocate a new buffer that was too small. - [5aad7981](https://github.com/c-ares/c-ares/commit/5aad7981) - - -## c-ares version 1.32.1 - July 7 2024 - -This is a bugfix release. - -Bugfixes: -* Channel lock needs to be recursive to ensure calls into c-ares functions can - be made from callbacks otherwise deadlocks will occur. This regression was - introduced in 1.32.0. - - -## c-ares version 1.32.0 - July 4 2024 - -This is a feature and bugfix release. - -Features: - -* Add support for DNS 0x20 to help prevent cache poisoning attacks, enabled - by specifying `ARES_FLAG_DNS0x20`. Disabled by default. [PR #800](https://github.com/c-ares/c-ares/pull/800) -* Rework query timeout logic to automatically adjust timeouts based on network - conditions. The timeout specified now is only used as a hint until there - is enough history to calculate a more valid timeout. [PR #794](https://github.com/c-ares/c-ares/pull/794) - -Changes: - -* DNS RR TXT strings should not be automatically concatenated as there are use - cases outside of RFC 7208. In order to maintain ABI compliance, the ability - to retrieve TXT strings concatenated is retained as well as a new API to - retrieve the individual strings. This restores behavior from c-ares 1.20.0. - [PR #801](https://github.com/c-ares/c-ares/pull/801) -* Clean up header inclusion logic to make hacking on code easier. [PR #797](https://github.com/c-ares/c-ares/pull/797) -* GCC/Clang: Enable even more strict warnings to catch more coding flaws. [253bdee](https://github.com/c-ares/c-ares/commit/253bdee) -* MSVC: Enable `/W4` warning level. [PR #792](https://github.com/c-ares/c-ares/pull/792) - -Bugfixes: - -* Tests: Fix thread race condition in test cases for EventThread. [PR #803](https://github.com/c-ares/c-ares/pull/803) -* Windows: Fix building with UNICODE. [PR #802](https://github.com/c-ares/c-ares/pull/802) -* Thread Saftey: `ares_timeout()` was missing lock. [74a64e4](https://github.com/c-ares/c-ares/commit/74a64e4) -* Fix building with DJGPP (32bit protected mode DOS). [PR #789](https://github.com/c-ares/c-ares/pull/789) - -Thanks go to these friendly people for their efforts and contributions for this -release: - -* Brad House (@bradh352) -* Cheng (@zcbenz) - - - diff --git a/lib/c-ares-1.32.3/msvc_ver.inc b/lib/c-ares-1.32.3/msvc_ver.inc deleted file mode 100644 index 61bdb59ae2c..00000000000 --- a/lib/c-ares-1.32.3/msvc_ver.inc +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (C) The c-ares project and its contributors -# SPDX-License-Identifier: MIT -# ----------------------------------------------- -# Detect NMAKE version deducing old MSVC versions -# ----------------------------------------------- - -!IFNDEF _NMAKE_VER -! MESSAGE Macro _NMAKE_VER not defined. -! MESSAGE Use MSVC's NMAKE to process this makefile. -! ERROR See previous message. -!ENDIF - -!IF "$(_NMAKE_VER)" == "6.00.8168.0" -CC_VERS_NUM = 60 -!ELSEIF "$(_NMAKE_VER)" == "6.00.9782.0" -CC_VERS_NUM = 60 -!ELSEIF "$(_NMAKE_VER)" == "7.00.8882" -CC_VERS_NUM = 70 -!ELSEIF "$(_NMAKE_VER)" == "7.00.9466" -CC_VERS_NUM = 70 -!ELSEIF "$(_NMAKE_VER)" == "7.00.9955" -CC_VERS_NUM = 70 -!ELSE -# Pick an arbitrary bigger number for all later versions -CC_VERS_NUM = 199 -!ENDIF diff --git a/lib/c-ares-1.32.3/src/lib/Makefile.inc b/lib/c-ares-1.32.3/src/lib/Makefile.inc deleted file mode 100644 index a1f39609edc..00000000000 --- a/lib/c-ares-1.32.3/src/lib/Makefile.inc +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright (C) The c-ares project and its contributors -# SPDX-License-Identifier: MIT - -CSOURCES = ares__addrinfo2hostent.c \ - ares__addrinfo_localhost.c \ - ares__buf.c \ - ares__close_sockets.c \ - ares__hosts_file.c \ - ares__htable.c \ - ares__htable_asvp.c \ - ares__htable_strvp.c \ - ares__htable_szvp.c \ - ares__htable_vpvp.c \ - ares__iface_ips.c \ - ares__llist.c \ - ares__parse_into_addrinfo.c \ - ares__slist.c \ - ares__socket.c \ - ares__sortaddrinfo.c \ - ares__threads.c \ - ares__timeval.c \ - ares_android.c \ - ares_cancel.c \ - ares_data.c \ - ares_destroy.c \ - ares_dns_mapping.c \ - ares_dns_multistring.c \ - ares_dns_name.c \ - ares_dns_parse.c \ - ares_dns_record.c \ - ares_dns_write.c \ - ares_event_configchg.c \ - ares_event_epoll.c \ - ares_event_kqueue.c \ - ares_event_poll.c \ - ares_event_select.c \ - ares_event_thread.c \ - ares_event_wake_pipe.c \ - ares_event_win32.c \ - ares_expand_name.c \ - ares_expand_string.c \ - ares_fds.c \ - ares_free_hostent.c \ - ares_free_string.c \ - ares_freeaddrinfo.c \ - ares_getaddrinfo.c \ - ares_getenv.c \ - ares_gethostbyaddr.c \ - ares_gethostbyname.c \ - ares_getnameinfo.c \ - ares_getsock.c \ - ares_init.c \ - ares_library_init.c \ - ares_math.c \ - ares_metrics.c \ - ares_create_query.c \ - ares_options.c \ - ares_parse_a_reply.c \ - ares_parse_aaaa_reply.c \ - ares_parse_caa_reply.c \ - ares_parse_mx_reply.c \ - ares_parse_naptr_reply.c \ - ares_parse_ns_reply.c \ - ares_parse_ptr_reply.c \ - ares_parse_soa_reply.c \ - ares_parse_srv_reply.c \ - ares_parse_txt_reply.c \ - ares_parse_uri_reply.c \ - ares_platform.c \ - ares_process.c \ - ares_qcache.c \ - ares_query.c \ - ares_rand.c \ - ares_search.c \ - ares_send.c \ - ares_strcasecmp.c \ - ares_str.c \ - ares_strerror.c \ - ares_strsplit.c \ - ares_sysconfig.c \ - ares_sysconfig_files.c \ - ares_sysconfig_mac.c \ - ares_sysconfig_win.c \ - ares_timeout.c \ - ares_update_servers.c \ - ares_version.c \ - inet_net_pton.c \ - inet_ntop.c \ - windows_port.c - -HHEADERS = ares__buf.h \ - ares__htable.h \ - ares__htable_asvp.h \ - ares__htable_strvp.h \ - ares__htable_szvp.h \ - ares__htable_vpvp.h \ - ares__iface_ips.h \ - ares__llist.h \ - ares__slist.h \ - ares__threads.h \ - ares_android.h \ - ares_data.h \ - ares_dns_multistring.h \ - ares_dns_private.h \ - ares_event.h \ - ares_event_win32.h \ - ares_getenv.h \ - ares_inet_net_pton.h \ - ares_ipv6.h \ - ares_platform.h \ - ares_private.h \ - ares_strcasecmp.h \ - ares_str.h \ - ares_strsplit.h \ - ares_setup.h \ - thirdparty/apple/dnsinfo.h - diff --git a/lib/c-ares-1.32.3/src/lib/ares__socket.c b/lib/c-ares-1.32.3/src/lib/ares__socket.c deleted file mode 100644 index 3db19f7e823..00000000000 --- a/lib/c-ares-1.32.3/src/lib/ares__socket.c +++ /dev/null @@ -1,486 +0,0 @@ -/* MIT License - * - * Copyright (c) Massachusetts Institute of Technology - * Copyright (c) The c-ares project and its contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * SPDX-License-Identifier: MIT - */ -#include "ares_private.h" - -#ifdef HAVE_SYS_UIO_H -# include -#endif -#ifdef HAVE_NETINET_IN_H -# include -#endif -#ifdef HAVE_NETINET_TCP_H -# include -#endif -#ifdef HAVE_NETDB_H -# include -#endif -#ifdef HAVE_ARPA_INET_H -# include -#endif - -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_SYS_IOCTL_H -# include -#endif -#ifdef NETWARE -# include -#endif - -#include -#include -#include - - -ares_ssize_t ares__socket_recvfrom(ares_channel_t *channel, ares_socket_t s, - void *data, size_t data_len, int flags, - struct sockaddr *from, - ares_socklen_t *from_len) -{ - if (channel->sock_funcs && channel->sock_funcs->arecvfrom) { - return channel->sock_funcs->arecvfrom(s, data, data_len, flags, from, - from_len, channel->sock_func_cb_data); - } - -#ifdef HAVE_RECVFROM - return (ares_ssize_t)recvfrom(s, data, (RECVFROM_TYPE_ARG3)data_len, flags, - from, from_len); -#else - return sread(s, data, data_len); -#endif -} - -ares_ssize_t ares__socket_recv(ares_channel_t *channel, ares_socket_t s, - void *data, size_t data_len) -{ - if (channel->sock_funcs && channel->sock_funcs->arecvfrom) { - return channel->sock_funcs->arecvfrom(s, data, data_len, 0, 0, 0, - channel->sock_func_cb_data); - } - - /* sread() is a wrapper for read() or recv() depending on the system */ - return sread(s, data, data_len); -} - -/* - * setsocknonblock sets the given socket to either blocking or non-blocking - * mode based on the 'nonblock' boolean argument. This function is highly - * portable. - */ -static int setsocknonblock(ares_socket_t sockfd, /* operate on this */ - int nonblock /* TRUE or FALSE */) -{ -#if defined(USE_BLOCKING_SOCKETS) - - return 0; /* returns success */ - -#elif defined(HAVE_FCNTL_O_NONBLOCK) - - /* most recent unix versions */ - int flags; - flags = fcntl(sockfd, F_GETFL, 0); - if (nonblock) { - return fcntl(sockfd, F_SETFL, flags | O_NONBLOCK); - } else { - return fcntl(sockfd, F_SETFL, flags & (~O_NONBLOCK)); /* LCOV_EXCL_LINE */ - } - -#elif defined(HAVE_IOCTL_FIONBIO) - - /* older unix versions */ - int flags = nonblock ? 1 : 0; - return ioctl(sockfd, FIONBIO, &flags); - -#elif defined(HAVE_IOCTLSOCKET_FIONBIO) - -# ifdef WATT32 - char flags = nonblock ? 1 : 0; -# else - /* Windows */ - unsigned long flags = nonblock ? 1UL : 0UL; -# endif - return ioctlsocket(sockfd, (long)FIONBIO, &flags); - -#elif defined(HAVE_IOCTLSOCKET_CAMEL_FIONBIO) - - /* Amiga */ - long flags = nonblock ? 1L : 0L; - return IoctlSocket(sockfd, FIONBIO, flags); - -#elif defined(HAVE_SETSOCKOPT_SO_NONBLOCK) - - /* BeOS */ - long b = nonblock ? 1L : 0L; - return setsockopt(sockfd, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b)); - -#else -# error "no non-blocking method was found/used/set" -#endif -} - -#if defined(IPV6_V6ONLY) && defined(USE_WINSOCK) -/* It makes support for IPv4-mapped IPv6 addresses. - * Linux kernel, NetBSD, FreeBSD and Darwin: default is off; - * Windows Vista and later: default is on; - * DragonFly BSD: acts like off, and dummy setting; - * OpenBSD and earlier Windows: unsupported. - * Linux: controlled by /proc/sys/net/ipv6/bindv6only. - */ -static void set_ipv6_v6only(ares_socket_t sockfd, int on) -{ - (void)setsockopt(sockfd, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&on, sizeof(on)); -} -#else -# define set_ipv6_v6only(s, v) -#endif - -static int configure_socket(ares_socket_t s, struct server_state *server) -{ - union { - struct sockaddr sa; - struct sockaddr_in sa4; - struct sockaddr_in6 sa6; - } local; - - ares_socklen_t bindlen = 0; - ares_channel_t *channel = server->channel; - - /* do not set options for user-managed sockets */ - if (channel->sock_funcs && channel->sock_funcs->asocket) { - return 0; - } - - (void)setsocknonblock(s, 1); - -#if defined(FD_CLOEXEC) && !defined(MSDOS) - /* Configure the socket fd as close-on-exec. */ - if (fcntl(s, F_SETFD, FD_CLOEXEC) == -1) { - return -1; /* LCOV_EXCL_LINE */ - } -#endif - - /* No need to emit SIGPIPE on socket errors */ -#if defined(SO_NOSIGPIPE) - { - int opt = 1; - setsockopt(s, SOL_SOCKET, SO_NOSIGPIPE, (void *)&opt, sizeof(opt)); - } -#endif - - /* Set the socket's send and receive buffer sizes. */ - if ((channel->socket_send_buffer_size > 0) && - setsockopt(s, SOL_SOCKET, SO_SNDBUF, - (void *)&channel->socket_send_buffer_size, - sizeof(channel->socket_send_buffer_size)) == -1) { - return -1; /* LCOV_EXCL_LINE: UntestablePath */ - } - - if ((channel->socket_receive_buffer_size > 0) && - setsockopt(s, SOL_SOCKET, SO_RCVBUF, - (void *)&channel->socket_receive_buffer_size, - sizeof(channel->socket_receive_buffer_size)) == -1) { - return -1; /* LCOV_EXCL_LINE: UntestablePath */ - } - -#ifdef SO_BINDTODEVICE - if (channel->local_dev_name[0] && - setsockopt(s, SOL_SOCKET, SO_BINDTODEVICE, channel->local_dev_name, - sizeof(channel->local_dev_name))) { - /* Only root can do this, and usually not fatal if it doesn't work, so */ - /* just continue on. */ - } -#endif - - if (server->addr.family == AF_INET && channel->local_ip4) { - memset(&local.sa4, 0, sizeof(local.sa4)); - local.sa4.sin_family = AF_INET; - local.sa4.sin_addr.s_addr = htonl(channel->local_ip4); - bindlen = sizeof(local.sa4); - } else if (server->addr.family == AF_INET6 && server->ll_scope == 0 && - memcmp(channel->local_ip6, ares_in6addr_any._S6_un._S6_u8, - sizeof(channel->local_ip6)) != 0) { - /* Only if not link-local and an ip other than "::" is specified */ - memset(&local.sa6, 0, sizeof(local.sa6)); - local.sa6.sin6_family = AF_INET6; - memcpy(&local.sa6.sin6_addr, channel->local_ip6, - sizeof(channel->local_ip6)); - bindlen = sizeof(local.sa6); - } - - if (bindlen && bind(s, &local.sa, bindlen) < 0) { - return -1; - } - - if (server->addr.family == AF_INET6) { - set_ipv6_v6only(s, 0); - } - - return 0; -} - -ares_status_t ares__open_connection(ares_channel_t *channel, - struct server_state *server, - ares_bool_t is_tcp) -{ - ares_socket_t s; - int opt; - ares_socklen_t salen; - - union { - struct sockaddr_in sa4; - struct sockaddr_in6 sa6; - } saddr; - struct sockaddr *sa; - struct server_connection *conn; - ares__llist_node_t *node; - int type = is_tcp ? SOCK_STREAM : SOCK_DGRAM; - - switch (server->addr.family) { - case AF_INET: - sa = (void *)&saddr.sa4; - salen = sizeof(saddr.sa4); - memset(sa, 0, (size_t)salen); - saddr.sa4.sin_family = AF_INET; - saddr.sa4.sin_port = htons(is_tcp ? server->tcp_port : server->udp_port); - memcpy(&saddr.sa4.sin_addr, &server->addr.addr.addr4, - sizeof(saddr.sa4.sin_addr)); - break; - case AF_INET6: - sa = (void *)&saddr.sa6; - salen = sizeof(saddr.sa6); - memset(sa, 0, (size_t)salen); - saddr.sa6.sin6_family = AF_INET6; - saddr.sa6.sin6_port = htons(is_tcp ? server->tcp_port : server->udp_port); - memcpy(&saddr.sa6.sin6_addr, &server->addr.addr.addr6, - sizeof(saddr.sa6.sin6_addr)); -#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID - saddr.sa6.sin6_scope_id = server->ll_scope; -#endif - break; - default: - return ARES_EBADFAMILY; /* LCOV_EXCL_LINE */ - } - - /* Acquire a socket. */ - s = ares__open_socket(channel, server->addr.family, type, 0); - if (s == ARES_SOCKET_BAD) { - return ARES_ECONNREFUSED; - } - - /* Configure it. */ - if (configure_socket(s, server) < 0) { - ares__close_socket(channel, s); - return ARES_ECONNREFUSED; - } - -#ifdef TCP_NODELAY - if (is_tcp) { - /* - * Disable the Nagle algorithm (only relevant for TCP sockets, and thus not - * in configure_socket). In general, in DNS lookups we're pretty much - * interested in firing off a single request and then waiting for a reply, - * so batching isn't very interesting. - */ - opt = 1; - if ((!channel->sock_funcs || !channel->sock_funcs->asocket) && - setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (void *)&opt, sizeof(opt)) == - -1) { - ares__close_socket(channel, s); /* LCOV_EXCL_LINE: UntestablePath */ - return ARES_ECONNREFUSED; /* LCOV_EXCL_LINE: UntestablePath */ - } - } -#endif - - if (channel->sock_config_cb) { - int err = channel->sock_config_cb(s, type, channel->sock_config_cb_data); - if (err < 0) { - ares__close_socket(channel, s); - return ARES_ECONNREFUSED; - } - } - - /* Connect to the server. */ - if (ares__connect_socket(channel, s, sa, salen) == -1) { - int err = SOCKERRNO; - - if (err != EINPROGRESS && err != EWOULDBLOCK) { - ares__close_socket(channel, s); - return ARES_ECONNREFUSED; - } - } - - if (channel->sock_create_cb) { - int err = channel->sock_create_cb(s, type, channel->sock_create_cb_data); - if (err < 0) { - ares__close_socket(channel, s); - return ARES_ECONNREFUSED; - } - } - - conn = ares_malloc(sizeof(*conn)); - if (conn == NULL) { - ares__close_socket(channel, s); /* LCOV_EXCL_LINE: OutOfMemory */ - return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ - } - memset(conn, 0, sizeof(*conn)); - conn->fd = s; - conn->server = server; - conn->queries_to_conn = ares__llist_create(NULL); - conn->is_tcp = is_tcp; - if (conn->queries_to_conn == NULL) { - /* LCOV_EXCL_START: OutOfMemory */ - ares__close_socket(channel, s); - ares_free(conn); - return ARES_ENOMEM; - /* LCOV_EXCL_STOP */ - } - - /* TCP connections are thrown to the end as we don't spawn multiple TCP - * connections. UDP connections are put on front where the newest connection - * can be quickly pulled */ - if (is_tcp) { - node = ares__llist_insert_last(server->connections, conn); - } else { - node = ares__llist_insert_first(server->connections, conn); - } - if (node == NULL) { - /* LCOV_EXCL_START: OutOfMemory */ - ares__close_socket(channel, s); - ares__llist_destroy(conn->queries_to_conn); - ares_free(conn); - return ARES_ENOMEM; - /* LCOV_EXCL_STOP */ - } - - /* Register globally to quickly map event on file descriptor to connection - * node object */ - if (!ares__htable_asvp_insert(channel->connnode_by_socket, s, node)) { - /* LCOV_EXCL_START: OutOfMemory */ - ares__close_socket(channel, s); - ares__llist_destroy(conn->queries_to_conn); - ares__llist_node_claim(node); - ares_free(conn); - return ARES_ENOMEM; - /* LCOV_EXCL_STOP */ - } - - SOCK_STATE_CALLBACK(channel, s, 1, 0); - - if (is_tcp) { - server->tcp_conn = conn; - } - - return ARES_SUCCESS; -} - -ares_socket_t ares__open_socket(ares_channel_t *channel, int af, int type, - int protocol) -{ - if (channel->sock_funcs && channel->sock_funcs->asocket) { - return channel->sock_funcs->asocket(af, type, protocol, - channel->sock_func_cb_data); - } - - return socket(af, type, protocol); -} - -int ares__connect_socket(ares_channel_t *channel, ares_socket_t sockfd, - const struct sockaddr *addr, ares_socklen_t addrlen) -{ - if (channel->sock_funcs && channel->sock_funcs->aconnect) { - return channel->sock_funcs->aconnect(sockfd, addr, addrlen, - channel->sock_func_cb_data); - } - - return connect(sockfd, addr, addrlen); -} - -void ares__close_socket(ares_channel_t *channel, ares_socket_t s) -{ - if (s == ARES_SOCKET_BAD) { - return; - } - - if (channel->sock_funcs && channel->sock_funcs->aclose) { - channel->sock_funcs->aclose(s, channel->sock_func_cb_data); - } else { - sclose(s); - } -} - -#ifndef HAVE_WRITEV -/* Structure for scatter/gather I/O. */ -struct iovec { - void *iov_base; /* Pointer to data. */ - size_t iov_len; /* Length of data. */ -}; -#endif - -ares_ssize_t ares__socket_write(ares_channel_t *channel, ares_socket_t s, - const void *data, size_t len) -{ - if (channel->sock_funcs && channel->sock_funcs->asendv) { - struct iovec vec; - vec.iov_base = (void *)((size_t)data); /* Cast off const */ - vec.iov_len = len; - return channel->sock_funcs->asendv(s, &vec, 1, channel->sock_func_cb_data); - } - return swrite(s, data, len); -} - -void ares_set_socket_callback(ares_channel_t *channel, - ares_sock_create_callback cb, void *data) -{ - if (channel == NULL) { - return; - } - channel->sock_create_cb = cb; - channel->sock_create_cb_data = data; -} - -void ares_set_socket_configure_callback(ares_channel_t *channel, - ares_sock_config_callback cb, - void *data) -{ - if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) { - return; - } - channel->sock_config_cb = cb; - channel->sock_config_cb_data = data; -} - -void ares_set_socket_functions(ares_channel_t *channel, - const struct ares_socket_functions *funcs, - void *data) -{ - if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) { - return; - } - channel->sock_funcs = funcs; - channel->sock_func_cb_data = data; -} diff --git a/lib/c-ares-1.32.3/AUTHORS b/lib/c-ares-1.33.0/AUTHORS similarity index 100% rename from lib/c-ares-1.32.3/AUTHORS rename to lib/c-ares-1.33.0/AUTHORS diff --git a/lib/c-ares-1.32.3/CMakeLists.txt b/lib/c-ares-1.33.0/CMakeLists.txt similarity index 97% rename from lib/c-ares-1.32.3/CMakeLists.txt rename to lib/c-ares-1.33.0/CMakeLists.txt index 2505967d352..d3f69075648 100644 --- a/lib/c-ares-1.32.3/CMakeLists.txt +++ b/lib/c-ares-1.33.0/CMakeLists.txt @@ -12,7 +12,7 @@ INCLUDE (CheckCSourceCompiles) INCLUDE (CheckStructHasMember) INCLUDE (CheckLibraryExists) -PROJECT (c-ares LANGUAGES C VERSION "1.32.3" ) +PROJECT (c-ares LANGUAGES C VERSION "1.33.0" ) # Set this version before release SET (CARES_VERSION "${PROJECT_VERSION}") @@ -30,7 +30,7 @@ INCLUDE (GNUInstallDirs) # include this *AFTER* PROJECT(), otherwise paths are w # For example, a version of 4:0:2 would generate output such as: # libname.so -> libname.so.2 # libname.so.2 -> libname.so.2.2.0 -SET (CARES_LIB_VERSIONINFO "19:3:17") +SET (CARES_LIB_VERSIONINFO "20:0:18") OPTION (CARES_STATIC "Build as a static library" OFF) @@ -42,6 +42,7 @@ OPTION (CARES_BUILD_CONTAINER_TESTS "Build and run container tests (implies CARE OPTION (CARES_BUILD_TOOLS "Build tools" ON) OPTION (CARES_SYMBOL_HIDING "Hide private symbols in shared libraries" OFF) OPTION (CARES_THREADS "Build with thread-safety support" ON) +OPTION (CARES_COVERAGE "Build for code coverage" OFF) SET (CARES_RANDOM_FILE "/dev/urandom" CACHE STRING "Suitable File / Device Path for entropy, such as /dev/urandom") @@ -265,7 +266,7 @@ IF (CMAKE_SYSTEM_NAME STREQUAL "Darwin") ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "Linux") LIST (APPEND SYSFLAGS -D_GNU_SOURCE -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700) ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "SunOS") - LIST (APPEND SYSFLAGS -D__EXTENSIONS__ -D_REENTRANT -D_XOPEN_SOURCE=700) + LIST (APPEND SYSFLAGS -D__EXTENSIONS__ -D_REENTRANT -D_XOPEN_SOURCE=600) ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "AIX") LIST (APPEND SYSFLAGS -D_ALL_SOURCE -D_XOPEN_SOURCE=700 -D_USE_IRS) ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") @@ -409,6 +410,7 @@ CHECK_STRUCT_HAS_MEMBER("struct sockaddr_in6" sin6_scope_id "${CMAKE_EXTRA_INCLU CHECK_SYMBOL_EXISTS (closesocket "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_CLOSESOCKET) CHECK_SYMBOL_EXISTS (CloseSocket "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_CLOSESOCKET_CAMEL) CHECK_SYMBOL_EXISTS (connect "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_CONNECT) +CHECK_SYMBOL_EXISTS (connectx "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_CONNECTX) CHECK_SYMBOL_EXISTS (fcntl "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_FCNTL) CHECK_SYMBOL_EXISTS (freeaddrinfo "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_FREEADDRINFO) CHECK_SYMBOL_EXISTS (getaddrinfo "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_GETADDRINFO) @@ -423,6 +425,10 @@ CHECK_SYMBOL_EXISTS (if_indextoname "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_IF_INDE CHECK_SYMBOL_EXISTS (if_nametoindex "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_IF_NAMETOINDEX) CHECK_SYMBOL_EXISTS (ConvertInterfaceIndexToLuid "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_CONVERTINTERFACEINDEXTOLUID) CHECK_SYMBOL_EXISTS (ConvertInterfaceLuidToNameA "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_CONVERTINTERFACELUIDTONAMEA) +CHECK_SYMBOL_EXISTS (NotifyIpInterfaceChange "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_NOTIFYIPINTERFACECHANGE) +CHECK_SYMBOL_EXISTS (RegisterWaitForSingleObject "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_REGISTERWAITFORSINGLEOBJECT) + + CHECK_SYMBOL_EXISTS (inet_net_pton "${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_INET_NET_PTON) IF (NOT WIN32) # Disabled on Windows, because these functions are only really supported on Windows @@ -682,6 +688,27 @@ IF (HAVE_ARPA_NAMESER_COMPAT_H) SET (CARES_HAVE_ARPA_NAMESER_COMPAT_H 1) ENDIF() + +# Coverage +IF (CARES_COVERAGE) + # set compiler flags + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftest-coverage -fprofile-arcs") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftest-coverage -fprofile-arcs") + + # find required tools + FIND_PROGRAM(LCOV lcov REQUIRED) + FIND_PROGRAM(GENHTML genhtml REQUIRED) + + # add coverage target + ADD_CUSTOM_TARGET(coverage + # gather data + COMMAND ${LCOV} --directory . --capture --output-file coverage.info + # generate report + COMMAND ${GENHTML} --demangle-cpp -o coverage coverage.info + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + ) +ENDIF() + # TRANSFORM_MAKEFILE_INC # # This function consumes the "Makefile.inc" autotools file, and converts it into @@ -729,6 +756,8 @@ IF (CARES_BUILD_TESTS OR CARES_BUILD_CONTAINER_TESTS) ENDIF () + + # Export targets IF (CARES_INSTALL) SET (CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") diff --git a/lib/c-ares-1.32.3/CONTRIBUTING.md b/lib/c-ares-1.33.0/CONTRIBUTING.md similarity index 100% rename from lib/c-ares-1.32.3/CONTRIBUTING.md rename to lib/c-ares-1.33.0/CONTRIBUTING.md diff --git a/lib/c-ares-1.32.3/DEVELOPER-NOTES.md b/lib/c-ares-1.33.0/DEVELOPER-NOTES.md similarity index 100% rename from lib/c-ares-1.32.3/DEVELOPER-NOTES.md rename to lib/c-ares-1.33.0/DEVELOPER-NOTES.md diff --git a/lib/c-ares-1.32.3/INSTALL.md b/lib/c-ares-1.33.0/INSTALL.md similarity index 100% rename from lib/c-ares-1.32.3/INSTALL.md rename to lib/c-ares-1.33.0/INSTALL.md diff --git a/lib/c-ares-1.32.3/LICENSE.md b/lib/c-ares-1.33.0/LICENSE.md similarity index 98% rename from lib/c-ares-1.32.3/LICENSE.md rename to lib/c-ares-1.33.0/LICENSE.md index e27bae933fc..910ddded5c7 100644 --- a/lib/c-ares-1.32.3/LICENSE.md +++ b/lib/c-ares-1.33.0/LICENSE.md @@ -1,5 +1,3 @@ -# c-ares license - MIT License Copyright (c) 1998 Massachusetts Institute of Technology diff --git a/lib/c-ares-1.32.3/Makefile.Watcom b/lib/c-ares-1.33.0/Makefile.Watcom similarity index 68% rename from lib/c-ares-1.32.3/Makefile.Watcom rename to lib/c-ares-1.33.0/Makefile.Watcom index f6eb7c070b2..96ffedb1eb3 100644 --- a/lib/c-ares-1.32.3/Makefile.Watcom +++ b/lib/c-ares-1.33.0/Makefile.Watcom @@ -97,7 +97,19 @@ all: $(ARESBUILDH) $(OBJ_BASE) $(TARGETS) $(DEMOS) .SYMBOLIC $(OBJ_BASE): -$(MD) $^@ -$(MD) $^@\stat + -$(MD) $^@\stat\dsa + -$(MD) $^@\stat\event + -$(MD) $^@\stat\legacy + -$(MD) $^@\stat\record + -$(MD) $^@\stat\str + -$(MD) $^@\stat\util -$(MD) $^@\dyn + -$(MD) $^@\dyn\dsa + -$(MD) $^@\dyn\event + -$(MD) $^@\dyn\legacy + -$(MD) $^@\dyn\record + -$(MD) $^@\dyn\str + -$(MD) $^@\dyn\util -$(MD) $^@\tools $(ARESBUILDH): .EXISTSONLY @@ -129,7 +141,19 @@ vclean realclean: clean .SYMBOLIC -$(RM) $(TARGETS) $(LIBNAME).map -$(RM) $(DEMOS) $(DEMOS:.exe=.map) -$(RD) $(OBJ_BASE)\stat + -$(RD) $(OBJ_BASE)\stat\dsa + -$(RD) $(OBJ_BASE)\stat\event + -$(RD) $(OBJ_BASE)\stat\legacy + -$(RD) $(OBJ_BASE)\stat\record + -$(RD) $(OBJ_BASE)\stat\str + -$(RD) $(OBJ_BASE)\stat\util -$(RD) $(OBJ_BASE)\dyn + -$(RD) $(OBJ_BASE)\dyn\dsa + -$(RD) $(OBJ_BASE)\dyn\event + -$(RD) $(OBJ_BASE)\dyn\legacy + -$(RD) $(OBJ_BASE)\dyn\record + -$(RD) $(OBJ_BASE)\dyn\str + -$(RD) $(OBJ_BASE)\dyn\util -$(RD) $(OBJ_BASE)\tools -$(RD) $(OBJ_BASE) @@ -144,10 +168,58 @@ $(RESOURCE): src\lib\cares.rc .AUTODEPEND .c{$(OBJ_BASE)\dyn}.obj: $(CC) $(CFLAGS) -bd .\src\lib\$^& -fo=$^@ +.ERASE +{dsa}.c{$(OBJ_BASE)\dyn\dsa}.obj: + $(CC) $(CFLAGS) -bd .\src\lib\dsa\$^& -fo=$^@ + +.ERASE +{event}.c{$(OBJ_BASE)\dyn\event}.obj: + $(CC) $(CFLAGS) -bd .\src\lib\event\$^& -fo=$^@ + +.ERASE +{legacy}.c{$(OBJ_BASE)\dyn\legacy}.obj: + $(CC) $(CFLAGS) -bd .\src\lib\legacy\$^& -fo=$^@ + +.ERASE +{record}.c{$(OBJ_BASE)\dyn\record}.obj: + $(CC) $(CFLAGS) -bd .\src\lib\record\$^& -fo=$^@ + +.ERASE +{str}.c{$(OBJ_BASE)\dyn\str}.obj: + $(CC) $(CFLAGS) -bd .\src\lib\str\$^& -fo=$^@ + +.ERASE +{util}.c{$(OBJ_BASE)\dyn\util}.obj: + $(CC) $(CFLAGS) -bd .\src\lib\util\$^& -fo=$^@ + .ERASE .c{$(OBJ_BASE)\stat}.obj: $(CC) $(CFLAGS) -DCARES_STATICLIB .\src\lib\$^& -fo=$^@ +.ERASE +{dsa}.c{$(OBJ_BASE)\stat\dsa}.obj: + $(CC) $(CFLAGS) -DCARES_STATICLIB .\src\lib\dsa\$^& -fo=$^@ + +.ERASE +{event}.c{$(OBJ_BASE)\stat\event}.obj: + $(CC) $(CFLAGS) -DCARES_STATICLIB .\src\lib\event\$^& -fo=$^@ + +.ERASE +{legacy}.c{$(OBJ_BASE)\stat\legacy}.obj: + $(CC) $(CFLAGS) -DCARES_STATICLIB .\src\lib\legacy\$^& -fo=$^@ + +.ERASE +{record}.c{$(OBJ_BASE)\stat\record}.obj: + $(CC) $(CFLAGS) -DCARES_STATICLIB .\src\lib\record\$^& -fo=$^@ + +.ERASE +{str}.c{$(OBJ_BASE)\stat\str}.obj: + $(CC) $(CFLAGS) -DCARES_STATICLIB .\src\lib\str\$^& -fo=$^@ + +.ERASE +{util}.c{$(OBJ_BASE)\stat\util}.obj: + $(CC) $(CFLAGS) -DCARES_STATICLIB .\src\lib\util\$^& -fo=$^@ + $(LINK_ARG): $(__MAKEFILES__) %create $^@ @%append $^@ system nt dll diff --git a/lib/c-ares-1.32.3/Makefile.am b/lib/c-ares-1.33.0/Makefile.am similarity index 98% rename from lib/c-ares-1.32.3/Makefile.am rename to lib/c-ares-1.33.0/Makefile.am index 6c71f4d77d8..e99161a45f7 100644 --- a/lib/c-ares-1.32.3/Makefile.am +++ b/lib/c-ares-1.33.0/Makefile.am @@ -22,7 +22,7 @@ AUTOMAKE_OPTIONS = foreign nostdinc 1.9.6 ACLOCAL_AMFLAGS = -I m4 --install -MSVCFILES = msvc_ver.inc buildconf.bat +MSVCFILES = buildconf.bat # adig and ahost are just sample programs and thus not mentioned with the # regular sources and headers diff --git a/lib/c-ares-1.32.3/Makefile.dj b/lib/c-ares-1.33.0/Makefile.dj similarity index 86% rename from lib/c-ares-1.32.3/Makefile.dj rename to lib/c-ares-1.33.0/Makefile.dj index c28aefe9e22..69b3ca31851 100644 --- a/lib/c-ares-1.32.3/Makefile.dj +++ b/lib/c-ares-1.33.0/Makefile.dj @@ -5,8 +5,14 @@ # include src/lib/Makefile.inc -CSOURCES := $(addprefix src/lib/, $(CSOURCES)) -CSOURCES := $(filter-out src/lib/windows_port.c, $(CSOURCES)) +OBJ_DIR = djgpp +OBJECTS = $(addprefix $(OBJ_DIR)/, \ + $(CSOURCES:.c=.o)) + +CSRC = $(addprefix src/lib/, $(CSOURCES)) +#CSRC := $(filter-out src/lib/windows_port.c, $(CSOURCES)) + +OBJ_SUBDIRS = $(OBJ_DIR)/dsa $(OBJ_DIR)/event $(OBJ_DIR)/legacy $(OBJ_DIR)/record $(OBJ_DIR)/str $(OBJ_DIR)/util VPATH = src/lib src/tools @@ -17,8 +23,6 @@ VPATH = src/lib src/tools WATT32_ROOT = $(realpath $(WATT_ROOT)) WATT32_LIB = $(WATT32_ROOT)/lib/libwatt.a -OBJ_DIR = djgpp - CFLAGS = -g -O2 -I./include -I./src/lib \ -I$(WATT32_ROOT)/inc \ -Wall \ @@ -82,9 +86,6 @@ else CC = gcc endif -OBJECTS = $(addprefix $(OBJ_DIR)/, \ - $(notdir $(CSOURCES:.c=.o))) - GENERATED = src/lib/ares_config.h \ include/ares_build.h @@ -92,7 +93,7 @@ TARGETS = libcares.a adig.exe ahost.exe .SECONDARY: $(OBJ_DIR)/ares_getopt.o -all: $(OBJ_DIR) $(GENERATED) $(TARGETS) +all: $(OBJ_DIR) $(OBJ_SUBDIRS) $(GENERATED) $(TARGETS) @echo Welcome to c-ares. libcares.a: $(OBJECTS) @@ -111,15 +112,19 @@ include/ares_build.h: include/ares_build.h.dist # clean: - rm -f depend.dj $(GENERATED) $(OBJ_DIR)/*.o - - rmdir $(OBJ_DIR) + - rmdir $(OBJ_SUBDIRS) # Clean everything # realclean vclean: clean - rm -f $(TARGETS) $(TARGETS:.exe=.map) -$(OBJ_DIR): - - mkdir $@ +.PHONY: obj_subdirs $(OBJ_SUBDIRS) + +obj_subdirs: $(OBJ_SUBDIRS) + +$(OBJ_SUBDIRS): + mkdir $@ $(OBJ_DIR)/%.o: %.c $(CC) $(CFLAGS) -o $@ -c $< @@ -138,7 +143,7 @@ DEP_REPLACE = sed -e 's@\(.*\)\.o: @\n$$(OBJ_DIR)\/\1.o: @' \ # a foreign 'curl_config.h' is making trouble. # depend: $(GENERATED) Makefile.dj - $(CC) -MM $(CFLAGS) $(CSOURCES) | $(DEP_REPLACE) > depend.dj + $(CC) -MM $(CFLAGS) $(CSRC) | $(DEP_REPLACE) > depend.dj -include depend.dj diff --git a/lib/c-ares-1.32.3/Makefile.in b/lib/c-ares-1.33.0/Makefile.in similarity index 96% rename from lib/c-ares-1.32.3/Makefile.in rename to lib/c-ares-1.33.0/Makefile.in index 7b5a962b8cc..4feaae7267c 100644 --- a/lib/c-ares-1.32.3/Makefile.in +++ b/lib/c-ares-1.33.0/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. +# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2021 Free Software Foundation, Inc. +# Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -91,6 +91,8 @@ am__make_running_with_option = \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -194,10 +196,9 @@ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ + { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(pkgconfigdir)" DATA = $(pkgconfig_DATA) @@ -238,8 +239,8 @@ distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ + find "$(distdir)" -type d ! -perm -700 -exec chmod u+rwx {} ';' \ + ; rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) @@ -269,14 +270,16 @@ am__relativize = \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best +GZIP_ENV = -9 DIST_TARGETS = dist-gzip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print +distcleancheck_listfiles = \ + find . \( -type f -a \! \ + \( -name .nfs* -o -name .smb* -o -name .__afs* \) \) -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ @@ -387,8 +390,10 @@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ @@ -435,7 +440,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign nostdinc 1.9.6 ACLOCAL_AMFLAGS = -I m4 --install -MSVCFILES = msvc_ver.inc buildconf.bat +MSVCFILES = buildconf.bat # adig and ahost are just sample programs and thus not mentioned with the # regular sources and headers @@ -634,7 +639,7 @@ distdir: $(BUILT_SOURCES) distdir-am: $(DISTFILES) $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" + $(AM_V_at)$(MKDIR_P) "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -748,7 +753,7 @@ dist dist-all: distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ @@ -758,7 +763,7 @@ distcheck: dist *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + eval GZIP= gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ @@ -859,12 +864,12 @@ install-strip: mostlyclean-generic: clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + -$(am__rm_f) $(CLEANFILES) distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + -$(am__rm_f) $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -973,3 +978,10 @@ dist-hook: # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/lib/c-ares-1.32.3/Makefile.m32 b/lib/c-ares-1.33.0/Makefile.m32 similarity index 100% rename from lib/c-ares-1.32.3/Makefile.m32 rename to lib/c-ares-1.33.0/Makefile.m32 diff --git a/lib/c-ares-1.32.3/Makefile.msvc b/lib/c-ares-1.33.0/Makefile.msvc similarity index 85% rename from lib/c-ares-1.32.3/Makefile.msvc rename to lib/c-ares-1.33.0/Makefile.msvc index 4b338f27999..619c2d39274 100644 --- a/lib/c-ares-1.32.3/Makefile.msvc +++ b/lib/c-ares-1.33.0/Makefile.msvc @@ -75,11 +75,6 @@ RTLIBD = /MTd USE_WATT32 = 0 !ENDIF -# -------------------------------------------------------- -# Detect compiler version. -# -------------------------------------------------------- -!INCLUDE .\msvc_ver.inc - # ---------------------------------------------------- # Verify that current subdir is the c-ares source one # ---------------------------------------------------- @@ -190,30 +185,13 @@ EX_LIBS_REL = ws2_32.lib advapi32.lib kernel32.lib iphlpapi.lib EX_LIBS_DBG = ws2_32.lib advapi32.lib kernel32.lib iphlpapi.lib !ENDIF -# ------------------------------------------------- -# Switches that depend on ancient compiler versions -# ------------------------------------------------- - -!IF $(CC_VERS_NUM) == 60 -PDB_NONE = /pdb:none -PDBTYPE_CONSOLIDATE = /pdbtype:consolidate -!ELSE -!UNDEF PDB_NONE -!UNDEF PDBTYPE_CONSOLIDATE -!ENDIF - -!IF $(CC_VERS_NUM) <= 70 -RT_ERROR_CHECKING = /GZ -!ELSE -RT_ERROR_CHECKING = /RTCsu -!ENDIF # ---------------------------- # Assorted commands and flags # ---------------------------- CC_CMD_REL = cl.exe /nologo $(RTLIB) /DNDEBUG /O2 -CC_CMD_DBG = cl.exe /nologo $(RTLIBD) /D_DEBUG /Od /Zi $(RT_ERROR_CHECKING) +CC_CMD_DBG = cl.exe /nologo $(RTLIBD) /D_DEBUG /Od /Zi /RTCsu CC_CFLAGS = $(CFLAGS) /D_REENTRANT /I.\src\lib /I.\include /W3 /EHsc /FD RC_CMD_REL = rc.exe /l 0x409 /d "NDEBUG" @@ -223,8 +201,8 @@ LINK_CMD_LIB = link.exe /lib /nologo LINK_CMD_DLL = link.exe /dll /nologo /incremental:no /fixed:no LINK_CMD_EXE = link.exe /nologo /incremental:no /fixed:no /subsystem:console -LINK_CMD_EXE_REL = $(LINK_CMD_EXE) /release $(PDB_NONE) -LINK_CMD_EXE_DBG = $(LINK_CMD_EXE) /debug $(PDBTYPE_CONSOLIDATE) +LINK_CMD_EXE_REL = $(LINK_CMD_EXE) /release +LINK_CMD_EXE_DBG = $(LINK_CMD_EXE) /debug # --------------------------------- # Configuration dependent settings @@ -255,7 +233,7 @@ CC_CMD = $(CC_CMD_DBG) !IF "$(CFG)" == "dll-release" CARES_TARGET = $(DYN_LIB_REL).dll CARES_CFLAGS = /DCARES_BUILDING_LIBRARY -CARES_LFLAGS = /release $(EX_LIBS_REL) /implib:$(CARES_OUTDIR)\$(IMP_LIB_REL).lib $(PDB_NONE) +CARES_LFLAGS = /release $(EX_LIBS_REL) /implib:$(CARES_OUTDIR)\$(IMP_LIB_REL).lib SPROG_CFLAGS = /DCARES_NO_DEPRECATED SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_REL) $(IMP_LIB_REL).lib CARES_LINK = $(LINK_CMD_DLL) @@ -268,7 +246,7 @@ RC_CMD = $(RC_CMD_REL) !IF "$(CFG)" == "dll-debug" CARES_TARGET = $(DYN_LIB_DBG).dll CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DDEBUGBUILD -CARES_LFLAGS = /debug $(EX_LIBS_DBG) /implib:$(CARES_OUTDIR)\$(IMP_LIB_DBG).lib /pdb:$(CARES_OUTDIR)\$(DYN_LIB_DBG).pdb $(PDBTYPE_CONSOLIDATE) +CARES_LFLAGS = /debug $(EX_LIBS_DBG) /implib:$(CARES_OUTDIR)\$(IMP_LIB_DBG).lib /pdb:$(CARES_OUTDIR)\$(DYN_LIB_DBG).pdb SPROG_CFLAGS = /DCARES_NO_DEPRECATED SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_DBG) $(IMP_LIB_DBG).lib CARES_LINK = $(LINK_CMD_DLL) @@ -299,6 +277,7 @@ RC_CMD = $(RC_CMD_DBG) !ERROR Problem generating CARES_OBJS list. !ENDIF CARES_OBJS = $(CARES_OBJS:.c=.obj) +CARES_OBJS = $(CARES_OBJS:/=\) !IF "$(USE_RES_FILE)" == "TRUE" CARES_OBJS = $(CARES_OBJS) $(CARES_OBJDIR)\cares.res !ENDIF @@ -341,20 +320,38 @@ PROG3_OBJS = $(PROG3_OBJS) $(PROG3_OBJDIR)\ahost.obj {$(SRCDIR)\src\lib}.c{$(CARES_OBJDIR)}.obj: $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< +{$(SRCDIR)\src\lib\dsa}.c{$(CARES_OBJDIR)\dsa}.obj: + $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< + +{$(SRCDIR)\src\lib\event}.c{$(CARES_OBJDIR)\event}.obj: + $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< + +{$(SRCDIR)\src\lib\legacy}.c{$(CARES_OBJDIR)\legacy}.obj: + $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< + +{$(SRCDIR)\src\lib\record}.c{$(CARES_OBJDIR)\record}.obj: + $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< + +{$(SRCDIR)\src\lib\str}.c{$(CARES_OBJDIR)\str}.obj: + $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< + +{$(SRCDIR)\src\lib\util}.c{$(CARES_OBJDIR)\util}.obj: + $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< + {$(SRCDIR)\src\tools}.c{$(PROG2_OBJDIR)}.obj: - $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< + $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(PROG2_OBJDIR)\ /c $< {$(SRCDIR)\src\tools}.c{$(PROG3_OBJDIR)}.obj: - $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $< + $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(PROG3_OBJDIR)\ /c $< -# Hack Alert! we reference ../lib/ files in the Makefile.inc for tools as they +# Hack Alert! we reference ../lib/str files in the Makefile.inc for tools as they # share some files with the library itself. We need to hack around that here. -{$(SRCDIR)\src\lib}.c{$(PROG2_OBJDIR)\..\lib}.obj: - $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$(PROG2_OBJDIR)\$(@F) /Fd$(PROG2_OBJDIR)\ /c $< +{$(SRCDIR)\src\lib\str}.c{$(PROG2_OBJDIR)\..\lib\str}.obj: + $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$(PROG2_OBJDIR)\str\$(@F) /Fd$(PROG2_OBJDIR)\str\ /c $< -{$(SRCDIR)\src\lib}.c{$(PROG3_OBJDIR)\..\lib}.obj: - $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$(PROG3_OBJDIR)\$(@F) /Fd$(PROG3_OBJDIR)\ /c $< +{$(SRCDIR)\src\lib\str}.c{$(PROG3_OBJDIR)\..\lib\str}.obj: + $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$(PROG3_OBJDIR)\str\$(@F) /Fd$(PROG3_OBJDIR)\str\ /c $< # ------------------------------------------------------------- # # ------------------------------------------------------------- # @@ -419,16 +416,32 @@ $(PROG3_OUTDIR): $(PROG3_DIR) $(CARES_OBJDIR): $(CARES_OUTDIR) @if not exist $(CARES_OBJDIR) mkdir $(CARES_OBJDIR) + @if not exist $(CARES_OBJDIR)\dsa mkdir $(CARES_OBJDIR)\dsa + @if not exist $(CARES_OBJDIR)\event mkdir $(CARES_OBJDIR)\event + @if not exist $(CARES_OBJDIR)\legacy mkdir $(CARES_OBJDIR)\legacy + @if not exist $(CARES_OBJDIR)\record mkdir $(CARES_OBJDIR)\record + @if not exist $(CARES_OBJDIR)\str mkdir $(CARES_OBJDIR)\str + @if not exist $(CARES_OBJDIR)\util mkdir $(CARES_OBJDIR)\util $(PROG2_OBJDIR): $(PROG2_OUTDIR) @if not exist $(PROG2_OBJDIR) mkdir $(PROG2_OBJDIR) + @if not exist $(PROG2_OBJDIR)\str mkdir $(PROG2_OBJDIR)\str $(PROG3_OBJDIR): $(PROG3_OUTDIR) @if not exist $(PROG3_OBJDIR) mkdir $(PROG3_OBJDIR) + @if not exist $(PROG3_OBJDIR)\str mkdir $(PROG3_OBJDIR)\str clean: + @-RMDIR /S /Q $(CARES_OBJDIR)\dsa >NUL 2>&1 + @-RMDIR /S /Q $(CARES_OBJDIR)\event >NUL 2>&1 + @-RMDIR /S /Q $(CARES_OBJDIR)\legacy >NUL 2>&1 + @-RMDIR /S /Q $(CARES_OBJDIR)\record >NUL 2>&1 + @-RMDIR /S /Q $(CARES_OBJDIR)\str >NUL 2>&1 + @-RMDIR /S /Q $(CARES_OBJDIR)\util >NUL 2>&1 @-RMDIR /S /Q $(CARES_OUTDIR) >NUL 2>&1 + @-RMDIR /S /Q $(PROG2_OBJDIR)\str >NUL 2>&1 @-RMDIR /S /Q $(PROG2_OUTDIR) >NUL 2>&1 + @-RMDIR /S /Q $(PROG3_OBJDIR)\str >NUL 2>&1 @-RMDIR /S /Q $(PROG3_OUTDIR) >NUL 2>&1 install: diff --git a/lib/c-ares-1.32.3/Makefile.netware b/lib/c-ares-1.33.0/Makefile.netware similarity index 100% rename from lib/c-ares-1.32.3/Makefile.netware rename to lib/c-ares-1.33.0/Makefile.netware diff --git a/lib/c-ares-1.32.3/README.md b/lib/c-ares-1.33.0/README.md similarity index 66% rename from lib/c-ares-1.32.3/README.md rename to lib/c-ares-1.33.0/README.md index 86b25bc3159..c32d0677c83 100644 --- a/lib/c-ares-1.32.3/README.md +++ b/lib/c-ares-1.33.0/README.md @@ -8,6 +8,14 @@ [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=c-ares_c-ares&metric=bugs)](https://sonarcloud.io/summary/new_code?id=c-ares_c-ares) [![Coverity Scan Status](https://scan.coverity.com/projects/c-ares/badge.svg)](https://scan.coverity.com/projects/c-ares) +- [Overview](#overview) +- [Code](#code) +- [Communication](#communication) +- [Release Keys](#release-keys) + - [Verifying signatures](#verifying-signatures) +- [Features](#features) + - [RFCs and Proposals](#supported-rfcs-and-proposals) + ## Overview [c-ares](https://c-ares.org) is a modern DNS (stub) resolver library, written in C. It provides interfaces for asynchronous queries while trying to abstract the @@ -99,3 +107,47 @@ gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 27ED EAF2 2F3A BCEB 50DB 9A12 5CC9 08FD B71E 12C2 gpg: binary signature, digest algorithm SHA512, key algorithm rsa2048 ``` + +## Features +### Supported RFCs and Proposals +- [RFC1035](https://datatracker.ietf.org/doc/html/rfc7873). + Initial/Base DNS RFC +- [RFC2671](https://datatracker.ietf.org/doc/html/rfc2671), + [RFC6891](https://datatracker.ietf.org/doc/html/rfc6891). + EDNS0 option (meta-RR) +- [RFC3596](https://datatracker.ietf.org/doc/html/rfc3596). + IPv6 Address. `AAAA` Record. +- [RFC2782](https://datatracker.ietf.org/doc/html/rfc2782). + Server Selection. `SRV` Record. +- [RFC3403](https://datatracker.ietf.org/doc/html/rfc3403). + Naming Authority Pointer. `NAPTR` Record. +- [RFC6698](https://datatracker.ietf.org/doc/html/rfc6698). + DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol. + `TLSA` Record. +- [RFC9460](https://datatracker.ietf.org/doc/html/rfc9460). + General Purpose Service Binding, Service Binding type for use with HTTPS. + `SVCB` and `HTTPS` Records. +- [RFC7553](https://datatracker.ietf.org/doc/html/rfc7553). + Uniform Resource Identifier. `URI` Record. +- [RFC6844](https://datatracker.ietf.org/doc/html/rfc6844). + Certification Authority Authorization. `CAA` Record. +- [RFC2535](https://datatracker.ietf.org/doc/html/rfc2535), + [RFC2931](https://datatracker.ietf.org/doc/html/rfc2931). + `SIG0` Record. Only basic parser, not full implementation. +- [RFC7873](https://datatracker.ietf.org/doc/html/rfc7873), + [RFC9018](https://datatracker.ietf.org/doc/html/rfc9018). + DNS Cookie off-path dns poisoning and amplification mitigation. +- [draft-vixie-dnsext-dns0x20-00](https://datatracker.ietf.org/doc/html/draft-vixie-dnsext-dns0x20-00). + DNS 0x20 query name case randomization to prevent cache poisioning attacks. +- [RFC7686](https://datatracker.ietf.org/doc/html/rfc7686). + Reject queries for `.onion` domain names with `NXDOMAIN`. +- [RFC2606](https://datatracker.ietf.org/doc/html/rfc2606), + [RFC6761](https://datatracker.ietf.org/doc/html/rfc6761). + Special case treatment for `localhost`/`.localhost`. +- [RFC2308](https://datatracker.ietf.org/doc/html/rfc2308), + [RFC9520](https://datatracker.ietf.org/doc/html/rfc9520). + Negative Caching of DNS Resolution Failures. +- [RFC6724](https://datatracker.ietf.org/doc/html/rfc6724). + IPv6 address sorting as used by `ares_getaddrinfo()`. +- [RFC7413](https://datatracker.ietf.org/doc/html/rfc7413). + TCP FastOpen (TFO) for 0-RTT TCP Connection Resumption. diff --git a/lib/c-ares-1.32.3/README.msvc b/lib/c-ares-1.33.0/README.msvc similarity index 100% rename from lib/c-ares-1.32.3/README.msvc rename to lib/c-ares-1.33.0/README.msvc diff --git a/lib/c-ares-1.33.0/RELEASE-NOTES.md b/lib/c-ares-1.33.0/RELEASE-NOTES.md new file mode 100644 index 00000000000..b072feb29fd --- /dev/null +++ b/lib/c-ares-1.33.0/RELEASE-NOTES.md @@ -0,0 +1,33 @@ +## c-ares version 1.33.0 - August 2 2024 + +This is a feature and bugfix release. + +Features: +* Add DNS cookie support (RFC7873 + RFC9018) to help prevent off-path cache + poisoning attacks. [PR #833](https://github.com/c-ares/c-ares/pull/833) +* Implement TCP FastOpen (TFO) RFC7413, which will make TCP reconnects 0-RTT + on supported systems. [PR #840](https://github.com/c-ares/c-ares/pull/840) + +Changes: +* Reorganize source tree. [PR #822](https://github.com/c-ares/c-ares/pull/822) +* Refactoring of connection handling to prevent code duplication. + [PR #839](https://github.com/c-ares/c-ares/pull/839) +* New dynamic array data structure to prevent simple logic flaws in array + handling in various code paths. + [PR #841](https://github.com/c-ares/c-ares/pull/841) + +Bugfixes: +* `ares_destroy()` race condition during shutdown due to missing lock. + [PR #831](https://github.com/c-ares/c-ares/pull/831) +* Android: Preserve thread name after attaching it to JVM. + [PR #838](https://github.com/c-ares/c-ares/pull/838) +* Windows UWP (Store) support fix. + [PR #845](https://github.com/c-ares/c-ares/pull/845) + + +Thanks go to these friendly people for their efforts and contributions for this +release: + +* Brad House (@bradh352) +* Yauheni Khnykin (@Hsilgos) + diff --git a/lib/c-ares-1.32.3/SECURITY.md b/lib/c-ares-1.33.0/SECURITY.md similarity index 100% rename from lib/c-ares-1.32.3/SECURITY.md rename to lib/c-ares-1.33.0/SECURITY.md diff --git a/lib/c-ares-1.32.3/aclocal.m4 b/lib/c-ares-1.33.0/aclocal.m4 similarity index 78% rename from lib/c-ares-1.32.3/aclocal.m4 rename to lib/c-ares-1.33.0/aclocal.m4 index dc4eb963d54..68e283c8e59 100644 --- a/lib/c-ares-1.32.3/aclocal.m4 +++ b/lib/c-ares-1.33.0/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.5 -*- Autoconf -*- +# generated automatically by aclocal 1.17 -*- Autoconf -*- -# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# Copyright (C) 1996-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,7 @@ You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2021 Free Software Foundation, Inc. +# Copyright (C) 2002-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.]) # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.16' +[am__api_version='1.17' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.16.5], [], +m4_if([$1], [1.17], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.16.5])dnl +[AM_AUTOMAKE_VERSION([1.17])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` # AM_COND_IF -*- Autoconf -*- -# Copyright (C) 2008-2021 Free Software Foundation, Inc. +# Copyright (C) 2008-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -147,7 +147,7 @@ fi[]dnl # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2021 Free Software Foundation, Inc. +# Copyright (C) 1997-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -178,7 +178,7 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# Copyright (C) 1999-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -310,7 +310,7 @@ AC_CACHE_CHECK([dependency style of $depcc], # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: + # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported @@ -369,7 +369,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# Copyright (C) 1999-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -437,7 +437,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# Copyright (C) 1996-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -571,7 +571,7 @@ if test -z "$CSCOPE"; then fi AC_SUBST([CSCOPE]) -AC_REQUIRE([AM_SILENT_RULES])dnl +AC_REQUIRE([_AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. @@ -579,47 +579,9 @@ AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. +AC_REQUIRE([_AM_PROG_RM_F]) +AC_REQUIRE([_AM_PROG_XARGS_N]) -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. @@ -652,7 +614,7 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -673,7 +635,7 @@ if test x"${install_sh+set}" != xset; then fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2021 Free Software Foundation, Inc. +# Copyright (C) 2003-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -695,7 +657,7 @@ AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# Copyright (C) 1996-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -730,7 +692,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -773,7 +735,7 @@ AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2021 Free Software Foundation, Inc. +# Copyright (C) 1997-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -807,7 +769,7 @@ fi # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -836,7 +798,7 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# Copyright (C) 1999-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -883,7 +845,23 @@ AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# Copyright (C) 2022-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_RM_F +# --------------- +# Check whether 'rm -f' without any arguments works. +# https://bugs.gnu.org/10828 +AC_DEFUN([_AM_PROG_RM_F], +[am__rm_f_notfound= +AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) +AC_SUBST(am__rm_f_notfound) +]) + +# Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -902,16 +880,169 @@ AC_DEFUN([AM_RUN_LOG], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# Copyright (C) 1996-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# _AM_SLEEP_FRACTIONAL_SECONDS +# ---------------------------- +AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl +AC_CACHE_CHECK([whether sleep supports fractional seconds], + am_cv_sleep_fractional_seconds, [dnl +AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes], + [am_cv_sleep_fractional_seconds=no]) +])]) + +# _AM_FILESYSTEM_TIMESTAMP_RESOLUTION +# ----------------------------------- +# Determine the filesystem's resolution for file modification +# timestamps. The coarsest we know of is FAT, with a resolution +# of only two seconds, even with the most recent "exFAT" extensions. +# The finest (e.g. ext4 with large inodes, XFS, ZFS) is one +# nanosecond, matching clock_gettime. However, it is probably not +# possible to delay execution of a shell script for less than one +# millisecond, due to process creation overhead and scheduling +# granularity, so we don't check for anything finer than that. (See below.) +AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl +AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS]) +AC_CACHE_CHECK([filesystem timestamp resolution], + am_cv_filesystem_timestamp_resolution, [dnl +# Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `[ls -t conftest.ts[12]]` && + { + test "$[]*" != "X conftest.ts1 conftest.ts2" || + test "$[]*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + _AS_ECHO_UNQUOTED( + ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""], + [AS_MESSAGE_LOG_FD]) + AC_MSG_FAILURE([ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment.]) +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$[]2" = conftest.ts3 && + test "$[]3" = conftest.ts2 && + test "$[]4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) +])]) + # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) +[AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION]) +# This check should not be cached, as it may vary across builds of +# different projects. +AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -930,49 +1061,40 @@ esac # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken - alias in your environment]) - fi - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[]*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$[]2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +AC_MSG_RESULT([$am_build_env_is_sane]) +if test "$am_build_env_is_sane" = no; then + AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi -AC_MSG_RESULT([yes]) + # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & +AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl + ( sleep "$am_cv_filesystem_timestamp_resolution" ) & am_sleep_pid=$! -fi +]) AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then @@ -983,18 +1105,18 @@ AC_CONFIG_COMMANDS_PRE( rm -f conftest.file ]) -# Copyright (C) 2009-2021 Free Software Foundation, Inc. +# Copyright (C) 2009-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl +# _AM_SILENT_RULES +# ---------------- +# Enable less verbose build rules support. +AC_DEFUN([_AM_SILENT_RULES], +[AM_DEFAULT_VERBOSITY=1 +AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) @@ -1002,11 +1124,6 @@ AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. @@ -1025,14 +1142,6 @@ am__doit: else am_cv_make_support_nested_variables=no fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl @@ -1041,9 +1150,33 @@ AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls +dnl to AM_SILENT_RULES to change the default value. +AC_CONFIG_COMMANDS_PRE([dnl +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +])dnl ]) -# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Set the default verbosity level to DEFAULT ("yes" being less verbose, "no" or +# empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_REQUIRE([_AM_SILENT_RULES]) +AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])]) + +# Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1071,7 +1204,7 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2021 Free Software Foundation, Inc. +# Copyright (C) 2006-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1090,7 +1223,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2021 Free Software Foundation, Inc. +# Copyright (C) 2004-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1136,15 +1269,19 @@ m4_if([$1], [v7], am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) + if test x$am_uid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work]) + elif test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) else - AC_MSG_RESULT([no]) - _am_tools=none + AC_MSG_RESULT([no]) + _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) + if test x$gm_gid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work]) + elif test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none @@ -1221,6 +1358,26 @@ AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR +# Copyright (C) 2022-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_XARGS_N +# ---------------- +# Check whether 'xargs -n' works. It should work everywhere, so the fallback +# is not optimized at all as we never expect to use it. +AC_DEFUN([_AM_PROG_XARGS_N], +[AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl +AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])]) +AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl + am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }' +])dnl +AC_SUBST(am__xargs_n) +]) + m4_include([m4/ax_ac_append_to_file.m4]) m4_include([m4/ax_ac_print_to_file.m4]) m4_include([m4/ax_add_am_macro_static.m4]) diff --git a/lib/c-ares-1.32.3/aminclude_static.am b/lib/c-ares-1.33.0/aminclude_static.am similarity index 99% rename from lib/c-ares-1.32.3/aminclude_static.am rename to lib/c-ares-1.33.0/aminclude_static.am index d542444c4e2..436bfe5a5be 100644 --- a/lib/c-ares-1.32.3/aminclude_static.am +++ b/lib/c-ares-1.33.0/aminclude_static.am @@ -1,6 +1,6 @@ # aminclude_static.am generated automatically by Autoconf -# from AX_AM_MACROS_STATIC on Wed Jul 24 05:40:58 EDT 2024 +# from AX_AM_MACROS_STATIC on Fri Aug 2 08:48:39 EDT 2024 # Code coverage diff --git a/lib/c-ares-1.32.3/buildconf b/lib/c-ares-1.33.0/buildconf similarity index 100% rename from lib/c-ares-1.32.3/buildconf rename to lib/c-ares-1.33.0/buildconf diff --git a/lib/c-ares-1.32.3/buildconf.bat b/lib/c-ares-1.33.0/buildconf.bat similarity index 100% rename from lib/c-ares-1.32.3/buildconf.bat rename to lib/c-ares-1.33.0/buildconf.bat diff --git a/lib/c-ares-1.32.3/c-ares-config.cmake.in b/lib/c-ares-1.33.0/c-ares-config.cmake.in similarity index 100% rename from lib/c-ares-1.32.3/c-ares-config.cmake.in rename to lib/c-ares-1.33.0/c-ares-config.cmake.in diff --git a/lib/c-ares-1.32.3/cmake/EnableWarnings.cmake b/lib/c-ares-1.33.0/cmake/EnableWarnings.cmake similarity index 100% rename from lib/c-ares-1.32.3/cmake/EnableWarnings.cmake rename to lib/c-ares-1.33.0/cmake/EnableWarnings.cmake diff --git a/lib/c-ares-1.32.3/config/compile b/lib/c-ares-1.33.0/config/compile similarity index 95% rename from lib/c-ares-1.32.3/config/compile rename to lib/c-ares-1.33.0/config/compile index df363c8fbfb..49b3d05fde4 100755 --- a/lib/c-ares-1.32.3/config/compile +++ b/lib/c-ares-1.33.0/config/compile @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2018-03-07.03; # UTC +scriptversion=2024-06-19.01; # UTC -# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# Copyright (C) 1999-2024 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -143,7 +143,7 @@ func_cl_wrapper () # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in - *.o | *.[oO][bB][jJ]) + *.o | *.lo | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift @@ -248,14 +248,17 @@ If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . +GNU Automake home page: . +General help using GNU software: . EOF exit $? ;; -v | --v*) - echo "compile $scriptversion" + echo "compile (GNU Automake) $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + clang-cl | *[/\\]clang-cl | clang-cl.exe | *[/\\]clang-cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; diff --git a/lib/c-ares-1.32.3/config/config.guess b/lib/c-ares-1.33.0/config/config.guess similarity index 99% rename from lib/c-ares-1.32.3/config/config.guess rename to lib/c-ares-1.33.0/config/config.guess index cdfc4392047..f6d217a49f8 100755 --- a/lib/c-ares-1.32.3/config/config.guess +++ b/lib/c-ares-1.33.0/config/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2023 Free Software Foundation, Inc. +# Copyright 1992-2024 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2023-08-22' +timestamp='2024-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -60,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2023 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -165,6 +165,8 @@ Linux|GNU|GNU/*) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm #else #include /* First heuristic to detect musl libc. */ @@ -1593,6 +1595,9 @@ EOF *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; esac # Do we have a guess based on uname results? diff --git a/lib/c-ares-1.32.3/config/config.sub b/lib/c-ares-1.33.0/config/config.sub similarity index 97% rename from lib/c-ares-1.32.3/config/config.sub rename to lib/c-ares-1.33.0/config/config.sub index defe52c0c87..2c6a07ab3c3 100755 --- a/lib/c-ares-1.32.3/config/config.sub +++ b/lib/c-ares-1.33.0/config/config.sub @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2023 Free Software Foundation, Inc. +# Copyright 1992-2024 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2023-09-19' +timestamp='2024-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -76,7 +76,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2023 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -1222,6 +1222,7 @@ case $cpu-$vendor in | moxie \ | mt \ | msp430 \ + | nanomips* \ | nds32 | nds32le | nds32be \ | nfp \ | nios | nios2 | nios2eb | nios2el \ @@ -1253,6 +1254,7 @@ case $cpu-$vendor in | ubicom32 \ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ | vax \ + | vc4 \ | visium \ | w65 \ | wasm32 | wasm64 \ @@ -1597,7 +1599,7 @@ case $cpu-$vendor in os= obj=elf ;; - mips*-*) + mips*-*|nanomips*-*) os= obj=elf ;; @@ -1721,7 +1723,7 @@ fi case $os in # Sometimes we do "kernel-libc", so those need to count as OSes. - musl* | newlib* | relibc* | uclibc*) + llvm* | musl* | newlib* | relibc* | uclibc*) ;; # Likewise for "kernel-abi" eabi* | gnueabi*) @@ -1766,12 +1768,19 @@ case $os in | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ - | fiwix* | mlibc* | cos* | mbr* ) + | fiwix* | mlibc* | cos* | mbr* | ironclad* ) ;; # This one is extra strict with allowed versions sco3.2v2 | sco3.2v[4-9]* | sco5v6*) # Don't forget version if it is 3.2v4 or newer. ;; + # This refers to builds using the UEFI calling convention + # (which depends on the architecture) and PE file format. + # Note that this is both a different calling convention and + # different file format than that of GNU-EFI + # (x86_64-w64-mingw32). + uefi) + ;; none) ;; kernel* | msvc* ) @@ -1818,8 +1827,9 @@ esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os-$obj in - linux-gnu*- | linux-dietlibc*- | linux-android*- | linux-newlib*- \ - | linux-musl*- | linux-relibc*- | linux-uclibc*- | linux-mlibc*- ) + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- ) ;; uclinux-uclibc*- ) ;; @@ -1827,7 +1837,8 @@ case $kernel-$os-$obj in ;; windows*-msvc*-) ;; - -dietlibc*- | -newlib*- | -musl*- | -relibc*- | -uclibc*- | -mlibc*- ) + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 diff --git a/lib/c-ares-1.32.3/config/depcomp b/lib/c-ares-1.33.0/config/depcomp similarity index 98% rename from lib/c-ares-1.32.3/config/depcomp rename to lib/c-ares-1.33.0/config/depcomp index 715e34311ed..1f0aa972c93 100755 --- a/lib/c-ares-1.32.3/config/depcomp +++ b/lib/c-ares-1.33.0/config/depcomp @@ -1,9 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2018-03-07.03; # UTC +scriptversion=2024-06-19.01; # UTC -# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# Copyright (C) 1999-2024 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -47,11 +47,13 @@ Environment variables: libtool Whether libtool is used (yes/no). Report bugs to . +GNU Automake home page: . +General help using GNU software: . EOF exit $? ;; -v | --v*) - echo "depcomp $scriptversion" + echo "depcomp (GNU Automake) $scriptversion" exit $? ;; esac @@ -113,7 +115,6 @@ nl=' # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz -digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then @@ -128,7 +129,7 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" -# Avoid interferences from the environment. +# Avoid interference from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We @@ -198,8 +199,8 @@ gcc3) ;; gcc) -## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. -## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## Note that this doesn't just cater to obsolete pre-3.x GCC compilers. +## but also to in-use compilers like IBM xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: diff --git a/lib/c-ares-1.32.3/config/install-sh b/lib/c-ares-1.33.0/config/install-sh similarity index 98% rename from lib/c-ares-1.32.3/config/install-sh rename to lib/c-ares-1.33.0/config/install-sh index 7c56c9c0151..b1d7a6f67f6 100755 --- a/lib/c-ares-1.32.3/config/install-sh +++ b/lib/c-ares-1.33.0/config/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2023-11-23.18; # UTC +scriptversion=2024-06-19.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -170,7 +170,7 @@ while test $# -ne 0; do -T) is_target_a_directory=never;; - --version) echo "$0 $scriptversion"; exit $?;; + --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;; --) shift break;; @@ -345,7 +345,7 @@ do ' 0 # Because "mkdir -p" follows existing symlinks and we likely work - # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directly in world-writable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p'. if (umask $mkdir_umask && @@ -353,7 +353,7 @@ do exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. + # Check for POSIX incompatibility with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. diff --git a/lib/c-ares-1.32.3/config/ltmain.sh b/lib/c-ares-1.33.0/config/ltmain.sh similarity index 100% rename from lib/c-ares-1.32.3/config/ltmain.sh rename to lib/c-ares-1.33.0/config/ltmain.sh diff --git a/lib/c-ares-1.32.3/config/missing b/lib/c-ares-1.33.0/config/missing similarity index 77% rename from lib/c-ares-1.32.3/config/missing rename to lib/c-ares-1.33.0/config/missing index 1fe1611f185..7e7d78ec52c 100755 --- a/lib/c-ares-1.32.3/config/missing +++ b/lib/c-ares-1.33.0/config/missing @@ -1,9 +1,11 @@ #! /bin/sh -# Common wrapper for a few potentially missing GNU programs. +# Common wrapper for a few potentially missing GNU and other programs. -scriptversion=2018-03-07.03; # UTC +scriptversion=2024-06-07.14; # UTC -# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# shellcheck disable=SC2006,SC2268 # we must support pre-POSIX shells + +# Copyright (C) 1996-2024 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -54,18 +56,20 @@ Options: -v, --version output version information and exit Supported PROGRAM values: - aclocal autoconf autoheader autom4te automake makeinfo - bison yacc flex lex help2man +aclocal autoconf autogen autoheader autom4te automake autoreconf +bison flex help2man lex makeinfo perl yacc Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. -Send bug reports to ." +Report bugs to . +GNU Automake home page: . +General help using GNU software: ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" + echo "missing (GNU Automake) $scriptversion" exit $? ;; @@ -108,7 +112,7 @@ gnu_software_URL=https://www.gnu.org/software program_details () { case $1 in - aclocal|automake) + aclocal|automake|autoreconf) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" @@ -123,6 +127,9 @@ program_details () echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; + *) + : + ;; esac } @@ -137,48 +144,55 @@ give_advice () printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + autoheader_deps="'acconfig.h'" + automake_deps="'Makefile.am'" + aclocal_deps="'acinclude.m4'" case $normalized_program in + aclocal*) + echo "You should only need it if you modified $aclocal_deps or" + echo "$configure_deps." + ;; autoconf*) - echo "You should only need it if you modified 'configure.ac'," - echo "or m4 files included by it." - program_details 'autoconf' + echo "You should only need it if you modified $configure_deps." + ;; + autogen*) + echo "You should only need it if you modified a '.def' or '.tpl' file." + echo "You may want to install the GNU AutoGen package:" + echo "<$gnu_software_URL/autogen/>" ;; autoheader*) - echo "You should only need it if you modified 'acconfig.h' or" + echo "You should only need it if you modified $autoheader_deps or" echo "$configure_deps." - program_details 'autoheader' ;; automake*) - echo "You should only need it if you modified 'Makefile.am' or" - echo "$configure_deps." - program_details 'automake' - ;; - aclocal*) - echo "You should only need it if you modified 'acinclude.m4' or" + echo "You should only need it if you modified $automake_deps or" echo "$configure_deps." - program_details 'aclocal' ;; - autom4te*) + autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." - program_details 'autom4te' + ;; + autoreconf*) + echo "You should only need it if you modified $aclocal_deps or" + echo "$automake_deps or $autoheader_deps or $automake_deps or" + echo "$configure_deps." ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; - lex*|flex*) - echo "You should only need it if you modified a '.l' file." - echo "You may want to install the Fast Lexical Analyzer package:" - echo "<$flex_URL>" - ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." @@ -189,6 +203,12 @@ give_advice () echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; + perl*) + echo "You should only need it to run GNU Autoconf, GNU Automake, " + echo " assorted other tools, or if you modified a Perl source file." + echo "You may want to install the Perl 5 language interpreter:" + echo "<$perl_URL>" + ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" @@ -197,6 +217,7 @@ give_advice () echo "case some other package contains this missing '$1' program." ;; esac + program_details "$normalized_program" } give_advice "$1" | sed -e '1s/^/WARNING: /' \ diff --git a/lib/c-ares-1.32.3/config/test-driver b/lib/c-ares-1.33.0/config/test-driver similarity index 89% rename from lib/c-ares-1.32.3/config/test-driver rename to lib/c-ares-1.33.0/config/test-driver index be73b80adf9..dc38f623f43 100755 --- a/lib/c-ares-1.32.3/config/test-driver +++ b/lib/c-ares-1.33.0/config/test-driver @@ -1,9 +1,9 @@ #! /bin/sh # test-driver - basic testsuite driver script. -scriptversion=2018-03-07.03; # UTC +scriptversion=2024-06-19.01; # UTC -# Copyright (C) 2011-2021 Free Software Foundation, Inc. +# Copyright (C) 2011-2024 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -44,11 +44,16 @@ print_usage () Usage: test-driver --test-name NAME --log-file PATH --trs-file PATH [--expect-failure {yes|no}] [--color-tests {yes|no}] + [--collect-skipped-logs {yes|no}] [--enable-hard-errors {yes|no}] [--] TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS] The '--test-name', '--log-file' and '--trs-file' options are mandatory. See the GNU Automake documentation for information. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: . END } @@ -57,15 +62,17 @@ log_file= # Where to save the output of the test script. trs_file= # Where to save the metadata of the test run. expect_failure=no color_tests=no +collect_skipped_logs=yes enable_hard_errors=yes while test $# -gt 0; do case $1 in --help) print_usage; exit $?;; - --version) echo "test-driver $scriptversion"; exit $?;; + --version) echo "test-driver (GNU Automake) $scriptversion"; exit $?;; --test-name) test_name=$2; shift;; --log-file) log_file=$2; shift;; --trs-file) trs_file=$2; shift;; --color-tests) color_tests=$2; shift;; + --collect-skipped-logs) collect_skipped_logs=$2; shift;; --expect-failure) expect_failure=$2; shift;; --enable-hard-errors) enable_hard_errors=$2; shift;; --) shift; break;; @@ -121,7 +128,7 @@ fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; - 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 77:*) col=$blu res=SKIP recheck=no gcopy=$collect_skipped_logs;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; diff --git a/lib/c-ares-1.32.3/configure b/lib/c-ares-1.33.0/configure similarity index 98% rename from lib/c-ares-1.32.3/configure rename to lib/c-ares-1.33.0/configure index f5fc16a49bf..d9dad13dd30 100755 --- a/lib/c-ares-1.32.3/configure +++ b/lib/c-ares-1.33.0/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for c-ares 1.32.3. +# Generated by GNU Autoconf 2.72 for c-ares 1.33.0. # # Report bugs to . # @@ -614,8 +614,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='c-ares' PACKAGE_TARNAME='c-ares' -PACKAGE_VERSION='1.32.3' -PACKAGE_STRING='c-ares 1.32.3' +PACKAGE_VERSION='1.33.0' +PACKAGE_STRING='c-ares 1.33.0' PACKAGE_BUGREPORT='c-ares mailing list: http://lists.haxx.se/listinfo/c-ares' PACKAGE_URL='' @@ -729,6 +729,8 @@ LIBTOOL OBJDUMP DLLTOOL AS +am__xargs_n +am__rm_f_notfound AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V @@ -1415,7 +1417,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures c-ares 1.32.3 to adapt to many kinds of systems. +'configure' configures c-ares 1.33.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1486,7 +1488,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of c-ares 1.32.3:";; + short | recursive ) echo "Configuration of c-ares 1.33.0:";; esac cat <<\_ACEOF @@ -1623,7 +1625,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -c-ares configure 1.32.3 +c-ares configure 1.33.0 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -2267,7 +2269,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by c-ares $as_me 1.32.3, which was +It was created by c-ares $as_me 1.33.0, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -3259,7 +3261,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -CARES_VERSION_INFO="19:3:17" +CARES_VERSION_INFO="20:0:18" @@ -5421,7 +5423,7 @@ printf "%s\n" "#define HAVE_CXX14 1" >>confdefs.h fi -am__api_version='1.16' +am__api_version='1.17' # Find a good install program. We prefer a C program (faster), @@ -5523,6 +5525,165 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in #( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory @@ -5543,49 +5704,45 @@ esac # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken - alias in your environment" "$LINENO" 5 - fi - if test "$2" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf "%s\n" "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in #( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & am_sleep_pid=$! + ;; +esac fi rm -f conftest.file @@ -5935,17 +6092,13 @@ else fi +AM_DEFAULT_VERBOSITY=1 # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=1;; -esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } @@ -5968,15 +6121,45 @@ esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi AM_BACKSLASH='\' +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in #( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in #( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf "%s\n" "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in #( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." @@ -5999,7 +6182,7 @@ fi # Define the identity of the package. PACKAGE='c-ares' - VERSION='1.32.3' + VERSION='1.33.0' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -6140,7 +6323,7 @@ else case e in #( # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: + # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported @@ -6270,7 +6453,7 @@ else case e in #( # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: + # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported @@ -6320,47 +6503,9 @@ fi -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi case `pwd` in *\ * | *\ *) @@ -19498,48 +19643,8 @@ fi MAINT=$MAINTAINER_MODE_TRUE -# Check whether --enable-silent-rules was given. -if test ${enable_silent_rules+y} -then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=0;; -esac -am_make=${MAKE-make} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -printf %s "checking whether $am_make supports nested variables... " >&6; } -if test ${am_cv_make_support_nested_variables+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if printf "%s\n" 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AM_BACKSLASH='\' +AM_DEFAULT_VERBOSITY=0 @@ -20682,7 +20787,81 @@ fi if test "$enable_warnings" = "yes"; then -for flag in -std=c90 -Wall -Wextra -Waggregate-return -Wcast-align -Wcast-qual -Wconversion -Wdeclaration-after-statement -Wdouble-promotion -Wfloat-equal -Wformat-security -Winit-self -Wjump-misses-init -Wlogical-op -Wmissing-braces -Wmissing-declarations -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-prototypes -Wnested-externs -Wno-coverage-mismatch -Wold-style-definition -Wpacked -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wsign-conversion -Wstrict-overflow -Wstrict-prototypes -Wtrampolines -Wundef -Wunreachable-code -Wunused -Wvariadic-macros -Wvla -Wwrite-strings -Werror=implicit-int -Werror=implicit-function-declaration -Werror=partial-availability -Wno-long-long ; do +for flag in -Wall -Wextra -Waggregate-return -Wcast-align -Wcast-qual -Wconversion -Wdeclaration-after-statement -Wdouble-promotion -Wfloat-equal -Wformat-security -Winit-self -Wjump-misses-init -Wlogical-op -Wmissing-braces -Wmissing-declarations -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-prototypes -Wnested-externs -Wno-coverage-mismatch -Wold-style-definition -Wpacked -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wsign-conversion -Wstrict-overflow -Wstrict-prototypes -Wtrampolines -Wundef -Wunreachable-code -Wunused -Wvariadic-macros -Wvla -Wwrite-strings -Werror=implicit-int -Werror=implicit-function-declaration -Werror=partial-availability -Wno-long-long ; do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_-Werror_$flag" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_CACHEVAR=yes" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +eval ac_res=\$$as_CACHEVAR + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};printf "%s\n" "$as_val"'`" = xyes +then : + if test ${AM_CFLAGS+y} +then : + case " $AM_CFLAGS " in + *" $flag "*) + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS already contains \$flag"; } >&5 + (: AM_CFLAGS already contains $flag) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; + *) + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS \$flag\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS $flag") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + AM_CFLAGS="$AM_CFLAGS $flag" + ;; + esac +else case e in #( + e) AM_CFLAGS="$flag" ;; +esac +fi + +else case e in #( + e) : ;; +esac +fi + +done + + + case $host_os in + *android*) + + +for flag in -std=c99; do as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_-Werror_$flag" | sed "$as_sed_sh"` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 printf %s "checking whether C compiler accepts $flag... " >&6; } @@ -20751,6 +20930,81 @@ fi done + ;; + *) + + +for flag in -std=c90; do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_-Werror_$flag" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_CACHEVAR=yes" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +eval ac_res=\$$as_CACHEVAR + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};printf "%s\n" "$as_val"'`" = xyes +then : + if test ${AM_CFLAGS+y} +then : + case " $AM_CFLAGS " in + *" $flag "*) + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS already contains \$flag"; } >&5 + (: AM_CFLAGS already contains $flag) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; + *) + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS \$flag\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS $flag") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + AM_CFLAGS="$AM_CFLAGS $flag" + ;; + esac +else case e in #( + e) AM_CFLAGS="$flag" ;; +esac +fi + +else case e in #( + e) : ;; +esac +fi + +done + + ;; + esac fi if test "$ax_cv_c_compiler_vendor" = "intel"; then @@ -22622,6 +22876,14 @@ then : printf "%s\n" "#define HAVE_CONNECT 1" >>confdefs.h +fi +ac_fn_check_decl "$LINENO" "connectx" "ac_cv_have_decl_connectx" "$cares_all_includes +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_connectx" = xyes +then : + +printf "%s\n" "#define HAVE_CONNECTX 1" >>confdefs.h + fi ac_fn_check_decl "$LINENO" "closesocket" "ac_cv_have_decl_closesocket" "$cares_all_includes " "$ac_c_undeclared_builtin_options" "CFLAGS" @@ -22910,6 +23172,22 @@ then : printf "%s\n" "#define HAVE_CONVERTINTERFACELUIDTONAMEA 1" >>confdefs.h +fi +ac_fn_check_decl "$LINENO" "NotifyIpInterfaceChange" "ac_cv_have_decl_NotifyIpInterfaceChange" "$cares_all_includes +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_NotifyIpInterfaceChange" = xyes +then : + +printf "%s\n" "#define HAVE_NOTIFYIPINTERFACECHANGE 1" >>confdefs.h + +fi +ac_fn_check_decl "$LINENO" "RegisterWaitForSingleObject" "ac_cv_have_decl_RegisterWaitForSingleObject" "$cares_all_includes +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_RegisterWaitForSingleObject" = xyes +then : + +printf "%s\n" "#define HAVE_REGISTERWAITFORSINGLEOBJECT 1" >>confdefs.h + fi ac_fn_check_decl "$LINENO" "__system_property_get" "ac_cv_have_decl___system_property_get" "$cares_all_includes " "$ac_c_undeclared_builtin_options" "CFLAGS" @@ -25912,6 +26190,18 @@ if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi + if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -26339,7 +26629,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by c-ares $as_me 1.32.3, which was +This file was extended by c-ares $as_me 1.33.0, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -26407,7 +26697,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -c-ares config.status 1.32.3 +c-ares config.status 1.33.0 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff --git a/lib/c-ares-1.32.3/configure.ac b/lib/c-ares-1.33.0/configure.ac similarity index 95% rename from lib/c-ares-1.32.3/configure.ac rename to lib/c-ares-1.33.0/configure.ac index 7abf80f68bd..be891e40621 100644 --- a/lib/c-ares-1.32.3/configure.ac +++ b/lib/c-ares-1.33.0/configure.ac @@ -2,10 +2,10 @@ dnl Copyright (C) The c-ares project and its contributors dnl SPDX-License-Identifier: MIT AC_PREREQ([2.69]) -AC_INIT([c-ares], [1.32.3], +AC_INIT([c-ares], [1.33.0], [c-ares mailing list: http://lists.haxx.se/listinfo/c-ares]) -CARES_VERSION_INFO="19:3:17" +CARES_VERSION_INFO="20:0:18" dnl This flag accepts an argument of the form current[:revision[:age]]. So, dnl passing -version-info 3:12:1 sets current to 3, revision to 12, and age to dnl 1. @@ -245,8 +245,18 @@ AC_SUBST(CARES_SYMBOL_HIDING_CFLAG) if test "$enable_warnings" = "yes"; then - AX_APPEND_COMPILE_FLAGS([-std=c90 -Wall -Wextra -Waggregate-return -Wcast-align -Wcast-qual -Wconversion -Wdeclaration-after-statement -Wdouble-promotion -Wfloat-equal -Wformat-security -Winit-self -Wjump-misses-init -Wlogical-op -Wmissing-braces -Wmissing-declarations -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-prototypes -Wnested-externs -Wno-coverage-mismatch -Wold-style-definition -Wpacked -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wsign-conversion -Wstrict-overflow -Wstrict-prototypes -Wtrampolines -Wundef -Wunreachable-code -Wunused -Wvariadic-macros -Wvla -Wwrite-strings -Werror=implicit-int -Werror=implicit-function-declaration -Werror=partial-availability -Wno-long-long ], + AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Waggregate-return -Wcast-align -Wcast-qual -Wconversion -Wdeclaration-after-statement -Wdouble-promotion -Wfloat-equal -Wformat-security -Winit-self -Wjump-misses-init -Wlogical-op -Wmissing-braces -Wmissing-declarations -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-prototypes -Wnested-externs -Wno-coverage-mismatch -Wold-style-definition -Wpacked -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wsign-conversion -Wstrict-overflow -Wstrict-prototypes -Wtrampolines -Wundef -Wunreachable-code -Wunused -Wvariadic-macros -Wvla -Wwrite-strings -Werror=implicit-int -Werror=implicit-function-declaration -Werror=partial-availability -Wno-long-long ], [AM_CFLAGS], [-Werror]) + + dnl Android requires c99, all others should use c90 + case $host_os in + *android*) + AX_APPEND_COMPILE_FLAGS([-std=c99], [AM_CFLAGS], [-Werror]) + ;; + *) + AX_APPEND_COMPILE_FLAGS([-std=c90], [AM_CFLAGS], [-Werror]) + ;; + esac fi if test "$ax_cv_c_compiler_vendor" = "intel"; then @@ -538,6 +548,7 @@ AC_CHECK_DECL(send, [AC_DEFINE([HAVE_SEND], 1, [Define t AC_CHECK_DECL(getnameinfo, [AC_DEFINE([HAVE_GETNAMEINFO], 1, [Define to 1 if you have `getnameinfo`] )], [], $cares_all_includes) AC_CHECK_DECL(gethostname, [AC_DEFINE([HAVE_GETHOSTNAME], 1, [Define to 1 if you have `gethostname`] )], [], $cares_all_includes) AC_CHECK_DECL(connect, [AC_DEFINE([HAVE_CONNECT], 1, [Define to 1 if you have `connect`] )], [], $cares_all_includes) +AC_CHECK_DECL(connectx, [AC_DEFINE([HAVE_CONNECTX], 1, [Define to 1 if you have `connectx`] )], [], $cares_all_includes) AC_CHECK_DECL(closesocket, [AC_DEFINE([HAVE_CLOSESOCKET], 1, [Define to 1 if you have `closesocket`] )], [], $cares_all_includes) AC_CHECK_DECL(CloseSocket, [AC_DEFINE([HAVE_CLOSESOCKET_CAMEL], 1, [Define to 1 if you have `CloseSocket`] )], [], $cares_all_includes) AC_CHECK_DECL(fcntl, [AC_DEFINE([HAVE_FCNTL], 1, [Define to 1 if you have `fcntl`] )], [], $cares_all_includes) @@ -574,6 +585,8 @@ AC_CHECK_DECL(kqueue, [AC_DEFINE([HAVE_KQUEUE], 1, [Define t AC_CHECK_DECL(epoll_create1, [AC_DEFINE([HAVE_EPOLL], 1, [Define to 1 if you have `epoll_{create1,ctl,wait}`])], [], $cares_all_includes) AC_CHECK_DECL(ConvertInterfaceIndexToLuid, [AC_DEFINE([HAVE_CONVERTINTERFACEINDEXTOLUID], 1, [Define to 1 if you have `ConvertInterfaceIndexToLuid`])], [], $cares_all_includes) AC_CHECK_DECL(ConvertInterfaceLuidToNameA, [AC_DEFINE([HAVE_CONVERTINTERFACELUIDTONAMEA], 1, [Define to 1 if you have `ConvertInterfaceLuidToNameA`])], [], $cares_all_includes) +AC_CHECK_DECL(NotifyIpInterfaceChange, [AC_DEFINE([HAVE_NOTIFYIPINTERFACECHANGE], 1, [Define to 1 if you have `NotifyIpInterfaceChange`] )], [], $cares_all_includes) +AC_CHECK_DECL(RegisterWaitForSingleObject, [AC_DEFINE([HAVE_REGISTERWAITFORSINGLEOBJECT], 1, [Define to 1 if you have `RegisterWaitForSingleObject`])], [], $cares_all_includes) AC_CHECK_DECL(__system_property_get, [AC_DEFINE([HAVE___SYSTEM_PROPERTY_GET], 1, [Define to 1 if you have `__system_property_get`] )], [], $cares_all_includes) diff --git a/lib/c-ares-1.32.3/docs/CMakeLists.txt b/lib/c-ares-1.33.0/docs/CMakeLists.txt similarity index 100% rename from lib/c-ares-1.32.3/docs/CMakeLists.txt rename to lib/c-ares-1.33.0/docs/CMakeLists.txt diff --git a/lib/c-ares-1.32.3/docs/Makefile.am b/lib/c-ares-1.33.0/docs/Makefile.am similarity index 100% rename from lib/c-ares-1.32.3/docs/Makefile.am rename to lib/c-ares-1.33.0/docs/Makefile.am diff --git a/lib/c-ares-1.32.3/docs/Makefile.in b/lib/c-ares-1.33.0/docs/Makefile.in similarity index 96% rename from lib/c-ares-1.32.3/docs/Makefile.in rename to lib/c-ares-1.33.0/docs/Makefile.in index 0b44dbd8c53..155ab9d3017 100644 --- a/lib/c-ares-1.32.3/docs/Makefile.in +++ b/lib/c-ares-1.33.0/docs/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. +# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2021 Free Software Foundation, Inc. +# Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -72,6 +72,8 @@ am__make_running_with_option = \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -166,10 +168,9 @@ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ + { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } man3dir = $(mandir)/man3 am__installdirs = "$(DESTDIR)$(man3dir)" @@ -288,8 +289,10 @@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ @@ -638,8 +641,8 @@ mostlyclean-generic: clean-generic: distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -733,3 +736,10 @@ uninstall-man: uninstall-man3 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/lib/c-ares-1.32.3/docs/Makefile.inc b/lib/c-ares-1.33.0/docs/Makefile.inc similarity index 100% rename from lib/c-ares-1.32.3/docs/Makefile.inc rename to lib/c-ares-1.33.0/docs/Makefile.inc diff --git a/lib/c-ares-1.32.3/docs/adig.1 b/lib/c-ares-1.33.0/docs/adig.1 similarity index 100% rename from lib/c-ares-1.32.3/docs/adig.1 rename to lib/c-ares-1.33.0/docs/adig.1 diff --git a/lib/c-ares-1.32.3/docs/ahost.1 b/lib/c-ares-1.33.0/docs/ahost.1 similarity index 100% rename from lib/c-ares-1.32.3/docs/ahost.1 rename to lib/c-ares-1.33.0/docs/ahost.1 diff --git a/lib/c-ares-1.32.3/docs/ares_cancel.3 b/lib/c-ares-1.33.0/docs/ares_cancel.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_cancel.3 rename to lib/c-ares-1.33.0/docs/ares_cancel.3 diff --git a/lib/c-ares-1.32.3/docs/ares_create_query.3 b/lib/c-ares-1.33.0/docs/ares_create_query.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_create_query.3 rename to lib/c-ares-1.33.0/docs/ares_create_query.3 diff --git a/lib/c-ares-1.32.3/docs/ares_destroy.3 b/lib/c-ares-1.33.0/docs/ares_destroy.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_destroy.3 rename to lib/c-ares-1.33.0/docs/ares_destroy.3 diff --git a/lib/c-ares-1.32.3/docs/ares_destroy_options.3 b/lib/c-ares-1.33.0/docs/ares_destroy_options.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_destroy_options.3 rename to lib/c-ares-1.33.0/docs/ares_destroy_options.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_class_fromstr.3 b/lib/c-ares-1.33.0/docs/ares_dns_class_fromstr.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_class_fromstr.3 rename to lib/c-ares-1.33.0/docs/ares_dns_class_fromstr.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_class_t.3 b/lib/c-ares-1.33.0/docs/ares_dns_class_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_class_t.3 rename to lib/c-ares-1.33.0/docs/ares_dns_class_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_class_tostr.3 b/lib/c-ares-1.33.0/docs/ares_dns_class_tostr.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_class_tostr.3 rename to lib/c-ares-1.33.0/docs/ares_dns_class_tostr.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_datatype_t.3 b/lib/c-ares-1.33.0/docs/ares_dns_datatype_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_datatype_t.3 rename to lib/c-ares-1.33.0/docs/ares_dns_datatype_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_flags_t.3 b/lib/c-ares-1.33.0/docs/ares_dns_flags_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_flags_t.3 rename to lib/c-ares-1.33.0/docs/ares_dns_flags_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_mapping.3 b/lib/c-ares-1.33.0/docs/ares_dns_mapping.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_mapping.3 rename to lib/c-ares-1.33.0/docs/ares_dns_mapping.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_opcode_t.3 b/lib/c-ares-1.33.0/docs/ares_dns_opcode_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_opcode_t.3 rename to lib/c-ares-1.33.0/docs/ares_dns_opcode_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_opcode_tostr.3 b/lib/c-ares-1.33.0/docs/ares_dns_opcode_tostr.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_opcode_tostr.3 rename to lib/c-ares-1.33.0/docs/ares_dns_opcode_tostr.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_opt_datatype_t.3 b/lib/c-ares-1.33.0/docs/ares_dns_opt_datatype_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_opt_datatype_t.3 rename to lib/c-ares-1.33.0/docs/ares_dns_opt_datatype_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_opt_get_datatype.3 b/lib/c-ares-1.33.0/docs/ares_dns_opt_get_datatype.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_opt_get_datatype.3 rename to lib/c-ares-1.33.0/docs/ares_dns_opt_get_datatype.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_opt_get_name.3 b/lib/c-ares-1.33.0/docs/ares_dns_opt_get_name.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_opt_get_name.3 rename to lib/c-ares-1.33.0/docs/ares_dns_opt_get_name.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_parse.3 b/lib/c-ares-1.33.0/docs/ares_dns_parse.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_parse.3 rename to lib/c-ares-1.33.0/docs/ares_dns_parse.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rcode_t.3 b/lib/c-ares-1.33.0/docs/ares_dns_rcode_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rcode_t.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rcode_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rcode_tostr.3 b/lib/c-ares-1.33.0/docs/ares_dns_rcode_tostr.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rcode_tostr.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rcode_tostr.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rec_type_fromstr.3 b/lib/c-ares-1.33.0/docs/ares_dns_rec_type_fromstr.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rec_type_fromstr.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rec_type_fromstr.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rec_type_t.3 b/lib/c-ares-1.33.0/docs/ares_dns_rec_type_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rec_type_t.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rec_type_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rec_type_tostr.3 b/lib/c-ares-1.33.0/docs/ares_dns_rec_type_tostr.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rec_type_tostr.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rec_type_tostr.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record.3 b/lib/c-ares-1.33.0/docs/ares_dns_record.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_create.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_create.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_create.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_create.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_destroy.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_destroy.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_destroy.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_destroy.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_duplicate.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_duplicate.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_duplicate.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_duplicate.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_get_flags.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_get_flags.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_get_flags.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_get_flags.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_get_id.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_get_id.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_get_id.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_get_id.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_get_opcode.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_get_opcode.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_get_opcode.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_get_opcode.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_get_rcode.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_get_rcode.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_get_rcode.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_get_rcode.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_query_add.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_query_add.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_query_add.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_query_add.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_query_cnt.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_query_cnt.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_query_cnt.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_query_cnt.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_query_get.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_query_get.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_query_get.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_query_get.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_query_set_name.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_query_set_name.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_query_set_name.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_query_set_name.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_query_set_type.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_query_set_type.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_query_set_type.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_query_set_type.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_rr_add.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_rr_add.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_rr_add.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_rr_add.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_rr_cnt.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_rr_cnt.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_rr_cnt.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_rr_cnt.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_rr_del.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_rr_del.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_rr_del.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_rr_del.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_rr_get.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_rr_get.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_rr_get.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_rr_get.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_rr_get_const.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_rr_get_const.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_rr_get_const.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_rr_get_const.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_record_set_id.3 b/lib/c-ares-1.33.0/docs/ares_dns_record_set_id.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_record_set_id.3 rename to lib/c-ares-1.33.0/docs/ares_dns_record_set_id.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr.3 similarity index 96% rename from lib/c-ares-1.32.3/docs/ares_dns_rr.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr.3 index 9d5ab37515e..4da768650b5 100644 --- a/lib/c-ares-1.32.3/docs/ares_dns_rr.3 +++ b/lib/c-ares-1.33.0/docs/ares_dns_rr.3 @@ -96,6 +96,10 @@ ares_status_t ares_dns_rr_set_opt(ares_dns_rr_t *dns_rr, const unsigned char *val, size_t val_len); +ares_status_t ares_dns_rr_del_opt_byid(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, + unsigned short opt); + const struct in_addr *ares_dns_rr_get_addr(const ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key); @@ -553,7 +557,7 @@ parameter, and the index to remove is provided in the parameter. The \fIares_dns_rr_set_opt(3)\fP function is used to set option/parameter keys and -values for the resource record when the datatype if \fIARES_DATATYPE_OPT\fP. The +values for the resource record when the datatype is \fIARES_DATATYPE_OPT\fP. The resource record to be modified is provided in the .IR dns_rr parameter. They key/parameter is provided in the @@ -568,6 +572,18 @@ enumerations. The value for the option is always provided in binary form in with length provided in .IR val_len. +The \fIares_dns_rr_del_opt_byid(3)\fP function is used to delete option/parameter +keys and values for the resource record when the datatype is +\fIARES_DATATYPE_OPT\fP. The resource record to be modified is provided in the +.IR dns_rr +parameter. They key/parameter is provided in the +.IR key +parameter. The option/parameter value specific to the resource record is provided +in the +.IR opt +parameter. This function returns \fIARES_SUCCESS\fP if the record is successfully +removed, or \fIARES_ENOTFOUND\fP if the record could not be found. + The \fIares_dns_rr_get_addr(3)\fP function is used to retrieve the IPv4 address from the resource record when the datatype is \fIARES_DATATYPE_INADDR\fP. The resource record is provided in the @@ -635,7 +651,7 @@ parameter and the key/parameter to retrieve is provided in the .IR key parameter. -The \fIares_dns_rr_get_abin(3)\fP function is used to retrive binary data from +The \fIares_dns_rr_get_abin(3)\fP function is used to retrieve binary data from the resource record array when the datatype is \fIARES_DATATYPE_ABINP\fP. The resource record is provided in the .IR dns_rr diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_add_abin.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_add_abin.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_add_abin.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_add_abin.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_del_abin.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_del_abin.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_del_abin.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_del_abin.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_abin.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_abin.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_abin.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_abin.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_abin_cnt.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_abin_cnt.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_abin_cnt.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_abin_cnt.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_addr.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_addr.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_addr.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_addr.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_addr6.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_addr6.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_addr6.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_addr6.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_bin.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_bin.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_bin.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_bin.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_class.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_class.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_class.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_class.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_keys.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_keys.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_keys.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_keys.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_name.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_name.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_name.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_name.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_opt.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_opt.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_opt.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_opt.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_opt_byid.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_opt_byid.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_opt_byid.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_opt_byid.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_opt_cnt.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_opt_cnt.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_opt_cnt.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_opt_cnt.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_str.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_str.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_str.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_str.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_ttl.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_ttl.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_ttl.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_ttl.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_type.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_type.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_type.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_type.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_u16.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_u16.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_u16.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_u16.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_u32.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_u32.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_u32.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_u32.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_get_u8.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_get_u8.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_get_u8.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_get_u8.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_key_datatype.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_key_datatype.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_key_datatype.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_key_datatype.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_key_t.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_key_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_key_t.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_key_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_key_to_rec_type.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_key_to_rec_type.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_key_to_rec_type.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_key_to_rec_type.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_key_tostr.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_key_tostr.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_key_tostr.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_key_tostr.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_set_addr.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_set_addr.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_set_addr.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_set_addr.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_set_addr6.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_set_addr6.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_set_addr6.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_set_addr6.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_set_bin.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_set_bin.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_set_bin.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_set_bin.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_set_opt.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_set_opt.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_set_opt.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_set_opt.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_set_str.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_set_str.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_set_str.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_set_str.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_set_u16.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_set_u16.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_set_u16.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_set_u16.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_set_u32.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_set_u32.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_set_u32.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_set_u32.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_rr_set_u8.3 b/lib/c-ares-1.33.0/docs/ares_dns_rr_set_u8.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_rr_set_u8.3 rename to lib/c-ares-1.33.0/docs/ares_dns_rr_set_u8.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_section_t.3 b/lib/c-ares-1.33.0/docs/ares_dns_section_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_section_t.3 rename to lib/c-ares-1.33.0/docs/ares_dns_section_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_section_tostr.3 b/lib/c-ares-1.33.0/docs/ares_dns_section_tostr.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_section_tostr.3 rename to lib/c-ares-1.33.0/docs/ares_dns_section_tostr.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dns_write.3 b/lib/c-ares-1.33.0/docs/ares_dns_write.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dns_write.3 rename to lib/c-ares-1.33.0/docs/ares_dns_write.3 diff --git a/lib/c-ares-1.32.3/docs/ares_dup.3 b/lib/c-ares-1.33.0/docs/ares_dup.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_dup.3 rename to lib/c-ares-1.33.0/docs/ares_dup.3 diff --git a/lib/c-ares-1.32.3/docs/ares_expand_name.3 b/lib/c-ares-1.33.0/docs/ares_expand_name.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_expand_name.3 rename to lib/c-ares-1.33.0/docs/ares_expand_name.3 diff --git a/lib/c-ares-1.32.3/docs/ares_expand_string.3 b/lib/c-ares-1.33.0/docs/ares_expand_string.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_expand_string.3 rename to lib/c-ares-1.33.0/docs/ares_expand_string.3 diff --git a/lib/c-ares-1.32.3/docs/ares_fds.3 b/lib/c-ares-1.33.0/docs/ares_fds.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_fds.3 rename to lib/c-ares-1.33.0/docs/ares_fds.3 diff --git a/lib/c-ares-1.32.3/docs/ares_free_data.3 b/lib/c-ares-1.33.0/docs/ares_free_data.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_free_data.3 rename to lib/c-ares-1.33.0/docs/ares_free_data.3 diff --git a/lib/c-ares-1.32.3/docs/ares_free_hostent.3 b/lib/c-ares-1.33.0/docs/ares_free_hostent.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_free_hostent.3 rename to lib/c-ares-1.33.0/docs/ares_free_hostent.3 diff --git a/lib/c-ares-1.32.3/docs/ares_free_string.3 b/lib/c-ares-1.33.0/docs/ares_free_string.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_free_string.3 rename to lib/c-ares-1.33.0/docs/ares_free_string.3 diff --git a/lib/c-ares-1.32.3/docs/ares_freeaddrinfo.3 b/lib/c-ares-1.33.0/docs/ares_freeaddrinfo.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_freeaddrinfo.3 rename to lib/c-ares-1.33.0/docs/ares_freeaddrinfo.3 diff --git a/lib/c-ares-1.32.3/docs/ares_get_servers.3 b/lib/c-ares-1.33.0/docs/ares_get_servers.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_get_servers.3 rename to lib/c-ares-1.33.0/docs/ares_get_servers.3 diff --git a/lib/c-ares-1.32.3/docs/ares_get_servers_csv.3 b/lib/c-ares-1.33.0/docs/ares_get_servers_csv.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_get_servers_csv.3 rename to lib/c-ares-1.33.0/docs/ares_get_servers_csv.3 diff --git a/lib/c-ares-1.32.3/docs/ares_get_servers_ports.3 b/lib/c-ares-1.33.0/docs/ares_get_servers_ports.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_get_servers_ports.3 rename to lib/c-ares-1.33.0/docs/ares_get_servers_ports.3 diff --git a/lib/c-ares-1.32.3/docs/ares_getaddrinfo.3 b/lib/c-ares-1.33.0/docs/ares_getaddrinfo.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_getaddrinfo.3 rename to lib/c-ares-1.33.0/docs/ares_getaddrinfo.3 diff --git a/lib/c-ares-1.32.3/docs/ares_gethostbyaddr.3 b/lib/c-ares-1.33.0/docs/ares_gethostbyaddr.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_gethostbyaddr.3 rename to lib/c-ares-1.33.0/docs/ares_gethostbyaddr.3 diff --git a/lib/c-ares-1.32.3/docs/ares_gethostbyname.3 b/lib/c-ares-1.33.0/docs/ares_gethostbyname.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_gethostbyname.3 rename to lib/c-ares-1.33.0/docs/ares_gethostbyname.3 diff --git a/lib/c-ares-1.32.3/docs/ares_gethostbyname_file.3 b/lib/c-ares-1.33.0/docs/ares_gethostbyname_file.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_gethostbyname_file.3 rename to lib/c-ares-1.33.0/docs/ares_gethostbyname_file.3 diff --git a/lib/c-ares-1.32.3/docs/ares_getnameinfo.3 b/lib/c-ares-1.33.0/docs/ares_getnameinfo.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_getnameinfo.3 rename to lib/c-ares-1.33.0/docs/ares_getnameinfo.3 diff --git a/lib/c-ares-1.32.3/docs/ares_getsock.3 b/lib/c-ares-1.33.0/docs/ares_getsock.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_getsock.3 rename to lib/c-ares-1.33.0/docs/ares_getsock.3 diff --git a/lib/c-ares-1.32.3/docs/ares_inet_ntop.3 b/lib/c-ares-1.33.0/docs/ares_inet_ntop.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_inet_ntop.3 rename to lib/c-ares-1.33.0/docs/ares_inet_ntop.3 diff --git a/lib/c-ares-1.32.3/docs/ares_inet_pton.3 b/lib/c-ares-1.33.0/docs/ares_inet_pton.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_inet_pton.3 rename to lib/c-ares-1.33.0/docs/ares_inet_pton.3 diff --git a/lib/c-ares-1.32.3/docs/ares_init.3 b/lib/c-ares-1.33.0/docs/ares_init.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_init.3 rename to lib/c-ares-1.33.0/docs/ares_init.3 diff --git a/lib/c-ares-1.32.3/docs/ares_init_options.3 b/lib/c-ares-1.33.0/docs/ares_init_options.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_init_options.3 rename to lib/c-ares-1.33.0/docs/ares_init_options.3 diff --git a/lib/c-ares-1.32.3/docs/ares_library_cleanup.3 b/lib/c-ares-1.33.0/docs/ares_library_cleanup.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_library_cleanup.3 rename to lib/c-ares-1.33.0/docs/ares_library_cleanup.3 diff --git a/lib/c-ares-1.32.3/docs/ares_library_init.3 b/lib/c-ares-1.33.0/docs/ares_library_init.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_library_init.3 rename to lib/c-ares-1.33.0/docs/ares_library_init.3 diff --git a/lib/c-ares-1.32.3/docs/ares_library_init_android.3 b/lib/c-ares-1.33.0/docs/ares_library_init_android.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_library_init_android.3 rename to lib/c-ares-1.33.0/docs/ares_library_init_android.3 diff --git a/lib/c-ares-1.32.3/docs/ares_library_initialized.3 b/lib/c-ares-1.33.0/docs/ares_library_initialized.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_library_initialized.3 rename to lib/c-ares-1.33.0/docs/ares_library_initialized.3 diff --git a/lib/c-ares-1.32.3/docs/ares_mkquery.3 b/lib/c-ares-1.33.0/docs/ares_mkquery.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_mkquery.3 rename to lib/c-ares-1.33.0/docs/ares_mkquery.3 diff --git a/lib/c-ares-1.32.3/docs/ares_opt_param_t.3 b/lib/c-ares-1.33.0/docs/ares_opt_param_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_opt_param_t.3 rename to lib/c-ares-1.33.0/docs/ares_opt_param_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_parse_a_reply.3 b/lib/c-ares-1.33.0/docs/ares_parse_a_reply.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_parse_a_reply.3 rename to lib/c-ares-1.33.0/docs/ares_parse_a_reply.3 diff --git a/lib/c-ares-1.32.3/docs/ares_parse_aaaa_reply.3 b/lib/c-ares-1.33.0/docs/ares_parse_aaaa_reply.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_parse_aaaa_reply.3 rename to lib/c-ares-1.33.0/docs/ares_parse_aaaa_reply.3 diff --git a/lib/c-ares-1.32.3/docs/ares_parse_caa_reply.3 b/lib/c-ares-1.33.0/docs/ares_parse_caa_reply.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_parse_caa_reply.3 rename to lib/c-ares-1.33.0/docs/ares_parse_caa_reply.3 diff --git a/lib/c-ares-1.32.3/docs/ares_parse_mx_reply.3 b/lib/c-ares-1.33.0/docs/ares_parse_mx_reply.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_parse_mx_reply.3 rename to lib/c-ares-1.33.0/docs/ares_parse_mx_reply.3 diff --git a/lib/c-ares-1.32.3/docs/ares_parse_naptr_reply.3 b/lib/c-ares-1.33.0/docs/ares_parse_naptr_reply.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_parse_naptr_reply.3 rename to lib/c-ares-1.33.0/docs/ares_parse_naptr_reply.3 diff --git a/lib/c-ares-1.32.3/docs/ares_parse_ns_reply.3 b/lib/c-ares-1.33.0/docs/ares_parse_ns_reply.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_parse_ns_reply.3 rename to lib/c-ares-1.33.0/docs/ares_parse_ns_reply.3 diff --git a/lib/c-ares-1.32.3/docs/ares_parse_ptr_reply.3 b/lib/c-ares-1.33.0/docs/ares_parse_ptr_reply.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_parse_ptr_reply.3 rename to lib/c-ares-1.33.0/docs/ares_parse_ptr_reply.3 diff --git a/lib/c-ares-1.32.3/docs/ares_parse_soa_reply.3 b/lib/c-ares-1.33.0/docs/ares_parse_soa_reply.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_parse_soa_reply.3 rename to lib/c-ares-1.33.0/docs/ares_parse_soa_reply.3 diff --git a/lib/c-ares-1.32.3/docs/ares_parse_srv_reply.3 b/lib/c-ares-1.33.0/docs/ares_parse_srv_reply.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_parse_srv_reply.3 rename to lib/c-ares-1.33.0/docs/ares_parse_srv_reply.3 diff --git a/lib/c-ares-1.32.3/docs/ares_parse_txt_reply.3 b/lib/c-ares-1.33.0/docs/ares_parse_txt_reply.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_parse_txt_reply.3 rename to lib/c-ares-1.33.0/docs/ares_parse_txt_reply.3 diff --git a/lib/c-ares-1.32.3/docs/ares_parse_uri_reply.3 b/lib/c-ares-1.33.0/docs/ares_parse_uri_reply.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_parse_uri_reply.3 rename to lib/c-ares-1.33.0/docs/ares_parse_uri_reply.3 diff --git a/lib/c-ares-1.32.3/docs/ares_process.3 b/lib/c-ares-1.33.0/docs/ares_process.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_process.3 rename to lib/c-ares-1.33.0/docs/ares_process.3 diff --git a/lib/c-ares-1.32.3/docs/ares_query.3 b/lib/c-ares-1.33.0/docs/ares_query.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_query.3 rename to lib/c-ares-1.33.0/docs/ares_query.3 diff --git a/lib/c-ares-1.32.3/docs/ares_query_dnsrec.3 b/lib/c-ares-1.33.0/docs/ares_query_dnsrec.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_query_dnsrec.3 rename to lib/c-ares-1.33.0/docs/ares_query_dnsrec.3 diff --git a/lib/c-ares-1.32.3/docs/ares_queue.3 b/lib/c-ares-1.33.0/docs/ares_queue.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_queue.3 rename to lib/c-ares-1.33.0/docs/ares_queue.3 diff --git a/lib/c-ares-1.32.3/docs/ares_queue_active_queries.3 b/lib/c-ares-1.33.0/docs/ares_queue_active_queries.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_queue_active_queries.3 rename to lib/c-ares-1.33.0/docs/ares_queue_active_queries.3 diff --git a/lib/c-ares-1.32.3/docs/ares_queue_wait_empty.3 b/lib/c-ares-1.33.0/docs/ares_queue_wait_empty.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_queue_wait_empty.3 rename to lib/c-ares-1.33.0/docs/ares_queue_wait_empty.3 diff --git a/lib/c-ares-1.32.3/docs/ares_reinit.3 b/lib/c-ares-1.33.0/docs/ares_reinit.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_reinit.3 rename to lib/c-ares-1.33.0/docs/ares_reinit.3 diff --git a/lib/c-ares-1.32.3/docs/ares_save_options.3 b/lib/c-ares-1.33.0/docs/ares_save_options.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_save_options.3 rename to lib/c-ares-1.33.0/docs/ares_save_options.3 diff --git a/lib/c-ares-1.32.3/docs/ares_search.3 b/lib/c-ares-1.33.0/docs/ares_search.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_search.3 rename to lib/c-ares-1.33.0/docs/ares_search.3 diff --git a/lib/c-ares-1.32.3/docs/ares_search_dnsrec.3 b/lib/c-ares-1.33.0/docs/ares_search_dnsrec.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_search_dnsrec.3 rename to lib/c-ares-1.33.0/docs/ares_search_dnsrec.3 diff --git a/lib/c-ares-1.32.3/docs/ares_send.3 b/lib/c-ares-1.33.0/docs/ares_send.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_send.3 rename to lib/c-ares-1.33.0/docs/ares_send.3 diff --git a/lib/c-ares-1.32.3/docs/ares_send_dnsrec.3 b/lib/c-ares-1.33.0/docs/ares_send_dnsrec.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_send_dnsrec.3 rename to lib/c-ares-1.33.0/docs/ares_send_dnsrec.3 diff --git a/lib/c-ares-1.32.3/docs/ares_set_local_dev.3 b/lib/c-ares-1.33.0/docs/ares_set_local_dev.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_set_local_dev.3 rename to lib/c-ares-1.33.0/docs/ares_set_local_dev.3 diff --git a/lib/c-ares-1.32.3/docs/ares_set_local_ip4.3 b/lib/c-ares-1.33.0/docs/ares_set_local_ip4.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_set_local_ip4.3 rename to lib/c-ares-1.33.0/docs/ares_set_local_ip4.3 diff --git a/lib/c-ares-1.32.3/docs/ares_set_local_ip6.3 b/lib/c-ares-1.33.0/docs/ares_set_local_ip6.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_set_local_ip6.3 rename to lib/c-ares-1.33.0/docs/ares_set_local_ip6.3 diff --git a/lib/c-ares-1.32.3/docs/ares_set_server_state_callback.3 b/lib/c-ares-1.33.0/docs/ares_set_server_state_callback.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_set_server_state_callback.3 rename to lib/c-ares-1.33.0/docs/ares_set_server_state_callback.3 diff --git a/lib/c-ares-1.32.3/docs/ares_set_servers.3 b/lib/c-ares-1.33.0/docs/ares_set_servers.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_set_servers.3 rename to lib/c-ares-1.33.0/docs/ares_set_servers.3 diff --git a/lib/c-ares-1.32.3/docs/ares_set_servers_csv.3 b/lib/c-ares-1.33.0/docs/ares_set_servers_csv.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_set_servers_csv.3 rename to lib/c-ares-1.33.0/docs/ares_set_servers_csv.3 diff --git a/lib/c-ares-1.32.3/docs/ares_set_servers_ports.3 b/lib/c-ares-1.33.0/docs/ares_set_servers_ports.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_set_servers_ports.3 rename to lib/c-ares-1.33.0/docs/ares_set_servers_ports.3 diff --git a/lib/c-ares-1.32.3/docs/ares_set_servers_ports_csv.3 b/lib/c-ares-1.33.0/docs/ares_set_servers_ports_csv.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_set_servers_ports_csv.3 rename to lib/c-ares-1.33.0/docs/ares_set_servers_ports_csv.3 diff --git a/lib/c-ares-1.32.3/docs/ares_set_socket_callback.3 b/lib/c-ares-1.33.0/docs/ares_set_socket_callback.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_set_socket_callback.3 rename to lib/c-ares-1.33.0/docs/ares_set_socket_callback.3 diff --git a/lib/c-ares-1.32.3/docs/ares_set_socket_configure_callback.3 b/lib/c-ares-1.33.0/docs/ares_set_socket_configure_callback.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_set_socket_configure_callback.3 rename to lib/c-ares-1.33.0/docs/ares_set_socket_configure_callback.3 diff --git a/lib/c-ares-1.32.3/docs/ares_set_socket_functions.3 b/lib/c-ares-1.33.0/docs/ares_set_socket_functions.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_set_socket_functions.3 rename to lib/c-ares-1.33.0/docs/ares_set_socket_functions.3 diff --git a/lib/c-ares-1.32.3/docs/ares_set_sortlist.3 b/lib/c-ares-1.33.0/docs/ares_set_sortlist.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_set_sortlist.3 rename to lib/c-ares-1.33.0/docs/ares_set_sortlist.3 diff --git a/lib/c-ares-1.32.3/docs/ares_strerror.3 b/lib/c-ares-1.33.0/docs/ares_strerror.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_strerror.3 rename to lib/c-ares-1.33.0/docs/ares_strerror.3 diff --git a/lib/c-ares-1.32.3/docs/ares_svcb_param_t.3 b/lib/c-ares-1.33.0/docs/ares_svcb_param_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_svcb_param_t.3 rename to lib/c-ares-1.33.0/docs/ares_svcb_param_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_threadsafety.3 b/lib/c-ares-1.33.0/docs/ares_threadsafety.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_threadsafety.3 rename to lib/c-ares-1.33.0/docs/ares_threadsafety.3 diff --git a/lib/c-ares-1.32.3/docs/ares_timeout.3 b/lib/c-ares-1.33.0/docs/ares_timeout.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_timeout.3 rename to lib/c-ares-1.33.0/docs/ares_timeout.3 diff --git a/lib/c-ares-1.32.3/docs/ares_tlsa_match_t.3 b/lib/c-ares-1.33.0/docs/ares_tlsa_match_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_tlsa_match_t.3 rename to lib/c-ares-1.33.0/docs/ares_tlsa_match_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_tlsa_selector_t.3 b/lib/c-ares-1.33.0/docs/ares_tlsa_selector_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_tlsa_selector_t.3 rename to lib/c-ares-1.33.0/docs/ares_tlsa_selector_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_tlsa_usage_t.3 b/lib/c-ares-1.33.0/docs/ares_tlsa_usage_t.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_tlsa_usage_t.3 rename to lib/c-ares-1.33.0/docs/ares_tlsa_usage_t.3 diff --git a/lib/c-ares-1.32.3/docs/ares_version.3 b/lib/c-ares-1.33.0/docs/ares_version.3 similarity index 100% rename from lib/c-ares-1.32.3/docs/ares_version.3 rename to lib/c-ares-1.33.0/docs/ares_version.3 diff --git a/lib/c-ares-1.32.3/include/CMakeLists.txt b/lib/c-ares-1.33.0/include/CMakeLists.txt similarity index 100% rename from lib/c-ares-1.32.3/include/CMakeLists.txt rename to lib/c-ares-1.33.0/include/CMakeLists.txt diff --git a/lib/c-ares-1.32.3/include/Makefile.am b/lib/c-ares-1.33.0/include/Makefile.am similarity index 100% rename from lib/c-ares-1.32.3/include/Makefile.am rename to lib/c-ares-1.33.0/include/Makefile.am diff --git a/lib/c-ares-1.32.3/include/Makefile.in b/lib/c-ares-1.33.0/include/Makefile.in similarity index 96% rename from lib/c-ares-1.32.3/include/Makefile.in rename to lib/c-ares-1.33.0/include/Makefile.in index 94e8e640fbe..2960e5a5523 100644 --- a/lib/c-ares-1.32.3/include/Makefile.in +++ b/lib/c-ares-1.33.0/include/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. +# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2021 Free Software Foundation, Inc. +# Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -70,6 +70,8 @@ am__make_running_with_option = \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -162,10 +164,9 @@ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ + { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(includedir)" HEADERS = $(include_HEADERS) @@ -299,8 +300,10 @@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ @@ -393,8 +396,8 @@ ares_build.h: stamp-h2 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h2 stamp-h2: $(srcdir)/ares_build.h.in $(top_builddir)/config.status - @rm -f stamp-h2 - cd $(top_builddir) && $(SHELL) ./config.status include/ares_build.h + $(AM_V_at)rm -f stamp-h2 + $(AM_V_GEN)cd $(top_builddir) && $(SHELL) ./config.status include/ares_build.h distclean-hdr: -rm -f ares_build.h stamp-h2 @@ -541,8 +544,8 @@ mostlyclean-generic: clean-generic: distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -635,3 +638,10 @@ uninstall-am: uninstall-includeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/lib/c-ares-1.32.3/include/ares.h b/lib/c-ares-1.33.0/include/ares.h similarity index 99% rename from lib/c-ares-1.32.3/include/ares.h rename to lib/c-ares-1.33.0/include/ares.h index afff1759b39..95fc2440a1f 100644 --- a/lib/c-ares-1.32.3/include/ares.h +++ b/lib/c-ares-1.33.0/include/ares.h @@ -95,7 +95,7 @@ #endif typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t; -typedef CARES_TYPEOF_ARES_SSIZE_T ares_ssize_t; +typedef CARES_TYPEOF_ARES_SSIZE_T ares_ssize_t; #ifdef __cplusplus extern "C" { diff --git a/lib/c-ares-1.32.3/include/ares_build.h b/lib/c-ares-1.33.0/include/ares_build.h similarity index 100% rename from lib/c-ares-1.32.3/include/ares_build.h rename to lib/c-ares-1.33.0/include/ares_build.h diff --git a/lib/c-ares-1.32.3/include/ares_build.h.cmake b/lib/c-ares-1.33.0/include/ares_build.h.cmake similarity index 100% rename from lib/c-ares-1.32.3/include/ares_build.h.cmake rename to lib/c-ares-1.33.0/include/ares_build.h.cmake diff --git a/lib/c-ares-1.32.3/include/ares_build.h.in b/lib/c-ares-1.33.0/include/ares_build.h.in similarity index 100% rename from lib/c-ares-1.32.3/include/ares_build.h.in rename to lib/c-ares-1.33.0/include/ares_build.h.in diff --git a/lib/c-ares-1.32.3/include/ares_dns.h b/lib/c-ares-1.33.0/include/ares_dns.h similarity index 100% rename from lib/c-ares-1.32.3/include/ares_dns.h rename to lib/c-ares-1.33.0/include/ares_dns.h diff --git a/lib/c-ares-1.32.3/include/ares_dns_record.h b/lib/c-ares-1.33.0/include/ares_dns_record.h similarity index 95% rename from lib/c-ares-1.32.3/include/ares_dns_record.h rename to lib/c-ares-1.33.0/include/ares_dns_record.h index 00b6809f124..2896eab24b3 100644 --- a/lib/c-ares-1.32.3/include/ares_dns_record.h +++ b/lib/c-ares-1.33.0/include/ares_dns_record.h @@ -152,28 +152,28 @@ typedef enum { ARES_RCODE_BADNAME = 20, /*!< RFC 2930. Duplicate Key Name */ ARES_RCODE_BADALG = 21, /*!< RFC 2930. Algorithm not supported */ ARES_RCODE_BADTRUNC = 22, /*!< RFC 8945. Bad Truncation */ - ARES_RCODE_BADCOOKIE = 23 /*!< RVC 7973. Bad/missing Server Cookie */ + ARES_RCODE_BADCOOKIE = 23 /*!< RFC 7873. Bad/missing Server Cookie */ } ares_dns_rcode_t; /*! Data types used */ typedef enum { - ARES_DATATYPE_INADDR = 1, /*!< struct in_addr * type */ - ARES_DATATYPE_INADDR6 = 2, /*!< struct ares_in6_addr * type */ - ARES_DATATYPE_U8 = 3, /*!< 8bit unsigned integer */ - ARES_DATATYPE_U16 = 4, /*!< 16bit unsigned integer */ - ARES_DATATYPE_U32 = 5, /*!< 32bit unsigned integer */ - ARES_DATATYPE_NAME = 6, /*!< Null-terminated string of a domain name */ - ARES_DATATYPE_STR = 7, /*!< Null-terminated string */ - ARES_DATATYPE_BIN = 8, /*!< Binary data */ - ARES_DATATYPE_BINP = 9, /*!< Officially defined as binary data, but likely - * printable. Guaranteed to have a NULL - * terminator for convenience (not included in - * length) */ - ARES_DATATYPE_OPT = 10, /*!< Array of options. 16bit identifier, BIN - * data. */ - ARES_DATATYPE_ABINP = 11 /*!< Array of binary data, likely printable. - * Guaranteed to have a NULL terminator for - * convenience (not included in length) */ + ARES_DATATYPE_INADDR = 1, /*!< struct in_addr * type */ + ARES_DATATYPE_INADDR6 = 2, /*!< struct ares_in6_addr * type */ + ARES_DATATYPE_U8 = 3, /*!< 8bit unsigned integer */ + ARES_DATATYPE_U16 = 4, /*!< 16bit unsigned integer */ + ARES_DATATYPE_U32 = 5, /*!< 32bit unsigned integer */ + ARES_DATATYPE_NAME = 6, /*!< Null-terminated string of a domain name */ + ARES_DATATYPE_STR = 7, /*!< Null-terminated string */ + ARES_DATATYPE_BIN = 8, /*!< Binary data */ + ARES_DATATYPE_BINP = 9, /*!< Officially defined as binary data, but likely + * printable. Guaranteed to have a NULL + * terminator for convenience (not included in + * length) */ + ARES_DATATYPE_OPT = 10, /*!< Array of options. 16bit identifier, BIN + * data. */ + ARES_DATATYPE_ABINP = 11 /*!< Array of binary data, likely printable. + * Guaranteed to have a NULL terminator for + * convenience (not included in length) */ } ares_dns_datatype_t; /*! Keys used for all RR Types. We take the record type and multiply by 100 @@ -609,8 +609,8 @@ CARES_EXTERN unsigned short * \param[in] id DNS query id * \return ARES_TRUE on success, ARES_FALSE on usage error */ -CARES_EXTERN ares_bool_t - ares_dns_record_set_id(ares_dns_record_t *dnsrec, unsigned short id); +CARES_EXTERN ares_bool_t ares_dns_record_set_id(ares_dns_record_t *dnsrec, + unsigned short id); /*! Get the DNS Record Flags * @@ -885,10 +885,10 @@ CARES_EXTERN ares_status_t ares_dns_rr_set_bin(ares_dns_rr_t *dns_rr, * \param[in] len Length of binary data * \return ARES_SUCCESS on success */ -CARES_EXTERN ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, - ares_dns_rr_key_t key, +CARES_EXTERN ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, const unsigned char *val, - size_t len); + size_t len); /*! Delete binary array value (ABINP) data for specified resource record and * key by specified index. Can only be used on keys with datatype @@ -899,9 +899,9 @@ CARES_EXTERN ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, * \param[in] idx Index to delete * \return ARES_SUCCESS on success */ -CARES_EXTERN ares_status_t ares_dns_rr_del_abin(ares_dns_rr_t *dns_rr, +CARES_EXTERN ares_status_t ares_dns_rr_del_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, - size_t idx); + size_t idx); /*! Set the option for the RR * @@ -918,6 +918,17 @@ CARES_EXTERN ares_status_t ares_dns_rr_set_opt(ares_dns_rr_t *dns_rr, const unsigned char *val, size_t val_len); +/*! Delete the option for the RR by id + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \param[in] opt Option record key id. + * \return ARES_SUCCESS if removed, ARES_ENOTFOUND if not found + */ +CARES_EXTERN ares_status_t ares_dns_rr_del_opt_byid(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, + unsigned short opt); + /*! Retrieve a pointer to the ipv4 address. Can only be used on keys with * datatype ARES_DATATYPE_INADDR. * @@ -1000,7 +1011,7 @@ CARES_EXTERN const unsigned char * * \return count of values */ CARES_EXTERN size_t ares_dns_rr_get_abin_cnt(const ares_dns_rr_t *dns_rr, - ares_dns_rr_key_t key); + ares_dns_rr_key_t key); /*! Retrieve a pointer to the binary array data from the specified index. Can * only be used on keys with datatype ARES_DATATYPE_ABINP. If ABINP, the data @@ -1014,8 +1025,9 @@ CARES_EXTERN size_t ares_dns_rr_get_abin_cnt(const ares_dns_rr_t *dns_rr, * \param[out] len Length of binary data returned * \return pointer binary data or NULL on error */ -CARES_EXTERN const unsigned char *ares_dns_rr_get_abin( - const ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, size_t idx, size_t *len); +CARES_EXTERN const unsigned char * + ares_dns_rr_get_abin(const ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + size_t idx, size_t *len); /*! Retrieve the number of options stored for the RR. diff --git a/lib/c-ares-1.32.3/include/ares_nameser.h b/lib/c-ares-1.33.0/include/ares_nameser.h similarity index 100% rename from lib/c-ares-1.32.3/include/ares_nameser.h rename to lib/c-ares-1.33.0/include/ares_nameser.h diff --git a/lib/c-ares-1.32.3/include/ares_version.h b/lib/c-ares-1.33.0/include/ares_version.h similarity index 94% rename from lib/c-ares-1.32.3/include/ares_version.h rename to lib/c-ares-1.33.0/include/ares_version.h index 62541c31ba9..fef66b73979 100644 --- a/lib/c-ares-1.32.3/include/ares_version.h +++ b/lib/c-ares-1.33.0/include/ares_version.h @@ -31,12 +31,12 @@ #define ARES_COPYRIGHT "2004 - 2024 Daniel Stenberg, ." #define ARES_VERSION_MAJOR 1 -#define ARES_VERSION_MINOR 32 -#define ARES_VERSION_PATCH 3 +#define ARES_VERSION_MINOR 33 +#define ARES_VERSION_PATCH 0 #define ARES_VERSION \ ((ARES_VERSION_MAJOR << 16) | (ARES_VERSION_MINOR << 8) | \ (ARES_VERSION_PATCH)) -#define ARES_VERSION_STR "1.32.3" +#define ARES_VERSION_STR "1.33.0" #define CARES_HAVE_ARES_LIBRARY_INIT 1 #define CARES_HAVE_ARES_LIBRARY_CLEANUP 1 diff --git a/lib/c-ares-1.32.3/libcares.pc.cmake b/lib/c-ares-1.33.0/libcares.pc.cmake similarity index 100% rename from lib/c-ares-1.32.3/libcares.pc.cmake rename to lib/c-ares-1.33.0/libcares.pc.cmake diff --git a/lib/c-ares-1.32.3/libcares.pc.in b/lib/c-ares-1.33.0/libcares.pc.in similarity index 100% rename from lib/c-ares-1.32.3/libcares.pc.in rename to lib/c-ares-1.33.0/libcares.pc.in diff --git a/lib/c-ares-1.32.3/m4/ax_ac_append_to_file.m4 b/lib/c-ares-1.33.0/m4/ax_ac_append_to_file.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_ac_append_to_file.m4 rename to lib/c-ares-1.33.0/m4/ax_ac_append_to_file.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_ac_print_to_file.m4 b/lib/c-ares-1.33.0/m4/ax_ac_print_to_file.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_ac_print_to_file.m4 rename to lib/c-ares-1.33.0/m4/ax_ac_print_to_file.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_add_am_macro_static.m4 b/lib/c-ares-1.33.0/m4/ax_add_am_macro_static.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_add_am_macro_static.m4 rename to lib/c-ares-1.33.0/m4/ax_add_am_macro_static.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_am_macros_static.m4 b/lib/c-ares-1.33.0/m4/ax_am_macros_static.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_am_macros_static.m4 rename to lib/c-ares-1.33.0/m4/ax_am_macros_static.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_append_compile_flags.m4 b/lib/c-ares-1.33.0/m4/ax_append_compile_flags.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_append_compile_flags.m4 rename to lib/c-ares-1.33.0/m4/ax_append_compile_flags.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_append_flag.m4 b/lib/c-ares-1.33.0/m4/ax_append_flag.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_append_flag.m4 rename to lib/c-ares-1.33.0/m4/ax_append_flag.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_append_link_flags.m4 b/lib/c-ares-1.33.0/m4/ax_append_link_flags.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_append_link_flags.m4 rename to lib/c-ares-1.33.0/m4/ax_append_link_flags.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_check_compile_flag.m4 b/lib/c-ares-1.33.0/m4/ax_check_compile_flag.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_check_compile_flag.m4 rename to lib/c-ares-1.33.0/m4/ax_check_compile_flag.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_check_gnu_make.m4 b/lib/c-ares-1.33.0/m4/ax_check_gnu_make.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_check_gnu_make.m4 rename to lib/c-ares-1.33.0/m4/ax_check_gnu_make.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_check_link_flag.m4 b/lib/c-ares-1.33.0/m4/ax_check_link_flag.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_check_link_flag.m4 rename to lib/c-ares-1.33.0/m4/ax_check_link_flag.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_check_user_namespace.m4 b/lib/c-ares-1.33.0/m4/ax_check_user_namespace.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_check_user_namespace.m4 rename to lib/c-ares-1.33.0/m4/ax_check_user_namespace.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_check_uts_namespace.m4 b/lib/c-ares-1.33.0/m4/ax_check_uts_namespace.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_check_uts_namespace.m4 rename to lib/c-ares-1.33.0/m4/ax_check_uts_namespace.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_code_coverage.m4 b/lib/c-ares-1.33.0/m4/ax_code_coverage.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_code_coverage.m4 rename to lib/c-ares-1.33.0/m4/ax_code_coverage.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_compiler_vendor.m4 b/lib/c-ares-1.33.0/m4/ax_compiler_vendor.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_compiler_vendor.m4 rename to lib/c-ares-1.33.0/m4/ax_compiler_vendor.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_cxx_compile_stdcxx.m4 b/lib/c-ares-1.33.0/m4/ax_cxx_compile_stdcxx.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_cxx_compile_stdcxx.m4 rename to lib/c-ares-1.33.0/m4/ax_cxx_compile_stdcxx.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_cxx_compile_stdcxx_14.m4 b/lib/c-ares-1.33.0/m4/ax_cxx_compile_stdcxx_14.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_cxx_compile_stdcxx_14.m4 rename to lib/c-ares-1.33.0/m4/ax_cxx_compile_stdcxx_14.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_file_escapes.m4 b/lib/c-ares-1.33.0/m4/ax_file_escapes.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_file_escapes.m4 rename to lib/c-ares-1.33.0/m4/ax_file_escapes.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_pthread.m4 b/lib/c-ares-1.33.0/m4/ax_pthread.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_pthread.m4 rename to lib/c-ares-1.33.0/m4/ax_pthread.m4 diff --git a/lib/c-ares-1.32.3/m4/ax_require_defined.m4 b/lib/c-ares-1.33.0/m4/ax_require_defined.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ax_require_defined.m4 rename to lib/c-ares-1.33.0/m4/ax_require_defined.m4 diff --git a/lib/c-ares-1.32.3/m4/libtool.m4 b/lib/c-ares-1.33.0/m4/libtool.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/libtool.m4 rename to lib/c-ares-1.33.0/m4/libtool.m4 diff --git a/lib/c-ares-1.32.3/m4/ltoptions.m4 b/lib/c-ares-1.33.0/m4/ltoptions.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ltoptions.m4 rename to lib/c-ares-1.33.0/m4/ltoptions.m4 diff --git a/lib/c-ares-1.32.3/m4/ltsugar.m4 b/lib/c-ares-1.33.0/m4/ltsugar.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ltsugar.m4 rename to lib/c-ares-1.33.0/m4/ltsugar.m4 diff --git a/lib/c-ares-1.32.3/m4/ltversion.m4 b/lib/c-ares-1.33.0/m4/ltversion.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/ltversion.m4 rename to lib/c-ares-1.33.0/m4/ltversion.m4 diff --git a/lib/c-ares-1.32.3/m4/lt~obsolete.m4 b/lib/c-ares-1.33.0/m4/lt~obsolete.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/lt~obsolete.m4 rename to lib/c-ares-1.33.0/m4/lt~obsolete.m4 diff --git a/lib/c-ares-1.32.3/m4/pkg.m4 b/lib/c-ares-1.33.0/m4/pkg.m4 similarity index 100% rename from lib/c-ares-1.32.3/m4/pkg.m4 rename to lib/c-ares-1.33.0/m4/pkg.m4 diff --git a/lib/c-ares-1.32.3/src/CMakeLists.txt b/lib/c-ares-1.33.0/src/CMakeLists.txt similarity index 100% rename from lib/c-ares-1.32.3/src/CMakeLists.txt rename to lib/c-ares-1.33.0/src/CMakeLists.txt diff --git a/lib/c-ares-1.32.3/src/Makefile.am b/lib/c-ares-1.33.0/src/Makefile.am similarity index 100% rename from lib/c-ares-1.32.3/src/Makefile.am rename to lib/c-ares-1.33.0/src/Makefile.am diff --git a/lib/c-ares-1.32.3/src/Makefile.in b/lib/c-ares-1.33.0/src/Makefile.in similarity index 97% rename from lib/c-ares-1.32.3/src/Makefile.in rename to lib/c-ares-1.33.0/src/Makefile.in index f657ef0d43e..45558374c87 100644 --- a/lib/c-ares-1.32.3/src/Makefile.in +++ b/lib/c-ares-1.33.0/src/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. +# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2021 Free Software Foundation, Inc. +# Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -69,6 +69,8 @@ am__make_running_with_option = \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -310,8 +312,10 @@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ @@ -585,8 +589,8 @@ mostlyclean-generic: clean-generic: distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -678,3 +682,10 @@ uninstall-am: # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/lib/c-ares-1.32.3/src/lib/CMakeLists.txt b/lib/c-ares-1.33.0/src/lib/CMakeLists.txt similarity index 100% rename from lib/c-ares-1.32.3/src/lib/CMakeLists.txt rename to lib/c-ares-1.33.0/src/lib/CMakeLists.txt diff --git a/lib/c-ares-1.32.3/src/lib/Makefile.am b/lib/c-ares-1.33.0/src/lib/Makefile.am similarity index 100% rename from lib/c-ares-1.32.3/src/lib/Makefile.am rename to lib/c-ares-1.33.0/src/lib/Makefile.am diff --git a/lib/c-ares-1.32.3/src/lib/Makefile.in b/lib/c-ares-1.33.0/src/lib/Makefile.in similarity index 65% rename from lib/c-ares-1.32.3/src/lib/Makefile.in rename to lib/c-ares-1.33.0/src/lib/Makefile.in index d1758eb8adb..c0d96ed81bb 100644 --- a/lib/c-ares-1.32.3/src/lib/Makefile.in +++ b/lib/c-ares-1.33.0/src/lib/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. +# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2021 Free Software Foundation, Inc. +# Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,7 +15,7 @@ @SET_MAKE@ # aminclude_static.am generated automatically by Autoconf -# from AX_AM_MACROS_STATIC on Wed Jul 24 05:40:58 EDT 2024 +# from AX_AM_MACROS_STATIC on Fri Aug 2 08:48:39 EDT 2024 # Copyright (C) The c-ares project and its contributors # SPDX-License-Identifier: MIT @@ -76,6 +76,8 @@ am__make_running_with_option = \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -152,75 +154,84 @@ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ + { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libcares_la_LIBADD = +am__dirstamp = $(am__leading_dot)dirstamp am__objects_1 = libcares_la-ares__addrinfo2hostent.lo \ libcares_la-ares__addrinfo_localhost.lo \ - libcares_la-ares__buf.lo libcares_la-ares__close_sockets.lo \ - libcares_la-ares__hosts_file.lo libcares_la-ares__htable.lo \ - libcares_la-ares__htable_asvp.lo \ - libcares_la-ares__htable_strvp.lo \ - libcares_la-ares__htable_szvp.lo \ - libcares_la-ares__htable_vpvp.lo \ - libcares_la-ares__iface_ips.lo libcares_la-ares__llist.lo \ + libcares_la-ares__close_sockets.lo \ + libcares_la-ares__hosts_file.lo \ libcares_la-ares__parse_into_addrinfo.lo \ - libcares_la-ares__slist.lo libcares_la-ares__socket.lo \ - libcares_la-ares__sortaddrinfo.lo libcares_la-ares__threads.lo \ - libcares_la-ares__timeval.lo libcares_la-ares_android.lo \ - libcares_la-ares_cancel.lo libcares_la-ares_data.lo \ - libcares_la-ares_destroy.lo libcares_la-ares_dns_mapping.lo \ - libcares_la-ares_dns_multistring.lo \ - libcares_la-ares_dns_name.lo libcares_la-ares_dns_parse.lo \ - libcares_la-ares_dns_record.lo libcares_la-ares_dns_write.lo \ - libcares_la-ares_event_configchg.lo \ - libcares_la-ares_event_epoll.lo \ - libcares_la-ares_event_kqueue.lo \ - libcares_la-ares_event_poll.lo \ - libcares_la-ares_event_select.lo \ - libcares_la-ares_event_thread.lo \ - libcares_la-ares_event_wake_pipe.lo \ - libcares_la-ares_event_win32.lo \ - libcares_la-ares_expand_name.lo \ - libcares_la-ares_expand_string.lo libcares_la-ares_fds.lo \ - libcares_la-ares_free_hostent.lo \ + libcares_la-ares__socket.lo libcares_la-ares__sortaddrinfo.lo \ + libcares_la-ares_android.lo libcares_la-ares_cancel.lo \ + libcares_la-ares_cookie.lo libcares_la-ares_data.lo \ + libcares_la-ares_destroy.lo libcares_la-ares_free_hostent.lo \ libcares_la-ares_free_string.lo \ libcares_la-ares_freeaddrinfo.lo \ libcares_la-ares_getaddrinfo.lo libcares_la-ares_getenv.lo \ libcares_la-ares_gethostbyaddr.lo \ libcares_la-ares_gethostbyname.lo \ - libcares_la-ares_getnameinfo.lo libcares_la-ares_getsock.lo \ - libcares_la-ares_init.lo libcares_la-ares_library_init.lo \ - libcares_la-ares_math.lo libcares_la-ares_metrics.lo \ - libcares_la-ares_create_query.lo libcares_la-ares_options.lo \ - libcares_la-ares_parse_a_reply.lo \ - libcares_la-ares_parse_aaaa_reply.lo \ - libcares_la-ares_parse_caa_reply.lo \ - libcares_la-ares_parse_mx_reply.lo \ - libcares_la-ares_parse_naptr_reply.lo \ - libcares_la-ares_parse_ns_reply.lo \ - libcares_la-ares_parse_ptr_reply.lo \ - libcares_la-ares_parse_soa_reply.lo \ - libcares_la-ares_parse_srv_reply.lo \ - libcares_la-ares_parse_txt_reply.lo \ - libcares_la-ares_parse_uri_reply.lo \ - libcares_la-ares_platform.lo libcares_la-ares_process.lo \ - libcares_la-ares_qcache.lo libcares_la-ares_query.lo \ - libcares_la-ares_rand.lo libcares_la-ares_search.lo \ - libcares_la-ares_send.lo libcares_la-ares_strcasecmp.lo \ - libcares_la-ares_str.lo libcares_la-ares_strerror.lo \ - libcares_la-ares_strsplit.lo libcares_la-ares_sysconfig.lo \ + libcares_la-ares_getnameinfo.lo libcares_la-ares_init.lo \ + libcares_la-ares_library_init.lo libcares_la-ares_metrics.lo \ + libcares_la-ares_options.lo libcares_la-ares_platform.lo \ + libcares_la-ares_process.lo libcares_la-ares_qcache.lo \ + libcares_la-ares_query.lo libcares_la-ares_search.lo \ + libcares_la-ares_send.lo libcares_la-ares_strerror.lo \ + libcares_la-ares_sysconfig.lo \ libcares_la-ares_sysconfig_files.lo \ libcares_la-ares_sysconfig_mac.lo \ libcares_la-ares_sysconfig_win.lo libcares_la-ares_timeout.lo \ libcares_la-ares_update_servers.lo libcares_la-ares_version.lo \ libcares_la-inet_net_pton.lo libcares_la-inet_ntop.lo \ - libcares_la-windows_port.lo + libcares_la-windows_port.lo dsa/libcares_la-ares__array.lo \ + dsa/libcares_la-ares__htable.lo \ + dsa/libcares_la-ares__htable_asvp.lo \ + dsa/libcares_la-ares__htable_strvp.lo \ + dsa/libcares_la-ares__htable_szvp.lo \ + dsa/libcares_la-ares__htable_vpvp.lo \ + dsa/libcares_la-ares__llist.lo dsa/libcares_la-ares__slist.lo \ + event/libcares_la-ares_event_configchg.lo \ + event/libcares_la-ares_event_epoll.lo \ + event/libcares_la-ares_event_kqueue.lo \ + event/libcares_la-ares_event_poll.lo \ + event/libcares_la-ares_event_select.lo \ + event/libcares_la-ares_event_thread.lo \ + event/libcares_la-ares_event_wake_pipe.lo \ + event/libcares_la-ares_event_win32.lo \ + legacy/libcares_la-ares_create_query.lo \ + legacy/libcares_la-ares_expand_name.lo \ + legacy/libcares_la-ares_expand_string.lo \ + legacy/libcares_la-ares_fds.lo \ + legacy/libcares_la-ares_getsock.lo \ + legacy/libcares_la-ares_parse_a_reply.lo \ + legacy/libcares_la-ares_parse_aaaa_reply.lo \ + legacy/libcares_la-ares_parse_caa_reply.lo \ + legacy/libcares_la-ares_parse_mx_reply.lo \ + legacy/libcares_la-ares_parse_naptr_reply.lo \ + legacy/libcares_la-ares_parse_ns_reply.lo \ + legacy/libcares_la-ares_parse_ptr_reply.lo \ + legacy/libcares_la-ares_parse_soa_reply.lo \ + legacy/libcares_la-ares_parse_srv_reply.lo \ + legacy/libcares_la-ares_parse_txt_reply.lo \ + legacy/libcares_la-ares_parse_uri_reply.lo \ + record/libcares_la-ares_dns_mapping.lo \ + record/libcares_la-ares_dns_multistring.lo \ + record/libcares_la-ares_dns_name.lo \ + record/libcares_la-ares_dns_parse.lo \ + record/libcares_la-ares_dns_record.lo \ + record/libcares_la-ares_dns_write.lo \ + str/libcares_la-ares__buf.lo \ + str/libcares_la-ares_strcasecmp.lo str/libcares_la-ares_str.lo \ + str/libcares_la-ares_strsplit.lo \ + util/libcares_la-ares__iface_ips.lo \ + util/libcares_la-ares__threads.lo \ + util/libcares_la-ares__timeval.lo \ + util/libcares_la-ares_math.lo util/libcares_la-ares_rand.lo am__objects_2 = am_libcares_la_OBJECTS = $(am__objects_1) $(am__objects_2) libcares_la_OBJECTS = $(am_libcares_la_OBJECTS) @@ -249,44 +260,16 @@ am__maybe_remake_depfiles = depfiles am__depfiles_remade = \ ./$(DEPDIR)/libcares_la-ares__addrinfo2hostent.Plo \ ./$(DEPDIR)/libcares_la-ares__addrinfo_localhost.Plo \ - ./$(DEPDIR)/libcares_la-ares__buf.Plo \ ./$(DEPDIR)/libcares_la-ares__close_sockets.Plo \ ./$(DEPDIR)/libcares_la-ares__hosts_file.Plo \ - ./$(DEPDIR)/libcares_la-ares__htable.Plo \ - ./$(DEPDIR)/libcares_la-ares__htable_asvp.Plo \ - ./$(DEPDIR)/libcares_la-ares__htable_strvp.Plo \ - ./$(DEPDIR)/libcares_la-ares__htable_szvp.Plo \ - ./$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo \ - ./$(DEPDIR)/libcares_la-ares__iface_ips.Plo \ - ./$(DEPDIR)/libcares_la-ares__llist.Plo \ ./$(DEPDIR)/libcares_la-ares__parse_into_addrinfo.Plo \ - ./$(DEPDIR)/libcares_la-ares__slist.Plo \ ./$(DEPDIR)/libcares_la-ares__socket.Plo \ ./$(DEPDIR)/libcares_la-ares__sortaddrinfo.Plo \ - ./$(DEPDIR)/libcares_la-ares__threads.Plo \ - ./$(DEPDIR)/libcares_la-ares__timeval.Plo \ ./$(DEPDIR)/libcares_la-ares_android.Plo \ ./$(DEPDIR)/libcares_la-ares_cancel.Plo \ - ./$(DEPDIR)/libcares_la-ares_create_query.Plo \ + ./$(DEPDIR)/libcares_la-ares_cookie.Plo \ ./$(DEPDIR)/libcares_la-ares_data.Plo \ ./$(DEPDIR)/libcares_la-ares_destroy.Plo \ - ./$(DEPDIR)/libcares_la-ares_dns_mapping.Plo \ - ./$(DEPDIR)/libcares_la-ares_dns_multistring.Plo \ - ./$(DEPDIR)/libcares_la-ares_dns_name.Plo \ - ./$(DEPDIR)/libcares_la-ares_dns_parse.Plo \ - ./$(DEPDIR)/libcares_la-ares_dns_record.Plo \ - ./$(DEPDIR)/libcares_la-ares_dns_write.Plo \ - ./$(DEPDIR)/libcares_la-ares_event_configchg.Plo \ - ./$(DEPDIR)/libcares_la-ares_event_epoll.Plo \ - ./$(DEPDIR)/libcares_la-ares_event_kqueue.Plo \ - ./$(DEPDIR)/libcares_la-ares_event_poll.Plo \ - ./$(DEPDIR)/libcares_la-ares_event_select.Plo \ - ./$(DEPDIR)/libcares_la-ares_event_thread.Plo \ - ./$(DEPDIR)/libcares_la-ares_event_wake_pipe.Plo \ - ./$(DEPDIR)/libcares_la-ares_event_win32.Plo \ - ./$(DEPDIR)/libcares_la-ares_expand_name.Plo \ - ./$(DEPDIR)/libcares_la-ares_expand_string.Plo \ - ./$(DEPDIR)/libcares_la-ares_fds.Plo \ ./$(DEPDIR)/libcares_la-ares_free_hostent.Plo \ ./$(DEPDIR)/libcares_la-ares_free_string.Plo \ ./$(DEPDIR)/libcares_la-ares_freeaddrinfo.Plo \ @@ -295,34 +278,17 @@ am__depfiles_remade = \ ./$(DEPDIR)/libcares_la-ares_gethostbyaddr.Plo \ ./$(DEPDIR)/libcares_la-ares_gethostbyname.Plo \ ./$(DEPDIR)/libcares_la-ares_getnameinfo.Plo \ - ./$(DEPDIR)/libcares_la-ares_getsock.Plo \ ./$(DEPDIR)/libcares_la-ares_init.Plo \ ./$(DEPDIR)/libcares_la-ares_library_init.Plo \ - ./$(DEPDIR)/libcares_la-ares_math.Plo \ ./$(DEPDIR)/libcares_la-ares_metrics.Plo \ ./$(DEPDIR)/libcares_la-ares_options.Plo \ - ./$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo \ - ./$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo \ - ./$(DEPDIR)/libcares_la-ares_parse_caa_reply.Plo \ - ./$(DEPDIR)/libcares_la-ares_parse_mx_reply.Plo \ - ./$(DEPDIR)/libcares_la-ares_parse_naptr_reply.Plo \ - ./$(DEPDIR)/libcares_la-ares_parse_ns_reply.Plo \ - ./$(DEPDIR)/libcares_la-ares_parse_ptr_reply.Plo \ - ./$(DEPDIR)/libcares_la-ares_parse_soa_reply.Plo \ - ./$(DEPDIR)/libcares_la-ares_parse_srv_reply.Plo \ - ./$(DEPDIR)/libcares_la-ares_parse_txt_reply.Plo \ - ./$(DEPDIR)/libcares_la-ares_parse_uri_reply.Plo \ ./$(DEPDIR)/libcares_la-ares_platform.Plo \ ./$(DEPDIR)/libcares_la-ares_process.Plo \ ./$(DEPDIR)/libcares_la-ares_qcache.Plo \ ./$(DEPDIR)/libcares_la-ares_query.Plo \ - ./$(DEPDIR)/libcares_la-ares_rand.Plo \ ./$(DEPDIR)/libcares_la-ares_search.Plo \ ./$(DEPDIR)/libcares_la-ares_send.Plo \ - ./$(DEPDIR)/libcares_la-ares_str.Plo \ - ./$(DEPDIR)/libcares_la-ares_strcasecmp.Plo \ ./$(DEPDIR)/libcares_la-ares_strerror.Plo \ - ./$(DEPDIR)/libcares_la-ares_strsplit.Plo \ ./$(DEPDIR)/libcares_la-ares_sysconfig.Plo \ ./$(DEPDIR)/libcares_la-ares_sysconfig_files.Plo \ ./$(DEPDIR)/libcares_la-ares_sysconfig_mac.Plo \ @@ -332,7 +298,54 @@ am__depfiles_remade = \ ./$(DEPDIR)/libcares_la-ares_version.Plo \ ./$(DEPDIR)/libcares_la-inet_net_pton.Plo \ ./$(DEPDIR)/libcares_la-inet_ntop.Plo \ - ./$(DEPDIR)/libcares_la-windows_port.Plo + ./$(DEPDIR)/libcares_la-windows_port.Plo \ + dsa/$(DEPDIR)/libcares_la-ares__array.Plo \ + dsa/$(DEPDIR)/libcares_la-ares__htable.Plo \ + dsa/$(DEPDIR)/libcares_la-ares__htable_asvp.Plo \ + dsa/$(DEPDIR)/libcares_la-ares__htable_strvp.Plo \ + dsa/$(DEPDIR)/libcares_la-ares__htable_szvp.Plo \ + dsa/$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo \ + dsa/$(DEPDIR)/libcares_la-ares__llist.Plo \ + dsa/$(DEPDIR)/libcares_la-ares__slist.Plo \ + event/$(DEPDIR)/libcares_la-ares_event_configchg.Plo \ + event/$(DEPDIR)/libcares_la-ares_event_epoll.Plo \ + event/$(DEPDIR)/libcares_la-ares_event_kqueue.Plo \ + event/$(DEPDIR)/libcares_la-ares_event_poll.Plo \ + event/$(DEPDIR)/libcares_la-ares_event_select.Plo \ + event/$(DEPDIR)/libcares_la-ares_event_thread.Plo \ + event/$(DEPDIR)/libcares_la-ares_event_wake_pipe.Plo \ + event/$(DEPDIR)/libcares_la-ares_event_win32.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_create_query.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_expand_name.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_expand_string.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_fds.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_getsock.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_parse_caa_reply.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_parse_mx_reply.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_parse_naptr_reply.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_parse_ns_reply.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_parse_ptr_reply.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_parse_soa_reply.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_parse_srv_reply.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_parse_txt_reply.Plo \ + legacy/$(DEPDIR)/libcares_la-ares_parse_uri_reply.Plo \ + record/$(DEPDIR)/libcares_la-ares_dns_mapping.Plo \ + record/$(DEPDIR)/libcares_la-ares_dns_multistring.Plo \ + record/$(DEPDIR)/libcares_la-ares_dns_name.Plo \ + record/$(DEPDIR)/libcares_la-ares_dns_parse.Plo \ + record/$(DEPDIR)/libcares_la-ares_dns_record.Plo \ + record/$(DEPDIR)/libcares_la-ares_dns_write.Plo \ + str/$(DEPDIR)/libcares_la-ares__buf.Plo \ + str/$(DEPDIR)/libcares_la-ares_str.Plo \ + str/$(DEPDIR)/libcares_la-ares_strcasecmp.Plo \ + str/$(DEPDIR)/libcares_la-ares_strsplit.Plo \ + util/$(DEPDIR)/libcares_la-ares__iface_ips.Plo \ + util/$(DEPDIR)/libcares_la-ares__threads.Plo \ + util/$(DEPDIR)/libcares_la-ares__timeval.Plo \ + util/$(DEPDIR)/libcares_la-ares_math.Plo \ + util/$(DEPDIR)/libcares_la-ares_rand.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -539,8 +552,10 @@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ @@ -628,43 +643,16 @@ libcares_la_CFLAGS = $(AM_CFLAGS) $(libcares_la_CFLAGS_EXTRA) libcares_la_CPPFLAGS = $(AM_CPPFLAGS) $(libcares_la_CPPFLAGS_EXTRA) CSOURCES = ares__addrinfo2hostent.c \ ares__addrinfo_localhost.c \ - ares__buf.c \ ares__close_sockets.c \ ares__hosts_file.c \ - ares__htable.c \ - ares__htable_asvp.c \ - ares__htable_strvp.c \ - ares__htable_szvp.c \ - ares__htable_vpvp.c \ - ares__iface_ips.c \ - ares__llist.c \ ares__parse_into_addrinfo.c \ - ares__slist.c \ ares__socket.c \ ares__sortaddrinfo.c \ - ares__threads.c \ - ares__timeval.c \ ares_android.c \ ares_cancel.c \ + ares_cookie.c \ ares_data.c \ ares_destroy.c \ - ares_dns_mapping.c \ - ares_dns_multistring.c \ - ares_dns_name.c \ - ares_dns_parse.c \ - ares_dns_record.c \ - ares_dns_write.c \ - ares_event_configchg.c \ - ares_event_epoll.c \ - ares_event_kqueue.c \ - ares_event_poll.c \ - ares_event_select.c \ - ares_event_thread.c \ - ares_event_wake_pipe.c \ - ares_event_win32.c \ - ares_expand_name.c \ - ares_expand_string.c \ - ares_fds.c \ ares_free_hostent.c \ ares_free_string.c \ ares_freeaddrinfo.c \ @@ -673,35 +661,17 @@ CSOURCES = ares__addrinfo2hostent.c \ ares_gethostbyaddr.c \ ares_gethostbyname.c \ ares_getnameinfo.c \ - ares_getsock.c \ ares_init.c \ ares_library_init.c \ - ares_math.c \ ares_metrics.c \ - ares_create_query.c \ ares_options.c \ - ares_parse_a_reply.c \ - ares_parse_aaaa_reply.c \ - ares_parse_caa_reply.c \ - ares_parse_mx_reply.c \ - ares_parse_naptr_reply.c \ - ares_parse_ns_reply.c \ - ares_parse_ptr_reply.c \ - ares_parse_soa_reply.c \ - ares_parse_srv_reply.c \ - ares_parse_txt_reply.c \ - ares_parse_uri_reply.c \ ares_platform.c \ ares_process.c \ ares_qcache.c \ ares_query.c \ - ares_rand.c \ ares_search.c \ ares_send.c \ - ares_strcasecmp.c \ - ares_str.c \ ares_strerror.c \ - ares_strsplit.c \ ares_sysconfig.c \ ares_sysconfig_files.c \ ares_sysconfig_mac.c \ @@ -711,33 +681,81 @@ CSOURCES = ares__addrinfo2hostent.c \ ares_version.c \ inet_net_pton.c \ inet_ntop.c \ - windows_port.c - -HHEADERS = ares__buf.h \ - ares__htable.h \ - ares__htable_asvp.h \ - ares__htable_strvp.h \ - ares__htable_szvp.h \ - ares__htable_vpvp.h \ - ares__iface_ips.h \ - ares__llist.h \ - ares__slist.h \ - ares__threads.h \ - ares_android.h \ + windows_port.c \ + dsa/ares__array.c \ + dsa/ares__htable.c \ + dsa/ares__htable_asvp.c \ + dsa/ares__htable_strvp.c \ + dsa/ares__htable_szvp.c \ + dsa/ares__htable_vpvp.c \ + dsa/ares__llist.c \ + dsa/ares__slist.c \ + event/ares_event_configchg.c \ + event/ares_event_epoll.c \ + event/ares_event_kqueue.c \ + event/ares_event_poll.c \ + event/ares_event_select.c \ + event/ares_event_thread.c \ + event/ares_event_wake_pipe.c \ + event/ares_event_win32.c \ + legacy/ares_create_query.c \ + legacy/ares_expand_name.c \ + legacy/ares_expand_string.c \ + legacy/ares_fds.c \ + legacy/ares_getsock.c \ + legacy/ares_parse_a_reply.c \ + legacy/ares_parse_aaaa_reply.c \ + legacy/ares_parse_caa_reply.c \ + legacy/ares_parse_mx_reply.c \ + legacy/ares_parse_naptr_reply.c \ + legacy/ares_parse_ns_reply.c \ + legacy/ares_parse_ptr_reply.c \ + legacy/ares_parse_soa_reply.c \ + legacy/ares_parse_srv_reply.c \ + legacy/ares_parse_txt_reply.c \ + legacy/ares_parse_uri_reply.c \ + record/ares_dns_mapping.c \ + record/ares_dns_multistring.c \ + record/ares_dns_name.c \ + record/ares_dns_parse.c \ + record/ares_dns_record.c \ + record/ares_dns_write.c \ + str/ares__buf.c \ + str/ares_strcasecmp.c \ + str/ares_str.c \ + str/ares_strsplit.c \ + util/ares__iface_ips.c \ + util/ares__threads.c \ + util/ares__timeval.c \ + util/ares_math.c \ + util/ares_rand.c + +HHEADERS = ares_android.h \ ares_data.h \ - ares_dns_multistring.h \ - ares_dns_private.h \ - ares_event.h \ - ares_event_win32.h \ ares_getenv.h \ ares_inet_net_pton.h \ ares_ipv6.h \ ares_platform.h \ ares_private.h \ - ares_strcasecmp.h \ - ares_str.h \ - ares_strsplit.h \ ares_setup.h \ + dsa/ares__array.h \ + dsa/ares__htable.h \ + dsa/ares__htable_asvp.h \ + dsa/ares__htable_strvp.h \ + dsa/ares__htable_szvp.h \ + dsa/ares__htable_vpvp.h \ + dsa/ares__llist.h \ + dsa/ares__slist.h \ + event/ares_event.h \ + event/ares_event_win32.h \ + record/ares_dns_multistring.h \ + record/ares_dns_private.h \ + str/ares__buf.h \ + str/ares_strcasecmp.h \ + str/ares_str.h \ + str/ares_strsplit.h \ + util/ares__iface_ips.h \ + util/ares__threads.h \ thirdparty/apple/dnsinfo.h @@ -784,12 +802,12 @@ ares_config.h: stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/ares_config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status src/lib/ares_config.h + $(AM_V_at)rm -f stamp-h1 + $(AM_V_GEN)cd $(top_builddir) && $(SHELL) ./config.status src/lib/ares_config.h $(srcdir)/ares_config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ + $(AM_V_GEN)($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + $(AM_V_at)rm -f stamp-h1 + $(AM_V_at)touch $@ distclean-hdr: -rm -f ares_config.h stamp-h1 @@ -819,65 +837,177 @@ uninstall-libLTLIBRARIES: done clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + -$(am__rm_f) $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } + echo rm -f $${locs}; \ + $(am__rm_f) $${locs} +dsa/$(am__dirstamp): + @$(MKDIR_P) dsa + @: >>dsa/$(am__dirstamp) +dsa/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) dsa/$(DEPDIR) + @: >>dsa/$(DEPDIR)/$(am__dirstamp) +dsa/libcares_la-ares__array.lo: dsa/$(am__dirstamp) \ + dsa/$(DEPDIR)/$(am__dirstamp) +dsa/libcares_la-ares__htable.lo: dsa/$(am__dirstamp) \ + dsa/$(DEPDIR)/$(am__dirstamp) +dsa/libcares_la-ares__htable_asvp.lo: dsa/$(am__dirstamp) \ + dsa/$(DEPDIR)/$(am__dirstamp) +dsa/libcares_la-ares__htable_strvp.lo: dsa/$(am__dirstamp) \ + dsa/$(DEPDIR)/$(am__dirstamp) +dsa/libcares_la-ares__htable_szvp.lo: dsa/$(am__dirstamp) \ + dsa/$(DEPDIR)/$(am__dirstamp) +dsa/libcares_la-ares__htable_vpvp.lo: dsa/$(am__dirstamp) \ + dsa/$(DEPDIR)/$(am__dirstamp) +dsa/libcares_la-ares__llist.lo: dsa/$(am__dirstamp) \ + dsa/$(DEPDIR)/$(am__dirstamp) +dsa/libcares_la-ares__slist.lo: dsa/$(am__dirstamp) \ + dsa/$(DEPDIR)/$(am__dirstamp) +event/$(am__dirstamp): + @$(MKDIR_P) event + @: >>event/$(am__dirstamp) +event/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) event/$(DEPDIR) + @: >>event/$(DEPDIR)/$(am__dirstamp) +event/libcares_la-ares_event_configchg.lo: event/$(am__dirstamp) \ + event/$(DEPDIR)/$(am__dirstamp) +event/libcares_la-ares_event_epoll.lo: event/$(am__dirstamp) \ + event/$(DEPDIR)/$(am__dirstamp) +event/libcares_la-ares_event_kqueue.lo: event/$(am__dirstamp) \ + event/$(DEPDIR)/$(am__dirstamp) +event/libcares_la-ares_event_poll.lo: event/$(am__dirstamp) \ + event/$(DEPDIR)/$(am__dirstamp) +event/libcares_la-ares_event_select.lo: event/$(am__dirstamp) \ + event/$(DEPDIR)/$(am__dirstamp) +event/libcares_la-ares_event_thread.lo: event/$(am__dirstamp) \ + event/$(DEPDIR)/$(am__dirstamp) +event/libcares_la-ares_event_wake_pipe.lo: event/$(am__dirstamp) \ + event/$(DEPDIR)/$(am__dirstamp) +event/libcares_la-ares_event_win32.lo: event/$(am__dirstamp) \ + event/$(DEPDIR)/$(am__dirstamp) +legacy/$(am__dirstamp): + @$(MKDIR_P) legacy + @: >>legacy/$(am__dirstamp) +legacy/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) legacy/$(DEPDIR) + @: >>legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_create_query.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_expand_name.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_expand_string.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_fds.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_getsock.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_parse_a_reply.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_parse_aaaa_reply.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_parse_caa_reply.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_parse_mx_reply.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_parse_naptr_reply.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_parse_ns_reply.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_parse_ptr_reply.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_parse_soa_reply.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_parse_srv_reply.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_parse_txt_reply.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +legacy/libcares_la-ares_parse_uri_reply.lo: legacy/$(am__dirstamp) \ + legacy/$(DEPDIR)/$(am__dirstamp) +record/$(am__dirstamp): + @$(MKDIR_P) record + @: >>record/$(am__dirstamp) +record/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) record/$(DEPDIR) + @: >>record/$(DEPDIR)/$(am__dirstamp) +record/libcares_la-ares_dns_mapping.lo: record/$(am__dirstamp) \ + record/$(DEPDIR)/$(am__dirstamp) +record/libcares_la-ares_dns_multistring.lo: record/$(am__dirstamp) \ + record/$(DEPDIR)/$(am__dirstamp) +record/libcares_la-ares_dns_name.lo: record/$(am__dirstamp) \ + record/$(DEPDIR)/$(am__dirstamp) +record/libcares_la-ares_dns_parse.lo: record/$(am__dirstamp) \ + record/$(DEPDIR)/$(am__dirstamp) +record/libcares_la-ares_dns_record.lo: record/$(am__dirstamp) \ + record/$(DEPDIR)/$(am__dirstamp) +record/libcares_la-ares_dns_write.lo: record/$(am__dirstamp) \ + record/$(DEPDIR)/$(am__dirstamp) +str/$(am__dirstamp): + @$(MKDIR_P) str + @: >>str/$(am__dirstamp) +str/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) str/$(DEPDIR) + @: >>str/$(DEPDIR)/$(am__dirstamp) +str/libcares_la-ares__buf.lo: str/$(am__dirstamp) \ + str/$(DEPDIR)/$(am__dirstamp) +str/libcares_la-ares_strcasecmp.lo: str/$(am__dirstamp) \ + str/$(DEPDIR)/$(am__dirstamp) +str/libcares_la-ares_str.lo: str/$(am__dirstamp) \ + str/$(DEPDIR)/$(am__dirstamp) +str/libcares_la-ares_strsplit.lo: str/$(am__dirstamp) \ + str/$(DEPDIR)/$(am__dirstamp) +util/$(am__dirstamp): + @$(MKDIR_P) util + @: >>util/$(am__dirstamp) +util/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) util/$(DEPDIR) + @: >>util/$(DEPDIR)/$(am__dirstamp) +util/libcares_la-ares__iface_ips.lo: util/$(am__dirstamp) \ + util/$(DEPDIR)/$(am__dirstamp) +util/libcares_la-ares__threads.lo: util/$(am__dirstamp) \ + util/$(DEPDIR)/$(am__dirstamp) +util/libcares_la-ares__timeval.lo: util/$(am__dirstamp) \ + util/$(DEPDIR)/$(am__dirstamp) +util/libcares_la-ares_math.lo: util/$(am__dirstamp) \ + util/$(DEPDIR)/$(am__dirstamp) +util/libcares_la-ares_rand.lo: util/$(am__dirstamp) \ + util/$(DEPDIR)/$(am__dirstamp) libcares.la: $(libcares_la_OBJECTS) $(libcares_la_DEPENDENCIES) $(EXTRA_libcares_la_DEPENDENCIES) $(AM_V_CCLD)$(libcares_la_LINK) -rpath $(libdir) $(libcares_la_OBJECTS) $(libcares_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) + -rm -f dsa/*.$(OBJEXT) + -rm -f dsa/*.lo + -rm -f event/*.$(OBJEXT) + -rm -f event/*.lo + -rm -f legacy/*.$(OBJEXT) + -rm -f legacy/*.lo + -rm -f record/*.$(OBJEXT) + -rm -f record/*.lo + -rm -f str/*.$(OBJEXT) + -rm -f str/*.lo + -rm -f util/*.$(OBJEXT) + -rm -f util/*.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__addrinfo2hostent.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__addrinfo_localhost.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__buf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__close_sockets.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__hosts_file.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__htable.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__htable_asvp.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__htable_strvp.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__htable_szvp.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__iface_ips.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__llist.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__parse_into_addrinfo.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__slist.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__socket.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__sortaddrinfo.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__threads.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__timeval.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_android.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_cancel.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_create_query.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_cookie.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_data.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_destroy.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_dns_mapping.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_dns_multistring.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_dns_name.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_dns_parse.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_dns_record.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_dns_write.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_event_configchg.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_event_epoll.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_event_kqueue.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_event_poll.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_event_select.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_event_thread.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_event_wake_pipe.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_event_win32.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_expand_name.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_expand_string.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_fds.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_free_hostent.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_free_string.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_freeaddrinfo.Plo@am__quote@ # am--include-marker @@ -886,34 +1016,17 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_gethostbyaddr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_gethostbyname.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_getnameinfo.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_getsock.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_init.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_library_init.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_math.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_metrics.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_options.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_caa_reply.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_mx_reply.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_naptr_reply.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_ns_reply.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_ptr_reply.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_soa_reply.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_srv_reply.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_txt_reply.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_uri_reply.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_platform.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_process.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_qcache.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_query.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_rand.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_search.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_send.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_str.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_strcasecmp.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_strerror.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_strsplit.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_sysconfig.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_sysconfig_files.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_sysconfig_mac.Plo@am__quote@ # am--include-marker @@ -924,10 +1037,57 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-inet_net_pton.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-inet_ntop.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-windows_port.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dsa/$(DEPDIR)/libcares_la-ares__array.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dsa/$(DEPDIR)/libcares_la-ares__htable.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dsa/$(DEPDIR)/libcares_la-ares__htable_asvp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dsa/$(DEPDIR)/libcares_la-ares__htable_strvp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dsa/$(DEPDIR)/libcares_la-ares__htable_szvp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dsa/$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dsa/$(DEPDIR)/libcares_la-ares__llist.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dsa/$(DEPDIR)/libcares_la-ares__slist.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@event/$(DEPDIR)/libcares_la-ares_event_configchg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@event/$(DEPDIR)/libcares_la-ares_event_epoll.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@event/$(DEPDIR)/libcares_la-ares_event_kqueue.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@event/$(DEPDIR)/libcares_la-ares_event_poll.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@event/$(DEPDIR)/libcares_la-ares_event_select.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@event/$(DEPDIR)/libcares_la-ares_event_thread.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@event/$(DEPDIR)/libcares_la-ares_event_wake_pipe.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@event/$(DEPDIR)/libcares_la-ares_event_win32.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_create_query.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_expand_name.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_expand_string.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_fds.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_getsock.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_parse_caa_reply.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_parse_mx_reply.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_parse_naptr_reply.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_parse_ns_reply.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_parse_ptr_reply.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_parse_soa_reply.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_parse_srv_reply.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_parse_txt_reply.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@legacy/$(DEPDIR)/libcares_la-ares_parse_uri_reply.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@record/$(DEPDIR)/libcares_la-ares_dns_mapping.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@record/$(DEPDIR)/libcares_la-ares_dns_multistring.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@record/$(DEPDIR)/libcares_la-ares_dns_name.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@record/$(DEPDIR)/libcares_la-ares_dns_parse.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@record/$(DEPDIR)/libcares_la-ares_dns_record.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@record/$(DEPDIR)/libcares_la-ares_dns_write.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@str/$(DEPDIR)/libcares_la-ares__buf.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@str/$(DEPDIR)/libcares_la-ares_str.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@str/$(DEPDIR)/libcares_la-ares_strcasecmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@str/$(DEPDIR)/libcares_la-ares_strsplit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@util/$(DEPDIR)/libcares_la-ares__iface_ips.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@util/$(DEPDIR)/libcares_la-ares__threads.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@util/$(DEPDIR)/libcares_la-ares__timeval.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@util/$(DEPDIR)/libcares_la-ares_math.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@util/$(DEPDIR)/libcares_la-ares_rand.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + @: >>$@ am--depfiles: $(am__depfiles_remade) @@ -969,13 +1129,6 @@ libcares_la-ares__addrinfo_localhost.lo: ares__addrinfo_localhost.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__addrinfo_localhost.lo `test -f 'ares__addrinfo_localhost.c' || echo '$(srcdir)/'`ares__addrinfo_localhost.c -libcares_la-ares__buf.lo: ares__buf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__buf.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__buf.Tpo -c -o libcares_la-ares__buf.lo `test -f 'ares__buf.c' || echo '$(srcdir)/'`ares__buf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__buf.Tpo $(DEPDIR)/libcares_la-ares__buf.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__buf.c' object='libcares_la-ares__buf.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__buf.lo `test -f 'ares__buf.c' || echo '$(srcdir)/'`ares__buf.c - libcares_la-ares__close_sockets.lo: ares__close_sockets.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__close_sockets.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__close_sockets.Tpo -c -o libcares_la-ares__close_sockets.lo `test -f 'ares__close_sockets.c' || echo '$(srcdir)/'`ares__close_sockets.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__close_sockets.Tpo $(DEPDIR)/libcares_la-ares__close_sockets.Plo @@ -990,55 +1143,6 @@ libcares_la-ares__hosts_file.lo: ares__hosts_file.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__hosts_file.lo `test -f 'ares__hosts_file.c' || echo '$(srcdir)/'`ares__hosts_file.c -libcares_la-ares__htable.lo: ares__htable.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__htable.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__htable.Tpo -c -o libcares_la-ares__htable.lo `test -f 'ares__htable.c' || echo '$(srcdir)/'`ares__htable.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__htable.Tpo $(DEPDIR)/libcares_la-ares__htable.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__htable.c' object='libcares_la-ares__htable.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__htable.lo `test -f 'ares__htable.c' || echo '$(srcdir)/'`ares__htable.c - -libcares_la-ares__htable_asvp.lo: ares__htable_asvp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__htable_asvp.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__htable_asvp.Tpo -c -o libcares_la-ares__htable_asvp.lo `test -f 'ares__htable_asvp.c' || echo '$(srcdir)/'`ares__htable_asvp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__htable_asvp.Tpo $(DEPDIR)/libcares_la-ares__htable_asvp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__htable_asvp.c' object='libcares_la-ares__htable_asvp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__htable_asvp.lo `test -f 'ares__htable_asvp.c' || echo '$(srcdir)/'`ares__htable_asvp.c - -libcares_la-ares__htable_strvp.lo: ares__htable_strvp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__htable_strvp.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__htable_strvp.Tpo -c -o libcares_la-ares__htable_strvp.lo `test -f 'ares__htable_strvp.c' || echo '$(srcdir)/'`ares__htable_strvp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__htable_strvp.Tpo $(DEPDIR)/libcares_la-ares__htable_strvp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__htable_strvp.c' object='libcares_la-ares__htable_strvp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__htable_strvp.lo `test -f 'ares__htable_strvp.c' || echo '$(srcdir)/'`ares__htable_strvp.c - -libcares_la-ares__htable_szvp.lo: ares__htable_szvp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__htable_szvp.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__htable_szvp.Tpo -c -o libcares_la-ares__htable_szvp.lo `test -f 'ares__htable_szvp.c' || echo '$(srcdir)/'`ares__htable_szvp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__htable_szvp.Tpo $(DEPDIR)/libcares_la-ares__htable_szvp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__htable_szvp.c' object='libcares_la-ares__htable_szvp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__htable_szvp.lo `test -f 'ares__htable_szvp.c' || echo '$(srcdir)/'`ares__htable_szvp.c - -libcares_la-ares__htable_vpvp.lo: ares__htable_vpvp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__htable_vpvp.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__htable_vpvp.Tpo -c -o libcares_la-ares__htable_vpvp.lo `test -f 'ares__htable_vpvp.c' || echo '$(srcdir)/'`ares__htable_vpvp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__htable_vpvp.Tpo $(DEPDIR)/libcares_la-ares__htable_vpvp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__htable_vpvp.c' object='libcares_la-ares__htable_vpvp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__htable_vpvp.lo `test -f 'ares__htable_vpvp.c' || echo '$(srcdir)/'`ares__htable_vpvp.c - -libcares_la-ares__iface_ips.lo: ares__iface_ips.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__iface_ips.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__iface_ips.Tpo -c -o libcares_la-ares__iface_ips.lo `test -f 'ares__iface_ips.c' || echo '$(srcdir)/'`ares__iface_ips.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__iface_ips.Tpo $(DEPDIR)/libcares_la-ares__iface_ips.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__iface_ips.c' object='libcares_la-ares__iface_ips.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__iface_ips.lo `test -f 'ares__iface_ips.c' || echo '$(srcdir)/'`ares__iface_ips.c - -libcares_la-ares__llist.lo: ares__llist.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__llist.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__llist.Tpo -c -o libcares_la-ares__llist.lo `test -f 'ares__llist.c' || echo '$(srcdir)/'`ares__llist.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__llist.Tpo $(DEPDIR)/libcares_la-ares__llist.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__llist.c' object='libcares_la-ares__llist.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__llist.lo `test -f 'ares__llist.c' || echo '$(srcdir)/'`ares__llist.c - libcares_la-ares__parse_into_addrinfo.lo: ares__parse_into_addrinfo.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__parse_into_addrinfo.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__parse_into_addrinfo.Tpo -c -o libcares_la-ares__parse_into_addrinfo.lo `test -f 'ares__parse_into_addrinfo.c' || echo '$(srcdir)/'`ares__parse_into_addrinfo.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__parse_into_addrinfo.Tpo $(DEPDIR)/libcares_la-ares__parse_into_addrinfo.Plo @@ -1046,13 +1150,6 @@ libcares_la-ares__parse_into_addrinfo.lo: ares__parse_into_addrinfo.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__parse_into_addrinfo.lo `test -f 'ares__parse_into_addrinfo.c' || echo '$(srcdir)/'`ares__parse_into_addrinfo.c -libcares_la-ares__slist.lo: ares__slist.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__slist.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__slist.Tpo -c -o libcares_la-ares__slist.lo `test -f 'ares__slist.c' || echo '$(srcdir)/'`ares__slist.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__slist.Tpo $(DEPDIR)/libcares_la-ares__slist.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__slist.c' object='libcares_la-ares__slist.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__slist.lo `test -f 'ares__slist.c' || echo '$(srcdir)/'`ares__slist.c - libcares_la-ares__socket.lo: ares__socket.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__socket.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__socket.Tpo -c -o libcares_la-ares__socket.lo `test -f 'ares__socket.c' || echo '$(srcdir)/'`ares__socket.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__socket.Tpo $(DEPDIR)/libcares_la-ares__socket.Plo @@ -1067,20 +1164,6 @@ libcares_la-ares__sortaddrinfo.lo: ares__sortaddrinfo.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__sortaddrinfo.lo `test -f 'ares__sortaddrinfo.c' || echo '$(srcdir)/'`ares__sortaddrinfo.c -libcares_la-ares__threads.lo: ares__threads.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__threads.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__threads.Tpo -c -o libcares_la-ares__threads.lo `test -f 'ares__threads.c' || echo '$(srcdir)/'`ares__threads.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__threads.Tpo $(DEPDIR)/libcares_la-ares__threads.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__threads.c' object='libcares_la-ares__threads.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__threads.lo `test -f 'ares__threads.c' || echo '$(srcdir)/'`ares__threads.c - -libcares_la-ares__timeval.lo: ares__timeval.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__timeval.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__timeval.Tpo -c -o libcares_la-ares__timeval.lo `test -f 'ares__timeval.c' || echo '$(srcdir)/'`ares__timeval.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__timeval.Tpo $(DEPDIR)/libcares_la-ares__timeval.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__timeval.c' object='libcares_la-ares__timeval.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__timeval.lo `test -f 'ares__timeval.c' || echo '$(srcdir)/'`ares__timeval.c - libcares_la-ares_android.lo: ares_android.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_android.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_android.Tpo -c -o libcares_la-ares_android.lo `test -f 'ares_android.c' || echo '$(srcdir)/'`ares_android.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_android.Tpo $(DEPDIR)/libcares_la-ares_android.Plo @@ -1095,6 +1178,13 @@ libcares_la-ares_cancel.lo: ares_cancel.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_cancel.lo `test -f 'ares_cancel.c' || echo '$(srcdir)/'`ares_cancel.c +libcares_la-ares_cookie.lo: ares_cookie.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_cookie.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_cookie.Tpo -c -o libcares_la-ares_cookie.lo `test -f 'ares_cookie.c' || echo '$(srcdir)/'`ares_cookie.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_cookie.Tpo $(DEPDIR)/libcares_la-ares_cookie.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_cookie.c' object='libcares_la-ares_cookie.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_cookie.lo `test -f 'ares_cookie.c' || echo '$(srcdir)/'`ares_cookie.c + libcares_la-ares_data.lo: ares_data.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_data.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_data.Tpo -c -o libcares_la-ares_data.lo `test -f 'ares_data.c' || echo '$(srcdir)/'`ares_data.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_data.Tpo $(DEPDIR)/libcares_la-ares_data.Plo @@ -1109,125 +1199,6 @@ libcares_la-ares_destroy.lo: ares_destroy.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_destroy.lo `test -f 'ares_destroy.c' || echo '$(srcdir)/'`ares_destroy.c -libcares_la-ares_dns_mapping.lo: ares_dns_mapping.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_dns_mapping.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_dns_mapping.Tpo -c -o libcares_la-ares_dns_mapping.lo `test -f 'ares_dns_mapping.c' || echo '$(srcdir)/'`ares_dns_mapping.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_dns_mapping.Tpo $(DEPDIR)/libcares_la-ares_dns_mapping.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_dns_mapping.c' object='libcares_la-ares_dns_mapping.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_dns_mapping.lo `test -f 'ares_dns_mapping.c' || echo '$(srcdir)/'`ares_dns_mapping.c - -libcares_la-ares_dns_multistring.lo: ares_dns_multistring.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_dns_multistring.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_dns_multistring.Tpo -c -o libcares_la-ares_dns_multistring.lo `test -f 'ares_dns_multistring.c' || echo '$(srcdir)/'`ares_dns_multistring.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_dns_multistring.Tpo $(DEPDIR)/libcares_la-ares_dns_multistring.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_dns_multistring.c' object='libcares_la-ares_dns_multistring.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_dns_multistring.lo `test -f 'ares_dns_multistring.c' || echo '$(srcdir)/'`ares_dns_multistring.c - -libcares_la-ares_dns_name.lo: ares_dns_name.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_dns_name.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_dns_name.Tpo -c -o libcares_la-ares_dns_name.lo `test -f 'ares_dns_name.c' || echo '$(srcdir)/'`ares_dns_name.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_dns_name.Tpo $(DEPDIR)/libcares_la-ares_dns_name.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_dns_name.c' object='libcares_la-ares_dns_name.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_dns_name.lo `test -f 'ares_dns_name.c' || echo '$(srcdir)/'`ares_dns_name.c - -libcares_la-ares_dns_parse.lo: ares_dns_parse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_dns_parse.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_dns_parse.Tpo -c -o libcares_la-ares_dns_parse.lo `test -f 'ares_dns_parse.c' || echo '$(srcdir)/'`ares_dns_parse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_dns_parse.Tpo $(DEPDIR)/libcares_la-ares_dns_parse.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_dns_parse.c' object='libcares_la-ares_dns_parse.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_dns_parse.lo `test -f 'ares_dns_parse.c' || echo '$(srcdir)/'`ares_dns_parse.c - -libcares_la-ares_dns_record.lo: ares_dns_record.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_dns_record.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_dns_record.Tpo -c -o libcares_la-ares_dns_record.lo `test -f 'ares_dns_record.c' || echo '$(srcdir)/'`ares_dns_record.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_dns_record.Tpo $(DEPDIR)/libcares_la-ares_dns_record.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_dns_record.c' object='libcares_la-ares_dns_record.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_dns_record.lo `test -f 'ares_dns_record.c' || echo '$(srcdir)/'`ares_dns_record.c - -libcares_la-ares_dns_write.lo: ares_dns_write.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_dns_write.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_dns_write.Tpo -c -o libcares_la-ares_dns_write.lo `test -f 'ares_dns_write.c' || echo '$(srcdir)/'`ares_dns_write.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_dns_write.Tpo $(DEPDIR)/libcares_la-ares_dns_write.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_dns_write.c' object='libcares_la-ares_dns_write.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_dns_write.lo `test -f 'ares_dns_write.c' || echo '$(srcdir)/'`ares_dns_write.c - -libcares_la-ares_event_configchg.lo: ares_event_configchg.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_event_configchg.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_event_configchg.Tpo -c -o libcares_la-ares_event_configchg.lo `test -f 'ares_event_configchg.c' || echo '$(srcdir)/'`ares_event_configchg.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_event_configchg.Tpo $(DEPDIR)/libcares_la-ares_event_configchg.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_event_configchg.c' object='libcares_la-ares_event_configchg.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_event_configchg.lo `test -f 'ares_event_configchg.c' || echo '$(srcdir)/'`ares_event_configchg.c - -libcares_la-ares_event_epoll.lo: ares_event_epoll.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_event_epoll.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_event_epoll.Tpo -c -o libcares_la-ares_event_epoll.lo `test -f 'ares_event_epoll.c' || echo '$(srcdir)/'`ares_event_epoll.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_event_epoll.Tpo $(DEPDIR)/libcares_la-ares_event_epoll.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_event_epoll.c' object='libcares_la-ares_event_epoll.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_event_epoll.lo `test -f 'ares_event_epoll.c' || echo '$(srcdir)/'`ares_event_epoll.c - -libcares_la-ares_event_kqueue.lo: ares_event_kqueue.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_event_kqueue.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_event_kqueue.Tpo -c -o libcares_la-ares_event_kqueue.lo `test -f 'ares_event_kqueue.c' || echo '$(srcdir)/'`ares_event_kqueue.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_event_kqueue.Tpo $(DEPDIR)/libcares_la-ares_event_kqueue.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_event_kqueue.c' object='libcares_la-ares_event_kqueue.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_event_kqueue.lo `test -f 'ares_event_kqueue.c' || echo '$(srcdir)/'`ares_event_kqueue.c - -libcares_la-ares_event_poll.lo: ares_event_poll.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_event_poll.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_event_poll.Tpo -c -o libcares_la-ares_event_poll.lo `test -f 'ares_event_poll.c' || echo '$(srcdir)/'`ares_event_poll.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_event_poll.Tpo $(DEPDIR)/libcares_la-ares_event_poll.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_event_poll.c' object='libcares_la-ares_event_poll.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_event_poll.lo `test -f 'ares_event_poll.c' || echo '$(srcdir)/'`ares_event_poll.c - -libcares_la-ares_event_select.lo: ares_event_select.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_event_select.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_event_select.Tpo -c -o libcares_la-ares_event_select.lo `test -f 'ares_event_select.c' || echo '$(srcdir)/'`ares_event_select.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_event_select.Tpo $(DEPDIR)/libcares_la-ares_event_select.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_event_select.c' object='libcares_la-ares_event_select.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_event_select.lo `test -f 'ares_event_select.c' || echo '$(srcdir)/'`ares_event_select.c - -libcares_la-ares_event_thread.lo: ares_event_thread.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_event_thread.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_event_thread.Tpo -c -o libcares_la-ares_event_thread.lo `test -f 'ares_event_thread.c' || echo '$(srcdir)/'`ares_event_thread.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_event_thread.Tpo $(DEPDIR)/libcares_la-ares_event_thread.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_event_thread.c' object='libcares_la-ares_event_thread.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_event_thread.lo `test -f 'ares_event_thread.c' || echo '$(srcdir)/'`ares_event_thread.c - -libcares_la-ares_event_wake_pipe.lo: ares_event_wake_pipe.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_event_wake_pipe.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_event_wake_pipe.Tpo -c -o libcares_la-ares_event_wake_pipe.lo `test -f 'ares_event_wake_pipe.c' || echo '$(srcdir)/'`ares_event_wake_pipe.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_event_wake_pipe.Tpo $(DEPDIR)/libcares_la-ares_event_wake_pipe.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_event_wake_pipe.c' object='libcares_la-ares_event_wake_pipe.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_event_wake_pipe.lo `test -f 'ares_event_wake_pipe.c' || echo '$(srcdir)/'`ares_event_wake_pipe.c - -libcares_la-ares_event_win32.lo: ares_event_win32.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_event_win32.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_event_win32.Tpo -c -o libcares_la-ares_event_win32.lo `test -f 'ares_event_win32.c' || echo '$(srcdir)/'`ares_event_win32.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_event_win32.Tpo $(DEPDIR)/libcares_la-ares_event_win32.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_event_win32.c' object='libcares_la-ares_event_win32.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_event_win32.lo `test -f 'ares_event_win32.c' || echo '$(srcdir)/'`ares_event_win32.c - -libcares_la-ares_expand_name.lo: ares_expand_name.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_expand_name.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_expand_name.Tpo -c -o libcares_la-ares_expand_name.lo `test -f 'ares_expand_name.c' || echo '$(srcdir)/'`ares_expand_name.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_expand_name.Tpo $(DEPDIR)/libcares_la-ares_expand_name.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_expand_name.c' object='libcares_la-ares_expand_name.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_expand_name.lo `test -f 'ares_expand_name.c' || echo '$(srcdir)/'`ares_expand_name.c - -libcares_la-ares_expand_string.lo: ares_expand_string.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_expand_string.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_expand_string.Tpo -c -o libcares_la-ares_expand_string.lo `test -f 'ares_expand_string.c' || echo '$(srcdir)/'`ares_expand_string.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_expand_string.Tpo $(DEPDIR)/libcares_la-ares_expand_string.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_expand_string.c' object='libcares_la-ares_expand_string.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_expand_string.lo `test -f 'ares_expand_string.c' || echo '$(srcdir)/'`ares_expand_string.c - -libcares_la-ares_fds.lo: ares_fds.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_fds.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_fds.Tpo -c -o libcares_la-ares_fds.lo `test -f 'ares_fds.c' || echo '$(srcdir)/'`ares_fds.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_fds.Tpo $(DEPDIR)/libcares_la-ares_fds.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_fds.c' object='libcares_la-ares_fds.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_fds.lo `test -f 'ares_fds.c' || echo '$(srcdir)/'`ares_fds.c - libcares_la-ares_free_hostent.lo: ares_free_hostent.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_free_hostent.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_free_hostent.Tpo -c -o libcares_la-ares_free_hostent.lo `test -f 'ares_free_hostent.c' || echo '$(srcdir)/'`ares_free_hostent.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_free_hostent.Tpo $(DEPDIR)/libcares_la-ares_free_hostent.Plo @@ -1284,13 +1255,6 @@ libcares_la-ares_getnameinfo.lo: ares_getnameinfo.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_getnameinfo.lo `test -f 'ares_getnameinfo.c' || echo '$(srcdir)/'`ares_getnameinfo.c -libcares_la-ares_getsock.lo: ares_getsock.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_getsock.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_getsock.Tpo -c -o libcares_la-ares_getsock.lo `test -f 'ares_getsock.c' || echo '$(srcdir)/'`ares_getsock.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_getsock.Tpo $(DEPDIR)/libcares_la-ares_getsock.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_getsock.c' object='libcares_la-ares_getsock.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_getsock.lo `test -f 'ares_getsock.c' || echo '$(srcdir)/'`ares_getsock.c - libcares_la-ares_init.lo: ares_init.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_init.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_init.Tpo -c -o libcares_la-ares_init.lo `test -f 'ares_init.c' || echo '$(srcdir)/'`ares_init.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_init.Tpo $(DEPDIR)/libcares_la-ares_init.Plo @@ -1305,13 +1269,6 @@ libcares_la-ares_library_init.lo: ares_library_init.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_library_init.lo `test -f 'ares_library_init.c' || echo '$(srcdir)/'`ares_library_init.c -libcares_la-ares_math.lo: ares_math.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_math.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_math.Tpo -c -o libcares_la-ares_math.lo `test -f 'ares_math.c' || echo '$(srcdir)/'`ares_math.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_math.Tpo $(DEPDIR)/libcares_la-ares_math.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_math.c' object='libcares_la-ares_math.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_math.lo `test -f 'ares_math.c' || echo '$(srcdir)/'`ares_math.c - libcares_la-ares_metrics.lo: ares_metrics.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_metrics.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_metrics.Tpo -c -o libcares_la-ares_metrics.lo `test -f 'ares_metrics.c' || echo '$(srcdir)/'`ares_metrics.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_metrics.Tpo $(DEPDIR)/libcares_la-ares_metrics.Plo @@ -1319,13 +1276,6 @@ libcares_la-ares_metrics.lo: ares_metrics.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_metrics.lo `test -f 'ares_metrics.c' || echo '$(srcdir)/'`ares_metrics.c -libcares_la-ares_create_query.lo: ares_create_query.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_create_query.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_create_query.Tpo -c -o libcares_la-ares_create_query.lo `test -f 'ares_create_query.c' || echo '$(srcdir)/'`ares_create_query.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_create_query.Tpo $(DEPDIR)/libcares_la-ares_create_query.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_create_query.c' object='libcares_la-ares_create_query.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_create_query.lo `test -f 'ares_create_query.c' || echo '$(srcdir)/'`ares_create_query.c - libcares_la-ares_options.lo: ares_options.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_options.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_options.Tpo -c -o libcares_la-ares_options.lo `test -f 'ares_options.c' || echo '$(srcdir)/'`ares_options.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_options.Tpo $(DEPDIR)/libcares_la-ares_options.Plo @@ -1333,83 +1283,6 @@ libcares_la-ares_options.lo: ares_options.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_options.lo `test -f 'ares_options.c' || echo '$(srcdir)/'`ares_options.c -libcares_la-ares_parse_a_reply.lo: ares_parse_a_reply.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_parse_a_reply.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_parse_a_reply.Tpo -c -o libcares_la-ares_parse_a_reply.lo `test -f 'ares_parse_a_reply.c' || echo '$(srcdir)/'`ares_parse_a_reply.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_parse_a_reply.Tpo $(DEPDIR)/libcares_la-ares_parse_a_reply.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_parse_a_reply.c' object='libcares_la-ares_parse_a_reply.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_parse_a_reply.lo `test -f 'ares_parse_a_reply.c' || echo '$(srcdir)/'`ares_parse_a_reply.c - -libcares_la-ares_parse_aaaa_reply.lo: ares_parse_aaaa_reply.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_parse_aaaa_reply.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Tpo -c -o libcares_la-ares_parse_aaaa_reply.lo `test -f 'ares_parse_aaaa_reply.c' || echo '$(srcdir)/'`ares_parse_aaaa_reply.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Tpo $(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_parse_aaaa_reply.c' object='libcares_la-ares_parse_aaaa_reply.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_parse_aaaa_reply.lo `test -f 'ares_parse_aaaa_reply.c' || echo '$(srcdir)/'`ares_parse_aaaa_reply.c - -libcares_la-ares_parse_caa_reply.lo: ares_parse_caa_reply.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_parse_caa_reply.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_parse_caa_reply.Tpo -c -o libcares_la-ares_parse_caa_reply.lo `test -f 'ares_parse_caa_reply.c' || echo '$(srcdir)/'`ares_parse_caa_reply.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_parse_caa_reply.Tpo $(DEPDIR)/libcares_la-ares_parse_caa_reply.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_parse_caa_reply.c' object='libcares_la-ares_parse_caa_reply.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_parse_caa_reply.lo `test -f 'ares_parse_caa_reply.c' || echo '$(srcdir)/'`ares_parse_caa_reply.c - -libcares_la-ares_parse_mx_reply.lo: ares_parse_mx_reply.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_parse_mx_reply.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_parse_mx_reply.Tpo -c -o libcares_la-ares_parse_mx_reply.lo `test -f 'ares_parse_mx_reply.c' || echo '$(srcdir)/'`ares_parse_mx_reply.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_parse_mx_reply.Tpo $(DEPDIR)/libcares_la-ares_parse_mx_reply.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_parse_mx_reply.c' object='libcares_la-ares_parse_mx_reply.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_parse_mx_reply.lo `test -f 'ares_parse_mx_reply.c' || echo '$(srcdir)/'`ares_parse_mx_reply.c - -libcares_la-ares_parse_naptr_reply.lo: ares_parse_naptr_reply.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_parse_naptr_reply.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_parse_naptr_reply.Tpo -c -o libcares_la-ares_parse_naptr_reply.lo `test -f 'ares_parse_naptr_reply.c' || echo '$(srcdir)/'`ares_parse_naptr_reply.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_parse_naptr_reply.Tpo $(DEPDIR)/libcares_la-ares_parse_naptr_reply.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_parse_naptr_reply.c' object='libcares_la-ares_parse_naptr_reply.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_parse_naptr_reply.lo `test -f 'ares_parse_naptr_reply.c' || echo '$(srcdir)/'`ares_parse_naptr_reply.c - -libcares_la-ares_parse_ns_reply.lo: ares_parse_ns_reply.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_parse_ns_reply.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_parse_ns_reply.Tpo -c -o libcares_la-ares_parse_ns_reply.lo `test -f 'ares_parse_ns_reply.c' || echo '$(srcdir)/'`ares_parse_ns_reply.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_parse_ns_reply.Tpo $(DEPDIR)/libcares_la-ares_parse_ns_reply.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_parse_ns_reply.c' object='libcares_la-ares_parse_ns_reply.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_parse_ns_reply.lo `test -f 'ares_parse_ns_reply.c' || echo '$(srcdir)/'`ares_parse_ns_reply.c - -libcares_la-ares_parse_ptr_reply.lo: ares_parse_ptr_reply.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_parse_ptr_reply.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_parse_ptr_reply.Tpo -c -o libcares_la-ares_parse_ptr_reply.lo `test -f 'ares_parse_ptr_reply.c' || echo '$(srcdir)/'`ares_parse_ptr_reply.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_parse_ptr_reply.Tpo $(DEPDIR)/libcares_la-ares_parse_ptr_reply.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_parse_ptr_reply.c' object='libcares_la-ares_parse_ptr_reply.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_parse_ptr_reply.lo `test -f 'ares_parse_ptr_reply.c' || echo '$(srcdir)/'`ares_parse_ptr_reply.c - -libcares_la-ares_parse_soa_reply.lo: ares_parse_soa_reply.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_parse_soa_reply.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_parse_soa_reply.Tpo -c -o libcares_la-ares_parse_soa_reply.lo `test -f 'ares_parse_soa_reply.c' || echo '$(srcdir)/'`ares_parse_soa_reply.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_parse_soa_reply.Tpo $(DEPDIR)/libcares_la-ares_parse_soa_reply.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_parse_soa_reply.c' object='libcares_la-ares_parse_soa_reply.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_parse_soa_reply.lo `test -f 'ares_parse_soa_reply.c' || echo '$(srcdir)/'`ares_parse_soa_reply.c - -libcares_la-ares_parse_srv_reply.lo: ares_parse_srv_reply.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_parse_srv_reply.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_parse_srv_reply.Tpo -c -o libcares_la-ares_parse_srv_reply.lo `test -f 'ares_parse_srv_reply.c' || echo '$(srcdir)/'`ares_parse_srv_reply.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_parse_srv_reply.Tpo $(DEPDIR)/libcares_la-ares_parse_srv_reply.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_parse_srv_reply.c' object='libcares_la-ares_parse_srv_reply.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_parse_srv_reply.lo `test -f 'ares_parse_srv_reply.c' || echo '$(srcdir)/'`ares_parse_srv_reply.c - -libcares_la-ares_parse_txt_reply.lo: ares_parse_txt_reply.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_parse_txt_reply.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_parse_txt_reply.Tpo -c -o libcares_la-ares_parse_txt_reply.lo `test -f 'ares_parse_txt_reply.c' || echo '$(srcdir)/'`ares_parse_txt_reply.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_parse_txt_reply.Tpo $(DEPDIR)/libcares_la-ares_parse_txt_reply.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_parse_txt_reply.c' object='libcares_la-ares_parse_txt_reply.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_parse_txt_reply.lo `test -f 'ares_parse_txt_reply.c' || echo '$(srcdir)/'`ares_parse_txt_reply.c - -libcares_la-ares_parse_uri_reply.lo: ares_parse_uri_reply.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_parse_uri_reply.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_parse_uri_reply.Tpo -c -o libcares_la-ares_parse_uri_reply.lo `test -f 'ares_parse_uri_reply.c' || echo '$(srcdir)/'`ares_parse_uri_reply.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_parse_uri_reply.Tpo $(DEPDIR)/libcares_la-ares_parse_uri_reply.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_parse_uri_reply.c' object='libcares_la-ares_parse_uri_reply.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_parse_uri_reply.lo `test -f 'ares_parse_uri_reply.c' || echo '$(srcdir)/'`ares_parse_uri_reply.c - libcares_la-ares_platform.lo: ares_platform.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_platform.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_platform.Tpo -c -o libcares_la-ares_platform.lo `test -f 'ares_platform.c' || echo '$(srcdir)/'`ares_platform.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_platform.Tpo $(DEPDIR)/libcares_la-ares_platform.Plo @@ -1438,13 +1311,6 @@ libcares_la-ares_query.lo: ares_query.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_query.lo `test -f 'ares_query.c' || echo '$(srcdir)/'`ares_query.c -libcares_la-ares_rand.lo: ares_rand.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_rand.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_rand.Tpo -c -o libcares_la-ares_rand.lo `test -f 'ares_rand.c' || echo '$(srcdir)/'`ares_rand.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_rand.Tpo $(DEPDIR)/libcares_la-ares_rand.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_rand.c' object='libcares_la-ares_rand.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_rand.lo `test -f 'ares_rand.c' || echo '$(srcdir)/'`ares_rand.c - libcares_la-ares_search.lo: ares_search.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_search.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_search.Tpo -c -o libcares_la-ares_search.lo `test -f 'ares_search.c' || echo '$(srcdir)/'`ares_search.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_search.Tpo $(DEPDIR)/libcares_la-ares_search.Plo @@ -1459,20 +1325,6 @@ libcares_la-ares_send.lo: ares_send.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_send.lo `test -f 'ares_send.c' || echo '$(srcdir)/'`ares_send.c -libcares_la-ares_strcasecmp.lo: ares_strcasecmp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_strcasecmp.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_strcasecmp.Tpo -c -o libcares_la-ares_strcasecmp.lo `test -f 'ares_strcasecmp.c' || echo '$(srcdir)/'`ares_strcasecmp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_strcasecmp.Tpo $(DEPDIR)/libcares_la-ares_strcasecmp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_strcasecmp.c' object='libcares_la-ares_strcasecmp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_strcasecmp.lo `test -f 'ares_strcasecmp.c' || echo '$(srcdir)/'`ares_strcasecmp.c - -libcares_la-ares_str.lo: ares_str.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_str.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_str.Tpo -c -o libcares_la-ares_str.lo `test -f 'ares_str.c' || echo '$(srcdir)/'`ares_str.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_str.Tpo $(DEPDIR)/libcares_la-ares_str.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_str.c' object='libcares_la-ares_str.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_str.lo `test -f 'ares_str.c' || echo '$(srcdir)/'`ares_str.c - libcares_la-ares_strerror.lo: ares_strerror.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_strerror.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_strerror.Tpo -c -o libcares_la-ares_strerror.lo `test -f 'ares_strerror.c' || echo '$(srcdir)/'`ares_strerror.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_strerror.Tpo $(DEPDIR)/libcares_la-ares_strerror.Plo @@ -1480,13 +1332,6 @@ libcares_la-ares_strerror.lo: ares_strerror.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_strerror.lo `test -f 'ares_strerror.c' || echo '$(srcdir)/'`ares_strerror.c -libcares_la-ares_strsplit.lo: ares_strsplit.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_strsplit.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_strsplit.Tpo -c -o libcares_la-ares_strsplit.lo `test -f 'ares_strsplit.c' || echo '$(srcdir)/'`ares_strsplit.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_strsplit.Tpo $(DEPDIR)/libcares_la-ares_strsplit.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_strsplit.c' object='libcares_la-ares_strsplit.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_strsplit.lo `test -f 'ares_strsplit.c' || echo '$(srcdir)/'`ares_strsplit.c - libcares_la-ares_sysconfig.lo: ares_sysconfig.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_sysconfig.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_sysconfig.Tpo -c -o libcares_la-ares_sysconfig.lo `test -f 'ares_sysconfig.c' || echo '$(srcdir)/'`ares_sysconfig.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_sysconfig.Tpo $(DEPDIR)/libcares_la-ares_sysconfig.Plo @@ -1557,11 +1402,346 @@ libcares_la-windows_port.lo: windows_port.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-windows_port.lo `test -f 'windows_port.c' || echo '$(srcdir)/'`windows_port.c +dsa/libcares_la-ares__array.lo: dsa/ares__array.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT dsa/libcares_la-ares__array.lo -MD -MP -MF dsa/$(DEPDIR)/libcares_la-ares__array.Tpo -c -o dsa/libcares_la-ares__array.lo `test -f 'dsa/ares__array.c' || echo '$(srcdir)/'`dsa/ares__array.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) dsa/$(DEPDIR)/libcares_la-ares__array.Tpo dsa/$(DEPDIR)/libcares_la-ares__array.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsa/ares__array.c' object='dsa/libcares_la-ares__array.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o dsa/libcares_la-ares__array.lo `test -f 'dsa/ares__array.c' || echo '$(srcdir)/'`dsa/ares__array.c + +dsa/libcares_la-ares__htable.lo: dsa/ares__htable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT dsa/libcares_la-ares__htable.lo -MD -MP -MF dsa/$(DEPDIR)/libcares_la-ares__htable.Tpo -c -o dsa/libcares_la-ares__htable.lo `test -f 'dsa/ares__htable.c' || echo '$(srcdir)/'`dsa/ares__htable.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) dsa/$(DEPDIR)/libcares_la-ares__htable.Tpo dsa/$(DEPDIR)/libcares_la-ares__htable.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsa/ares__htable.c' object='dsa/libcares_la-ares__htable.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o dsa/libcares_la-ares__htable.lo `test -f 'dsa/ares__htable.c' || echo '$(srcdir)/'`dsa/ares__htable.c + +dsa/libcares_la-ares__htable_asvp.lo: dsa/ares__htable_asvp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT dsa/libcares_la-ares__htable_asvp.lo -MD -MP -MF dsa/$(DEPDIR)/libcares_la-ares__htable_asvp.Tpo -c -o dsa/libcares_la-ares__htable_asvp.lo `test -f 'dsa/ares__htable_asvp.c' || echo '$(srcdir)/'`dsa/ares__htable_asvp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) dsa/$(DEPDIR)/libcares_la-ares__htable_asvp.Tpo dsa/$(DEPDIR)/libcares_la-ares__htable_asvp.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsa/ares__htable_asvp.c' object='dsa/libcares_la-ares__htable_asvp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o dsa/libcares_la-ares__htable_asvp.lo `test -f 'dsa/ares__htable_asvp.c' || echo '$(srcdir)/'`dsa/ares__htable_asvp.c + +dsa/libcares_la-ares__htable_strvp.lo: dsa/ares__htable_strvp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT dsa/libcares_la-ares__htable_strvp.lo -MD -MP -MF dsa/$(DEPDIR)/libcares_la-ares__htable_strvp.Tpo -c -o dsa/libcares_la-ares__htable_strvp.lo `test -f 'dsa/ares__htable_strvp.c' || echo '$(srcdir)/'`dsa/ares__htable_strvp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) dsa/$(DEPDIR)/libcares_la-ares__htable_strvp.Tpo dsa/$(DEPDIR)/libcares_la-ares__htable_strvp.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsa/ares__htable_strvp.c' object='dsa/libcares_la-ares__htable_strvp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o dsa/libcares_la-ares__htable_strvp.lo `test -f 'dsa/ares__htable_strvp.c' || echo '$(srcdir)/'`dsa/ares__htable_strvp.c + +dsa/libcares_la-ares__htable_szvp.lo: dsa/ares__htable_szvp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT dsa/libcares_la-ares__htable_szvp.lo -MD -MP -MF dsa/$(DEPDIR)/libcares_la-ares__htable_szvp.Tpo -c -o dsa/libcares_la-ares__htable_szvp.lo `test -f 'dsa/ares__htable_szvp.c' || echo '$(srcdir)/'`dsa/ares__htable_szvp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) dsa/$(DEPDIR)/libcares_la-ares__htable_szvp.Tpo dsa/$(DEPDIR)/libcares_la-ares__htable_szvp.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsa/ares__htable_szvp.c' object='dsa/libcares_la-ares__htable_szvp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o dsa/libcares_la-ares__htable_szvp.lo `test -f 'dsa/ares__htable_szvp.c' || echo '$(srcdir)/'`dsa/ares__htable_szvp.c + +dsa/libcares_la-ares__htable_vpvp.lo: dsa/ares__htable_vpvp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT dsa/libcares_la-ares__htable_vpvp.lo -MD -MP -MF dsa/$(DEPDIR)/libcares_la-ares__htable_vpvp.Tpo -c -o dsa/libcares_la-ares__htable_vpvp.lo `test -f 'dsa/ares__htable_vpvp.c' || echo '$(srcdir)/'`dsa/ares__htable_vpvp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) dsa/$(DEPDIR)/libcares_la-ares__htable_vpvp.Tpo dsa/$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsa/ares__htable_vpvp.c' object='dsa/libcares_la-ares__htable_vpvp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o dsa/libcares_la-ares__htable_vpvp.lo `test -f 'dsa/ares__htable_vpvp.c' || echo '$(srcdir)/'`dsa/ares__htable_vpvp.c + +dsa/libcares_la-ares__llist.lo: dsa/ares__llist.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT dsa/libcares_la-ares__llist.lo -MD -MP -MF dsa/$(DEPDIR)/libcares_la-ares__llist.Tpo -c -o dsa/libcares_la-ares__llist.lo `test -f 'dsa/ares__llist.c' || echo '$(srcdir)/'`dsa/ares__llist.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) dsa/$(DEPDIR)/libcares_la-ares__llist.Tpo dsa/$(DEPDIR)/libcares_la-ares__llist.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsa/ares__llist.c' object='dsa/libcares_la-ares__llist.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o dsa/libcares_la-ares__llist.lo `test -f 'dsa/ares__llist.c' || echo '$(srcdir)/'`dsa/ares__llist.c + +dsa/libcares_la-ares__slist.lo: dsa/ares__slist.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT dsa/libcares_la-ares__slist.lo -MD -MP -MF dsa/$(DEPDIR)/libcares_la-ares__slist.Tpo -c -o dsa/libcares_la-ares__slist.lo `test -f 'dsa/ares__slist.c' || echo '$(srcdir)/'`dsa/ares__slist.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) dsa/$(DEPDIR)/libcares_la-ares__slist.Tpo dsa/$(DEPDIR)/libcares_la-ares__slist.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsa/ares__slist.c' object='dsa/libcares_la-ares__slist.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o dsa/libcares_la-ares__slist.lo `test -f 'dsa/ares__slist.c' || echo '$(srcdir)/'`dsa/ares__slist.c + +event/libcares_la-ares_event_configchg.lo: event/ares_event_configchg.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT event/libcares_la-ares_event_configchg.lo -MD -MP -MF event/$(DEPDIR)/libcares_la-ares_event_configchg.Tpo -c -o event/libcares_la-ares_event_configchg.lo `test -f 'event/ares_event_configchg.c' || echo '$(srcdir)/'`event/ares_event_configchg.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) event/$(DEPDIR)/libcares_la-ares_event_configchg.Tpo event/$(DEPDIR)/libcares_la-ares_event_configchg.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='event/ares_event_configchg.c' object='event/libcares_la-ares_event_configchg.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o event/libcares_la-ares_event_configchg.lo `test -f 'event/ares_event_configchg.c' || echo '$(srcdir)/'`event/ares_event_configchg.c + +event/libcares_la-ares_event_epoll.lo: event/ares_event_epoll.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT event/libcares_la-ares_event_epoll.lo -MD -MP -MF event/$(DEPDIR)/libcares_la-ares_event_epoll.Tpo -c -o event/libcares_la-ares_event_epoll.lo `test -f 'event/ares_event_epoll.c' || echo '$(srcdir)/'`event/ares_event_epoll.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) event/$(DEPDIR)/libcares_la-ares_event_epoll.Tpo event/$(DEPDIR)/libcares_la-ares_event_epoll.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='event/ares_event_epoll.c' object='event/libcares_la-ares_event_epoll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o event/libcares_la-ares_event_epoll.lo `test -f 'event/ares_event_epoll.c' || echo '$(srcdir)/'`event/ares_event_epoll.c + +event/libcares_la-ares_event_kqueue.lo: event/ares_event_kqueue.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT event/libcares_la-ares_event_kqueue.lo -MD -MP -MF event/$(DEPDIR)/libcares_la-ares_event_kqueue.Tpo -c -o event/libcares_la-ares_event_kqueue.lo `test -f 'event/ares_event_kqueue.c' || echo '$(srcdir)/'`event/ares_event_kqueue.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) event/$(DEPDIR)/libcares_la-ares_event_kqueue.Tpo event/$(DEPDIR)/libcares_la-ares_event_kqueue.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='event/ares_event_kqueue.c' object='event/libcares_la-ares_event_kqueue.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o event/libcares_la-ares_event_kqueue.lo `test -f 'event/ares_event_kqueue.c' || echo '$(srcdir)/'`event/ares_event_kqueue.c + +event/libcares_la-ares_event_poll.lo: event/ares_event_poll.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT event/libcares_la-ares_event_poll.lo -MD -MP -MF event/$(DEPDIR)/libcares_la-ares_event_poll.Tpo -c -o event/libcares_la-ares_event_poll.lo `test -f 'event/ares_event_poll.c' || echo '$(srcdir)/'`event/ares_event_poll.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) event/$(DEPDIR)/libcares_la-ares_event_poll.Tpo event/$(DEPDIR)/libcares_la-ares_event_poll.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='event/ares_event_poll.c' object='event/libcares_la-ares_event_poll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o event/libcares_la-ares_event_poll.lo `test -f 'event/ares_event_poll.c' || echo '$(srcdir)/'`event/ares_event_poll.c + +event/libcares_la-ares_event_select.lo: event/ares_event_select.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT event/libcares_la-ares_event_select.lo -MD -MP -MF event/$(DEPDIR)/libcares_la-ares_event_select.Tpo -c -o event/libcares_la-ares_event_select.lo `test -f 'event/ares_event_select.c' || echo '$(srcdir)/'`event/ares_event_select.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) event/$(DEPDIR)/libcares_la-ares_event_select.Tpo event/$(DEPDIR)/libcares_la-ares_event_select.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='event/ares_event_select.c' object='event/libcares_la-ares_event_select.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o event/libcares_la-ares_event_select.lo `test -f 'event/ares_event_select.c' || echo '$(srcdir)/'`event/ares_event_select.c + +event/libcares_la-ares_event_thread.lo: event/ares_event_thread.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT event/libcares_la-ares_event_thread.lo -MD -MP -MF event/$(DEPDIR)/libcares_la-ares_event_thread.Tpo -c -o event/libcares_la-ares_event_thread.lo `test -f 'event/ares_event_thread.c' || echo '$(srcdir)/'`event/ares_event_thread.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) event/$(DEPDIR)/libcares_la-ares_event_thread.Tpo event/$(DEPDIR)/libcares_la-ares_event_thread.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='event/ares_event_thread.c' object='event/libcares_la-ares_event_thread.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o event/libcares_la-ares_event_thread.lo `test -f 'event/ares_event_thread.c' || echo '$(srcdir)/'`event/ares_event_thread.c + +event/libcares_la-ares_event_wake_pipe.lo: event/ares_event_wake_pipe.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT event/libcares_la-ares_event_wake_pipe.lo -MD -MP -MF event/$(DEPDIR)/libcares_la-ares_event_wake_pipe.Tpo -c -o event/libcares_la-ares_event_wake_pipe.lo `test -f 'event/ares_event_wake_pipe.c' || echo '$(srcdir)/'`event/ares_event_wake_pipe.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) event/$(DEPDIR)/libcares_la-ares_event_wake_pipe.Tpo event/$(DEPDIR)/libcares_la-ares_event_wake_pipe.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='event/ares_event_wake_pipe.c' object='event/libcares_la-ares_event_wake_pipe.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o event/libcares_la-ares_event_wake_pipe.lo `test -f 'event/ares_event_wake_pipe.c' || echo '$(srcdir)/'`event/ares_event_wake_pipe.c + +event/libcares_la-ares_event_win32.lo: event/ares_event_win32.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT event/libcares_la-ares_event_win32.lo -MD -MP -MF event/$(DEPDIR)/libcares_la-ares_event_win32.Tpo -c -o event/libcares_la-ares_event_win32.lo `test -f 'event/ares_event_win32.c' || echo '$(srcdir)/'`event/ares_event_win32.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) event/$(DEPDIR)/libcares_la-ares_event_win32.Tpo event/$(DEPDIR)/libcares_la-ares_event_win32.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='event/ares_event_win32.c' object='event/libcares_la-ares_event_win32.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o event/libcares_la-ares_event_win32.lo `test -f 'event/ares_event_win32.c' || echo '$(srcdir)/'`event/ares_event_win32.c + +legacy/libcares_la-ares_create_query.lo: legacy/ares_create_query.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_create_query.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_create_query.Tpo -c -o legacy/libcares_la-ares_create_query.lo `test -f 'legacy/ares_create_query.c' || echo '$(srcdir)/'`legacy/ares_create_query.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_create_query.Tpo legacy/$(DEPDIR)/libcares_la-ares_create_query.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_create_query.c' object='legacy/libcares_la-ares_create_query.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_create_query.lo `test -f 'legacy/ares_create_query.c' || echo '$(srcdir)/'`legacy/ares_create_query.c + +legacy/libcares_la-ares_expand_name.lo: legacy/ares_expand_name.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_expand_name.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_expand_name.Tpo -c -o legacy/libcares_la-ares_expand_name.lo `test -f 'legacy/ares_expand_name.c' || echo '$(srcdir)/'`legacy/ares_expand_name.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_expand_name.Tpo legacy/$(DEPDIR)/libcares_la-ares_expand_name.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_expand_name.c' object='legacy/libcares_la-ares_expand_name.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_expand_name.lo `test -f 'legacy/ares_expand_name.c' || echo '$(srcdir)/'`legacy/ares_expand_name.c + +legacy/libcares_la-ares_expand_string.lo: legacy/ares_expand_string.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_expand_string.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_expand_string.Tpo -c -o legacy/libcares_la-ares_expand_string.lo `test -f 'legacy/ares_expand_string.c' || echo '$(srcdir)/'`legacy/ares_expand_string.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_expand_string.Tpo legacy/$(DEPDIR)/libcares_la-ares_expand_string.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_expand_string.c' object='legacy/libcares_la-ares_expand_string.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_expand_string.lo `test -f 'legacy/ares_expand_string.c' || echo '$(srcdir)/'`legacy/ares_expand_string.c + +legacy/libcares_la-ares_fds.lo: legacy/ares_fds.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_fds.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_fds.Tpo -c -o legacy/libcares_la-ares_fds.lo `test -f 'legacy/ares_fds.c' || echo '$(srcdir)/'`legacy/ares_fds.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_fds.Tpo legacy/$(DEPDIR)/libcares_la-ares_fds.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_fds.c' object='legacy/libcares_la-ares_fds.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_fds.lo `test -f 'legacy/ares_fds.c' || echo '$(srcdir)/'`legacy/ares_fds.c + +legacy/libcares_la-ares_getsock.lo: legacy/ares_getsock.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_getsock.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_getsock.Tpo -c -o legacy/libcares_la-ares_getsock.lo `test -f 'legacy/ares_getsock.c' || echo '$(srcdir)/'`legacy/ares_getsock.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_getsock.Tpo legacy/$(DEPDIR)/libcares_la-ares_getsock.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_getsock.c' object='legacy/libcares_la-ares_getsock.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_getsock.lo `test -f 'legacy/ares_getsock.c' || echo '$(srcdir)/'`legacy/ares_getsock.c + +legacy/libcares_la-ares_parse_a_reply.lo: legacy/ares_parse_a_reply.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_parse_a_reply.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_parse_a_reply.Tpo -c -o legacy/libcares_la-ares_parse_a_reply.lo `test -f 'legacy/ares_parse_a_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_a_reply.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_parse_a_reply.Tpo legacy/$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_parse_a_reply.c' object='legacy/libcares_la-ares_parse_a_reply.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_parse_a_reply.lo `test -f 'legacy/ares_parse_a_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_a_reply.c + +legacy/libcares_la-ares_parse_aaaa_reply.lo: legacy/ares_parse_aaaa_reply.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_parse_aaaa_reply.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Tpo -c -o legacy/libcares_la-ares_parse_aaaa_reply.lo `test -f 'legacy/ares_parse_aaaa_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_aaaa_reply.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Tpo legacy/$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_parse_aaaa_reply.c' object='legacy/libcares_la-ares_parse_aaaa_reply.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_parse_aaaa_reply.lo `test -f 'legacy/ares_parse_aaaa_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_aaaa_reply.c + +legacy/libcares_la-ares_parse_caa_reply.lo: legacy/ares_parse_caa_reply.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_parse_caa_reply.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_parse_caa_reply.Tpo -c -o legacy/libcares_la-ares_parse_caa_reply.lo `test -f 'legacy/ares_parse_caa_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_caa_reply.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_parse_caa_reply.Tpo legacy/$(DEPDIR)/libcares_la-ares_parse_caa_reply.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_parse_caa_reply.c' object='legacy/libcares_la-ares_parse_caa_reply.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_parse_caa_reply.lo `test -f 'legacy/ares_parse_caa_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_caa_reply.c + +legacy/libcares_la-ares_parse_mx_reply.lo: legacy/ares_parse_mx_reply.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_parse_mx_reply.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_parse_mx_reply.Tpo -c -o legacy/libcares_la-ares_parse_mx_reply.lo `test -f 'legacy/ares_parse_mx_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_mx_reply.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_parse_mx_reply.Tpo legacy/$(DEPDIR)/libcares_la-ares_parse_mx_reply.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_parse_mx_reply.c' object='legacy/libcares_la-ares_parse_mx_reply.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_parse_mx_reply.lo `test -f 'legacy/ares_parse_mx_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_mx_reply.c + +legacy/libcares_la-ares_parse_naptr_reply.lo: legacy/ares_parse_naptr_reply.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_parse_naptr_reply.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_parse_naptr_reply.Tpo -c -o legacy/libcares_la-ares_parse_naptr_reply.lo `test -f 'legacy/ares_parse_naptr_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_naptr_reply.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_parse_naptr_reply.Tpo legacy/$(DEPDIR)/libcares_la-ares_parse_naptr_reply.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_parse_naptr_reply.c' object='legacy/libcares_la-ares_parse_naptr_reply.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_parse_naptr_reply.lo `test -f 'legacy/ares_parse_naptr_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_naptr_reply.c + +legacy/libcares_la-ares_parse_ns_reply.lo: legacy/ares_parse_ns_reply.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_parse_ns_reply.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_parse_ns_reply.Tpo -c -o legacy/libcares_la-ares_parse_ns_reply.lo `test -f 'legacy/ares_parse_ns_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_ns_reply.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_parse_ns_reply.Tpo legacy/$(DEPDIR)/libcares_la-ares_parse_ns_reply.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_parse_ns_reply.c' object='legacy/libcares_la-ares_parse_ns_reply.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_parse_ns_reply.lo `test -f 'legacy/ares_parse_ns_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_ns_reply.c + +legacy/libcares_la-ares_parse_ptr_reply.lo: legacy/ares_parse_ptr_reply.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_parse_ptr_reply.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_parse_ptr_reply.Tpo -c -o legacy/libcares_la-ares_parse_ptr_reply.lo `test -f 'legacy/ares_parse_ptr_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_ptr_reply.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_parse_ptr_reply.Tpo legacy/$(DEPDIR)/libcares_la-ares_parse_ptr_reply.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_parse_ptr_reply.c' object='legacy/libcares_la-ares_parse_ptr_reply.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_parse_ptr_reply.lo `test -f 'legacy/ares_parse_ptr_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_ptr_reply.c + +legacy/libcares_la-ares_parse_soa_reply.lo: legacy/ares_parse_soa_reply.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_parse_soa_reply.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_parse_soa_reply.Tpo -c -o legacy/libcares_la-ares_parse_soa_reply.lo `test -f 'legacy/ares_parse_soa_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_soa_reply.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_parse_soa_reply.Tpo legacy/$(DEPDIR)/libcares_la-ares_parse_soa_reply.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_parse_soa_reply.c' object='legacy/libcares_la-ares_parse_soa_reply.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_parse_soa_reply.lo `test -f 'legacy/ares_parse_soa_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_soa_reply.c + +legacy/libcares_la-ares_parse_srv_reply.lo: legacy/ares_parse_srv_reply.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_parse_srv_reply.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_parse_srv_reply.Tpo -c -o legacy/libcares_la-ares_parse_srv_reply.lo `test -f 'legacy/ares_parse_srv_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_srv_reply.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_parse_srv_reply.Tpo legacy/$(DEPDIR)/libcares_la-ares_parse_srv_reply.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_parse_srv_reply.c' object='legacy/libcares_la-ares_parse_srv_reply.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_parse_srv_reply.lo `test -f 'legacy/ares_parse_srv_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_srv_reply.c + +legacy/libcares_la-ares_parse_txt_reply.lo: legacy/ares_parse_txt_reply.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_parse_txt_reply.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_parse_txt_reply.Tpo -c -o legacy/libcares_la-ares_parse_txt_reply.lo `test -f 'legacy/ares_parse_txt_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_txt_reply.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_parse_txt_reply.Tpo legacy/$(DEPDIR)/libcares_la-ares_parse_txt_reply.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_parse_txt_reply.c' object='legacy/libcares_la-ares_parse_txt_reply.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_parse_txt_reply.lo `test -f 'legacy/ares_parse_txt_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_txt_reply.c + +legacy/libcares_la-ares_parse_uri_reply.lo: legacy/ares_parse_uri_reply.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT legacy/libcares_la-ares_parse_uri_reply.lo -MD -MP -MF legacy/$(DEPDIR)/libcares_la-ares_parse_uri_reply.Tpo -c -o legacy/libcares_la-ares_parse_uri_reply.lo `test -f 'legacy/ares_parse_uri_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_uri_reply.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) legacy/$(DEPDIR)/libcares_la-ares_parse_uri_reply.Tpo legacy/$(DEPDIR)/libcares_la-ares_parse_uri_reply.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='legacy/ares_parse_uri_reply.c' object='legacy/libcares_la-ares_parse_uri_reply.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o legacy/libcares_la-ares_parse_uri_reply.lo `test -f 'legacy/ares_parse_uri_reply.c' || echo '$(srcdir)/'`legacy/ares_parse_uri_reply.c + +record/libcares_la-ares_dns_mapping.lo: record/ares_dns_mapping.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT record/libcares_la-ares_dns_mapping.lo -MD -MP -MF record/$(DEPDIR)/libcares_la-ares_dns_mapping.Tpo -c -o record/libcares_la-ares_dns_mapping.lo `test -f 'record/ares_dns_mapping.c' || echo '$(srcdir)/'`record/ares_dns_mapping.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) record/$(DEPDIR)/libcares_la-ares_dns_mapping.Tpo record/$(DEPDIR)/libcares_la-ares_dns_mapping.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='record/ares_dns_mapping.c' object='record/libcares_la-ares_dns_mapping.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o record/libcares_la-ares_dns_mapping.lo `test -f 'record/ares_dns_mapping.c' || echo '$(srcdir)/'`record/ares_dns_mapping.c + +record/libcares_la-ares_dns_multistring.lo: record/ares_dns_multistring.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT record/libcares_la-ares_dns_multistring.lo -MD -MP -MF record/$(DEPDIR)/libcares_la-ares_dns_multistring.Tpo -c -o record/libcares_la-ares_dns_multistring.lo `test -f 'record/ares_dns_multistring.c' || echo '$(srcdir)/'`record/ares_dns_multistring.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) record/$(DEPDIR)/libcares_la-ares_dns_multistring.Tpo record/$(DEPDIR)/libcares_la-ares_dns_multistring.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='record/ares_dns_multistring.c' object='record/libcares_la-ares_dns_multistring.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o record/libcares_la-ares_dns_multistring.lo `test -f 'record/ares_dns_multistring.c' || echo '$(srcdir)/'`record/ares_dns_multistring.c + +record/libcares_la-ares_dns_name.lo: record/ares_dns_name.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT record/libcares_la-ares_dns_name.lo -MD -MP -MF record/$(DEPDIR)/libcares_la-ares_dns_name.Tpo -c -o record/libcares_la-ares_dns_name.lo `test -f 'record/ares_dns_name.c' || echo '$(srcdir)/'`record/ares_dns_name.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) record/$(DEPDIR)/libcares_la-ares_dns_name.Tpo record/$(DEPDIR)/libcares_la-ares_dns_name.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='record/ares_dns_name.c' object='record/libcares_la-ares_dns_name.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o record/libcares_la-ares_dns_name.lo `test -f 'record/ares_dns_name.c' || echo '$(srcdir)/'`record/ares_dns_name.c + +record/libcares_la-ares_dns_parse.lo: record/ares_dns_parse.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT record/libcares_la-ares_dns_parse.lo -MD -MP -MF record/$(DEPDIR)/libcares_la-ares_dns_parse.Tpo -c -o record/libcares_la-ares_dns_parse.lo `test -f 'record/ares_dns_parse.c' || echo '$(srcdir)/'`record/ares_dns_parse.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) record/$(DEPDIR)/libcares_la-ares_dns_parse.Tpo record/$(DEPDIR)/libcares_la-ares_dns_parse.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='record/ares_dns_parse.c' object='record/libcares_la-ares_dns_parse.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o record/libcares_la-ares_dns_parse.lo `test -f 'record/ares_dns_parse.c' || echo '$(srcdir)/'`record/ares_dns_parse.c + +record/libcares_la-ares_dns_record.lo: record/ares_dns_record.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT record/libcares_la-ares_dns_record.lo -MD -MP -MF record/$(DEPDIR)/libcares_la-ares_dns_record.Tpo -c -o record/libcares_la-ares_dns_record.lo `test -f 'record/ares_dns_record.c' || echo '$(srcdir)/'`record/ares_dns_record.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) record/$(DEPDIR)/libcares_la-ares_dns_record.Tpo record/$(DEPDIR)/libcares_la-ares_dns_record.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='record/ares_dns_record.c' object='record/libcares_la-ares_dns_record.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o record/libcares_la-ares_dns_record.lo `test -f 'record/ares_dns_record.c' || echo '$(srcdir)/'`record/ares_dns_record.c + +record/libcares_la-ares_dns_write.lo: record/ares_dns_write.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT record/libcares_la-ares_dns_write.lo -MD -MP -MF record/$(DEPDIR)/libcares_la-ares_dns_write.Tpo -c -o record/libcares_la-ares_dns_write.lo `test -f 'record/ares_dns_write.c' || echo '$(srcdir)/'`record/ares_dns_write.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) record/$(DEPDIR)/libcares_la-ares_dns_write.Tpo record/$(DEPDIR)/libcares_la-ares_dns_write.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='record/ares_dns_write.c' object='record/libcares_la-ares_dns_write.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o record/libcares_la-ares_dns_write.lo `test -f 'record/ares_dns_write.c' || echo '$(srcdir)/'`record/ares_dns_write.c + +str/libcares_la-ares__buf.lo: str/ares__buf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT str/libcares_la-ares__buf.lo -MD -MP -MF str/$(DEPDIR)/libcares_la-ares__buf.Tpo -c -o str/libcares_la-ares__buf.lo `test -f 'str/ares__buf.c' || echo '$(srcdir)/'`str/ares__buf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) str/$(DEPDIR)/libcares_la-ares__buf.Tpo str/$(DEPDIR)/libcares_la-ares__buf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='str/ares__buf.c' object='str/libcares_la-ares__buf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o str/libcares_la-ares__buf.lo `test -f 'str/ares__buf.c' || echo '$(srcdir)/'`str/ares__buf.c + +str/libcares_la-ares_strcasecmp.lo: str/ares_strcasecmp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT str/libcares_la-ares_strcasecmp.lo -MD -MP -MF str/$(DEPDIR)/libcares_la-ares_strcasecmp.Tpo -c -o str/libcares_la-ares_strcasecmp.lo `test -f 'str/ares_strcasecmp.c' || echo '$(srcdir)/'`str/ares_strcasecmp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) str/$(DEPDIR)/libcares_la-ares_strcasecmp.Tpo str/$(DEPDIR)/libcares_la-ares_strcasecmp.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='str/ares_strcasecmp.c' object='str/libcares_la-ares_strcasecmp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o str/libcares_la-ares_strcasecmp.lo `test -f 'str/ares_strcasecmp.c' || echo '$(srcdir)/'`str/ares_strcasecmp.c + +str/libcares_la-ares_str.lo: str/ares_str.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT str/libcares_la-ares_str.lo -MD -MP -MF str/$(DEPDIR)/libcares_la-ares_str.Tpo -c -o str/libcares_la-ares_str.lo `test -f 'str/ares_str.c' || echo '$(srcdir)/'`str/ares_str.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) str/$(DEPDIR)/libcares_la-ares_str.Tpo str/$(DEPDIR)/libcares_la-ares_str.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='str/ares_str.c' object='str/libcares_la-ares_str.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o str/libcares_la-ares_str.lo `test -f 'str/ares_str.c' || echo '$(srcdir)/'`str/ares_str.c + +str/libcares_la-ares_strsplit.lo: str/ares_strsplit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT str/libcares_la-ares_strsplit.lo -MD -MP -MF str/$(DEPDIR)/libcares_la-ares_strsplit.Tpo -c -o str/libcares_la-ares_strsplit.lo `test -f 'str/ares_strsplit.c' || echo '$(srcdir)/'`str/ares_strsplit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) str/$(DEPDIR)/libcares_la-ares_strsplit.Tpo str/$(DEPDIR)/libcares_la-ares_strsplit.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='str/ares_strsplit.c' object='str/libcares_la-ares_strsplit.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o str/libcares_la-ares_strsplit.lo `test -f 'str/ares_strsplit.c' || echo '$(srcdir)/'`str/ares_strsplit.c + +util/libcares_la-ares__iface_ips.lo: util/ares__iface_ips.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT util/libcares_la-ares__iface_ips.lo -MD -MP -MF util/$(DEPDIR)/libcares_la-ares__iface_ips.Tpo -c -o util/libcares_la-ares__iface_ips.lo `test -f 'util/ares__iface_ips.c' || echo '$(srcdir)/'`util/ares__iface_ips.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) util/$(DEPDIR)/libcares_la-ares__iface_ips.Tpo util/$(DEPDIR)/libcares_la-ares__iface_ips.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='util/ares__iface_ips.c' object='util/libcares_la-ares__iface_ips.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o util/libcares_la-ares__iface_ips.lo `test -f 'util/ares__iface_ips.c' || echo '$(srcdir)/'`util/ares__iface_ips.c + +util/libcares_la-ares__threads.lo: util/ares__threads.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT util/libcares_la-ares__threads.lo -MD -MP -MF util/$(DEPDIR)/libcares_la-ares__threads.Tpo -c -o util/libcares_la-ares__threads.lo `test -f 'util/ares__threads.c' || echo '$(srcdir)/'`util/ares__threads.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) util/$(DEPDIR)/libcares_la-ares__threads.Tpo util/$(DEPDIR)/libcares_la-ares__threads.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='util/ares__threads.c' object='util/libcares_la-ares__threads.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o util/libcares_la-ares__threads.lo `test -f 'util/ares__threads.c' || echo '$(srcdir)/'`util/ares__threads.c + +util/libcares_la-ares__timeval.lo: util/ares__timeval.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT util/libcares_la-ares__timeval.lo -MD -MP -MF util/$(DEPDIR)/libcares_la-ares__timeval.Tpo -c -o util/libcares_la-ares__timeval.lo `test -f 'util/ares__timeval.c' || echo '$(srcdir)/'`util/ares__timeval.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) util/$(DEPDIR)/libcares_la-ares__timeval.Tpo util/$(DEPDIR)/libcares_la-ares__timeval.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='util/ares__timeval.c' object='util/libcares_la-ares__timeval.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o util/libcares_la-ares__timeval.lo `test -f 'util/ares__timeval.c' || echo '$(srcdir)/'`util/ares__timeval.c + +util/libcares_la-ares_math.lo: util/ares_math.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT util/libcares_la-ares_math.lo -MD -MP -MF util/$(DEPDIR)/libcares_la-ares_math.Tpo -c -o util/libcares_la-ares_math.lo `test -f 'util/ares_math.c' || echo '$(srcdir)/'`util/ares_math.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) util/$(DEPDIR)/libcares_la-ares_math.Tpo util/$(DEPDIR)/libcares_la-ares_math.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='util/ares_math.c' object='util/libcares_la-ares_math.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o util/libcares_la-ares_math.lo `test -f 'util/ares_math.c' || echo '$(srcdir)/'`util/ares_math.c + +util/libcares_la-ares_rand.lo: util/ares_rand.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT util/libcares_la-ares_rand.lo -MD -MP -MF util/$(DEPDIR)/libcares_la-ares_rand.Tpo -c -o util/libcares_la-ares_rand.lo `test -f 'util/ares_rand.c' || echo '$(srcdir)/'`util/ares_rand.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) util/$(DEPDIR)/libcares_la-ares_rand.Tpo util/$(DEPDIR)/libcares_la-ares_rand.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='util/ares_rand.c' object='util/libcares_la-ares_rand.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o util/libcares_la-ares_rand.lo `test -f 'util/ares_rand.c' || echo '$(srcdir)/'`util/ares_rand.c + mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs + -rm -rf dsa/.libs dsa/_libs + -rm -rf event/.libs event/_libs + -rm -rf legacy/.libs legacy/_libs + -rm -rf record/.libs record/_libs + -rm -rf str/.libs str/_libs + -rm -rf util/.libs util/_libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. @@ -1751,9 +1931,21 @@ mostlyclean-generic: clean-generic: distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + -$(am__rm_f) $(DISTCLEANFILES) + -$(am__rm_f) dsa/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) dsa/$(am__dirstamp) + -$(am__rm_f) event/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) event/$(am__dirstamp) + -$(am__rm_f) legacy/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) legacy/$(am__dirstamp) + -$(am__rm_f) record/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) record/$(am__dirstamp) + -$(am__rm_f) str/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) str/$(am__dirstamp) + -$(am__rm_f) util/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) util/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -1764,46 +1956,18 @@ clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-recursive - -rm -f ./$(DEPDIR)/libcares_la-ares__addrinfo2hostent.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares__addrinfo2hostent.Plo -rm -f ./$(DEPDIR)/libcares_la-ares__addrinfo_localhost.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__buf.Plo -rm -f ./$(DEPDIR)/libcares_la-ares__close_sockets.Plo -rm -f ./$(DEPDIR)/libcares_la-ares__hosts_file.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__htable.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__htable_asvp.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__htable_strvp.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__htable_szvp.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__iface_ips.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__llist.Plo -rm -f ./$(DEPDIR)/libcares_la-ares__parse_into_addrinfo.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__slist.Plo -rm -f ./$(DEPDIR)/libcares_la-ares__socket.Plo -rm -f ./$(DEPDIR)/libcares_la-ares__sortaddrinfo.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__threads.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__timeval.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_android.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_cancel.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_create_query.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares_cookie.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_data.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_destroy.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_dns_mapping.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_dns_multistring.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_dns_name.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_dns_parse.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_dns_record.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_dns_write.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_configchg.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_epoll.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_kqueue.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_poll.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_select.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_thread.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_wake_pipe.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_win32.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_expand_name.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_expand_string.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_fds.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_free_hostent.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_free_string.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_freeaddrinfo.Plo @@ -1812,34 +1976,17 @@ distclean: distclean-recursive -rm -f ./$(DEPDIR)/libcares_la-ares_gethostbyaddr.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_gethostbyname.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_getnameinfo.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_getsock.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_init.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_library_init.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_math.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_metrics.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_options.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_caa_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_mx_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_naptr_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_ns_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_ptr_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_soa_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_srv_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_txt_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_uri_reply.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_platform.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_process.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_qcache.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_query.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_rand.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_search.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_send.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_str.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_strcasecmp.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_strerror.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_strsplit.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_sysconfig.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_sysconfig_files.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_sysconfig_mac.Plo @@ -1850,6 +1997,53 @@ distclean: distclean-recursive -rm -f ./$(DEPDIR)/libcares_la-inet_net_pton.Plo -rm -f ./$(DEPDIR)/libcares_la-inet_ntop.Plo -rm -f ./$(DEPDIR)/libcares_la-windows_port.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__array.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__htable.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__htable_asvp.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__htable_strvp.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__htable_szvp.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__llist.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__slist.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_configchg.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_epoll.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_kqueue.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_poll.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_select.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_thread.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_wake_pipe.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_win32.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_create_query.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_expand_name.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_expand_string.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_fds.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_getsock.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_caa_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_mx_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_naptr_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_ns_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_ptr_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_soa_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_srv_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_txt_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_uri_reply.Plo + -rm -f record/$(DEPDIR)/libcares_la-ares_dns_mapping.Plo + -rm -f record/$(DEPDIR)/libcares_la-ares_dns_multistring.Plo + -rm -f record/$(DEPDIR)/libcares_la-ares_dns_name.Plo + -rm -f record/$(DEPDIR)/libcares_la-ares_dns_parse.Plo + -rm -f record/$(DEPDIR)/libcares_la-ares_dns_record.Plo + -rm -f record/$(DEPDIR)/libcares_la-ares_dns_write.Plo + -rm -f str/$(DEPDIR)/libcares_la-ares__buf.Plo + -rm -f str/$(DEPDIR)/libcares_la-ares_str.Plo + -rm -f str/$(DEPDIR)/libcares_la-ares_strcasecmp.Plo + -rm -f str/$(DEPDIR)/libcares_la-ares_strsplit.Plo + -rm -f util/$(DEPDIR)/libcares_la-ares__iface_ips.Plo + -rm -f util/$(DEPDIR)/libcares_la-ares__threads.Plo + -rm -f util/$(DEPDIR)/libcares_la-ares__timeval.Plo + -rm -f util/$(DEPDIR)/libcares_la-ares_math.Plo + -rm -f util/$(DEPDIR)/libcares_la-ares_rand.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags @@ -1895,46 +2089,18 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive - -rm -f ./$(DEPDIR)/libcares_la-ares__addrinfo2hostent.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares__addrinfo2hostent.Plo -rm -f ./$(DEPDIR)/libcares_la-ares__addrinfo_localhost.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__buf.Plo -rm -f ./$(DEPDIR)/libcares_la-ares__close_sockets.Plo -rm -f ./$(DEPDIR)/libcares_la-ares__hosts_file.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__htable.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__htable_asvp.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__htable_strvp.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__htable_szvp.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__iface_ips.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__llist.Plo -rm -f ./$(DEPDIR)/libcares_la-ares__parse_into_addrinfo.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__slist.Plo -rm -f ./$(DEPDIR)/libcares_la-ares__socket.Plo -rm -f ./$(DEPDIR)/libcares_la-ares__sortaddrinfo.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__threads.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares__timeval.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_android.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_cancel.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_create_query.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares_cookie.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_data.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_destroy.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_dns_mapping.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_dns_multistring.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_dns_name.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_dns_parse.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_dns_record.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_dns_write.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_configchg.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_epoll.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_kqueue.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_poll.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_select.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_thread.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_wake_pipe.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_event_win32.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_expand_name.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_expand_string.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_fds.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_free_hostent.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_free_string.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_freeaddrinfo.Plo @@ -1943,34 +2109,17 @@ maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/libcares_la-ares_gethostbyaddr.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_gethostbyname.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_getnameinfo.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_getsock.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_init.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_library_init.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_math.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_metrics.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_options.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_caa_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_mx_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_naptr_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_ns_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_ptr_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_soa_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_srv_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_txt_reply.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_parse_uri_reply.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_platform.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_process.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_qcache.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_query.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_rand.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_search.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_send.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_str.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_strcasecmp.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_strerror.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_strsplit.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_sysconfig.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_sysconfig_files.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_sysconfig_mac.Plo @@ -1981,6 +2130,53 @@ maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/libcares_la-inet_net_pton.Plo -rm -f ./$(DEPDIR)/libcares_la-inet_ntop.Plo -rm -f ./$(DEPDIR)/libcares_la-windows_port.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__array.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__htable.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__htable_asvp.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__htable_strvp.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__htable_szvp.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__llist.Plo + -rm -f dsa/$(DEPDIR)/libcares_la-ares__slist.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_configchg.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_epoll.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_kqueue.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_poll.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_select.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_thread.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_wake_pipe.Plo + -rm -f event/$(DEPDIR)/libcares_la-ares_event_win32.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_create_query.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_expand_name.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_expand_string.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_fds.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_getsock.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_caa_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_mx_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_naptr_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_ns_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_ptr_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_soa_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_srv_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_txt_reply.Plo + -rm -f legacy/$(DEPDIR)/libcares_la-ares_parse_uri_reply.Plo + -rm -f record/$(DEPDIR)/libcares_la-ares_dns_mapping.Plo + -rm -f record/$(DEPDIR)/libcares_la-ares_dns_multistring.Plo + -rm -f record/$(DEPDIR)/libcares_la-ares_dns_name.Plo + -rm -f record/$(DEPDIR)/libcares_la-ares_dns_parse.Plo + -rm -f record/$(DEPDIR)/libcares_la-ares_dns_record.Plo + -rm -f record/$(DEPDIR)/libcares_la-ares_dns_write.Plo + -rm -f str/$(DEPDIR)/libcares_la-ares__buf.Plo + -rm -f str/$(DEPDIR)/libcares_la-ares_str.Plo + -rm -f str/$(DEPDIR)/libcares_la-ares_strcasecmp.Plo + -rm -f str/$(DEPDIR)/libcares_la-ares_strsplit.Plo + -rm -f util/$(DEPDIR)/libcares_la-ares__iface_ips.Plo + -rm -f util/$(DEPDIR)/libcares_la-ares__threads.Plo + -rm -f util/$(DEPDIR)/libcares_la-ares__timeval.Plo + -rm -f util/$(DEPDIR)/libcares_la-ares_math.Plo + -rm -f util/$(DEPDIR)/libcares_la-ares_rand.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -2123,3 +2319,10 @@ code-coverage-capture-hook: # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/lib/c-ares-1.33.0/src/lib/Makefile.inc b/lib/c-ares-1.33.0/src/lib/Makefile.inc new file mode 100644 index 00000000000..8fa434c3e2c --- /dev/null +++ b/lib/c-ares-1.33.0/src/lib/Makefile.inc @@ -0,0 +1,120 @@ +# Copyright (C) The c-ares project and its contributors +# SPDX-License-Identifier: MIT + +CSOURCES = ares__addrinfo2hostent.c \ + ares__addrinfo_localhost.c \ + ares__close_sockets.c \ + ares__hosts_file.c \ + ares__parse_into_addrinfo.c \ + ares__socket.c \ + ares__sortaddrinfo.c \ + ares_android.c \ + ares_cancel.c \ + ares_cookie.c \ + ares_data.c \ + ares_destroy.c \ + ares_free_hostent.c \ + ares_free_string.c \ + ares_freeaddrinfo.c \ + ares_getaddrinfo.c \ + ares_getenv.c \ + ares_gethostbyaddr.c \ + ares_gethostbyname.c \ + ares_getnameinfo.c \ + ares_init.c \ + ares_library_init.c \ + ares_metrics.c \ + ares_options.c \ + ares_platform.c \ + ares_process.c \ + ares_qcache.c \ + ares_query.c \ + ares_search.c \ + ares_send.c \ + ares_strerror.c \ + ares_sysconfig.c \ + ares_sysconfig_files.c \ + ares_sysconfig_mac.c \ + ares_sysconfig_win.c \ + ares_timeout.c \ + ares_update_servers.c \ + ares_version.c \ + inet_net_pton.c \ + inet_ntop.c \ + windows_port.c \ + dsa/ares__array.c \ + dsa/ares__htable.c \ + dsa/ares__htable_asvp.c \ + dsa/ares__htable_strvp.c \ + dsa/ares__htable_szvp.c \ + dsa/ares__htable_vpvp.c \ + dsa/ares__llist.c \ + dsa/ares__slist.c \ + event/ares_event_configchg.c \ + event/ares_event_epoll.c \ + event/ares_event_kqueue.c \ + event/ares_event_poll.c \ + event/ares_event_select.c \ + event/ares_event_thread.c \ + event/ares_event_wake_pipe.c \ + event/ares_event_win32.c \ + legacy/ares_create_query.c \ + legacy/ares_expand_name.c \ + legacy/ares_expand_string.c \ + legacy/ares_fds.c \ + legacy/ares_getsock.c \ + legacy/ares_parse_a_reply.c \ + legacy/ares_parse_aaaa_reply.c \ + legacy/ares_parse_caa_reply.c \ + legacy/ares_parse_mx_reply.c \ + legacy/ares_parse_naptr_reply.c \ + legacy/ares_parse_ns_reply.c \ + legacy/ares_parse_ptr_reply.c \ + legacy/ares_parse_soa_reply.c \ + legacy/ares_parse_srv_reply.c \ + legacy/ares_parse_txt_reply.c \ + legacy/ares_parse_uri_reply.c \ + record/ares_dns_mapping.c \ + record/ares_dns_multistring.c \ + record/ares_dns_name.c \ + record/ares_dns_parse.c \ + record/ares_dns_record.c \ + record/ares_dns_write.c \ + str/ares__buf.c \ + str/ares_strcasecmp.c \ + str/ares_str.c \ + str/ares_strsplit.c \ + util/ares__iface_ips.c \ + util/ares__threads.c \ + util/ares__timeval.c \ + util/ares_math.c \ + util/ares_rand.c + +HHEADERS = ares_android.h \ + ares_data.h \ + ares_getenv.h \ + ares_inet_net_pton.h \ + ares_ipv6.h \ + ares_platform.h \ + ares_private.h \ + ares_setup.h \ + dsa/ares__array.h \ + dsa/ares__htable.h \ + dsa/ares__htable_asvp.h \ + dsa/ares__htable_strvp.h \ + dsa/ares__htable_szvp.h \ + dsa/ares__htable_vpvp.h \ + dsa/ares__llist.h \ + dsa/ares__slist.h \ + event/ares_event.h \ + event/ares_event_win32.h \ + record/ares_dns_multistring.h \ + record/ares_dns_private.h \ + str/ares__buf.h \ + str/ares_strcasecmp.h \ + str/ares_str.h \ + str/ares_strsplit.h \ + util/ares__iface_ips.h \ + util/ares__threads.h \ + thirdparty/apple/dnsinfo.h + diff --git a/lib/c-ares-1.32.3/src/lib/ares__addrinfo2hostent.c b/lib/c-ares-1.33.0/src/lib/ares__addrinfo2hostent.c similarity index 90% rename from lib/c-ares-1.32.3/src/lib/ares__addrinfo2hostent.c rename to lib/c-ares-1.33.0/src/lib/ares__addrinfo2hostent.c index 9505af7340d..f7b6d1edd25 100644 --- a/lib/c-ares-1.32.3/src/lib/ares__addrinfo2hostent.c +++ b/lib/c-ares-1.33.0/src/lib/ares__addrinfo2hostent.c @@ -161,16 +161,16 @@ ares_status_t ares__addrinfo2hostent(const struct ares_addrinfo *ai, int family, } (*host)->h_addr_list[i] = addrs + (i * (size_t)(*host)->h_length); if (family == AF_INET6) { - memcpy( - (*host)->h_addr_list[i], - &(CARES_INADDR_CAST(const struct sockaddr_in6 *, next->ai_addr)->sin6_addr), - (size_t)(*host)->h_length); + memcpy((*host)->h_addr_list[i], + &(CARES_INADDR_CAST(const struct sockaddr_in6 *, next->ai_addr) + ->sin6_addr), + (size_t)(*host)->h_length); } if (family == AF_INET) { - memcpy( - (*host)->h_addr_list[i], - &(CARES_INADDR_CAST(const struct sockaddr_in *, next->ai_addr)->sin_addr), - (size_t)(*host)->h_length); + memcpy((*host)->h_addr_list[i], + &(CARES_INADDR_CAST(const struct sockaddr_in *, next->ai_addr) + ->sin_addr), + (size_t)(*host)->h_length); } ++i; } @@ -252,20 +252,20 @@ ares_status_t ares__addrinfo2addrttl(const struct ares_addrinfo *ai, int family, addr6ttls[*naddrttls].ttl = next->ai_ttl; } - memcpy( - &addr6ttls[*naddrttls].ip6addr, - &(CARES_INADDR_CAST(const struct sockaddr_in6 *, next->ai_addr)->sin6_addr), - sizeof(struct ares_in6_addr)); + memcpy(&addr6ttls[*naddrttls].ip6addr, + &(CARES_INADDR_CAST(const struct sockaddr_in6 *, next->ai_addr) + ->sin6_addr), + sizeof(struct ares_in6_addr)); } else { if (next->ai_ttl > cname_ttl) { addrttls[*naddrttls].ttl = cname_ttl; } else { addrttls[*naddrttls].ttl = next->ai_ttl; } - memcpy( - &addrttls[*naddrttls].ipaddr, - &(CARES_INADDR_CAST(const struct sockaddr_in *, next->ai_addr)->sin_addr), - sizeof(struct in_addr)); + memcpy(&addrttls[*naddrttls].ipaddr, + &(CARES_INADDR_CAST(const struct sockaddr_in *, next->ai_addr) + ->sin_addr), + sizeof(struct in_addr)); } (*naddrttls)++; } diff --git a/lib/c-ares-1.32.3/src/lib/ares__addrinfo_localhost.c b/lib/c-ares-1.33.0/src/lib/ares__addrinfo_localhost.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__addrinfo_localhost.c rename to lib/c-ares-1.33.0/src/lib/ares__addrinfo_localhost.c diff --git a/lib/c-ares-1.32.3/src/lib/ares__close_sockets.c b/lib/c-ares-1.33.0/src/lib/ares__close_sockets.c similarity index 80% rename from lib/c-ares-1.32.3/src/lib/ares__close_sockets.c rename to lib/c-ares-1.33.0/src/lib/ares__close_sockets.c index 33a030c9d23..27bbaacf0e8 100644 --- a/lib/c-ares-1.32.3/src/lib/ares__close_sockets.c +++ b/lib/c-ares-1.33.0/src/lib/ares__close_sockets.c @@ -28,31 +28,30 @@ #include "ares_private.h" #include -static void ares__requeue_queries(struct server_connection *conn, +static void ares__requeue_queries(ares_conn_t *conn, ares_status_t requeue_status) { - struct query *query; + ares_query_t *query; ares_timeval_t now; ares__tvnow(&now); while ((query = ares__llist_first_val(conn->queries_to_conn)) != NULL) { - ares__requeue_query(query, &now, requeue_status); + ares__requeue_query(query, &now, requeue_status, ARES_TRUE); } } -void ares__close_connection(struct server_connection *conn, - ares_status_t requeue_status) +void ares__close_connection(ares_conn_t *conn, ares_status_t requeue_status) { - struct server_state *server = conn->server; - ares_channel_t *channel = server->channel; + ares_server_t *server = conn->server; + ares_channel_t *channel = server->channel; /* Unlink */ ares__llist_node_claim( ares__htable_asvp_get_direct(channel->connnode_by_socket, conn->fd)); ares__htable_asvp_remove(channel->connnode_by_socket, conn->fd); - if (conn->is_tcp) { + if (conn->flags & ARES_CONN_FLAG_TCP) { /* Reset any existing input and output buffer. */ ares__buf_consume(server->tcp_parser, ares__buf_len(server->tcp_parser)); ares__buf_consume(server->tcp_send, ares__buf_len(server->tcp_send)); @@ -70,12 +69,12 @@ void ares__close_connection(struct server_connection *conn, ares_free(conn); } -void ares__close_sockets(struct server_state *server) +void ares__close_sockets(ares_server_t *server) { ares__llist_node_t *node; while ((node = ares__llist_node_first(server->connections)) != NULL) { - struct server_connection *conn = ares__llist_node_val(node); + ares_conn_t *conn = ares__llist_node_val(node); ares__close_connection(conn, ARES_SUCCESS); } } @@ -91,17 +90,16 @@ void ares__check_cleanup_conns(const ares_channel_t *channel) /* Iterate across each server */ for (snode = ares__slist_node_first(channel->servers); snode != NULL; snode = ares__slist_node_next(snode)) { - - struct server_state *server = ares__slist_node_val(snode); - ares__llist_node_t *cnode; + ares_server_t *server = ares__slist_node_val(snode); + ares__llist_node_t *cnode; /* Iterate across each connection */ cnode = ares__llist_node_first(server->connections); while (cnode != NULL) { - ares__llist_node_t *next = ares__llist_node_next(cnode); - struct server_connection *conn = ares__llist_node_val(cnode); - ares_bool_t do_cleanup = ARES_FALSE; - cnode = next; + ares__llist_node_t *next = ares__llist_node_next(cnode); + ares_conn_t *conn = ares__llist_node_val(cnode); + ares_bool_t do_cleanup = ARES_FALSE; + cnode = next; /* Has connections, not eligible */ if (ares__llist_len(conn->queries_to_conn)) { @@ -122,7 +120,7 @@ void ares__check_cleanup_conns(const ares_channel_t *channel) } /* If the udp connection hit its max queries, always close it */ - if (!conn->is_tcp && channel->udp_max_queries > 0 && + if (!(conn->flags & ARES_CONN_FLAG_TCP) && channel->udp_max_queries > 0 && conn->total_queries >= channel->udp_max_queries) { do_cleanup = ARES_TRUE; } diff --git a/lib/c-ares-1.32.3/src/lib/ares__hosts_file.c b/lib/c-ares-1.33.0/src/lib/ares__hosts_file.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__hosts_file.c rename to lib/c-ares-1.33.0/src/lib/ares__hosts_file.c diff --git a/lib/c-ares-1.32.3/src/lib/ares__parse_into_addrinfo.c b/lib/c-ares-1.33.0/src/lib/ares__parse_into_addrinfo.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__parse_into_addrinfo.c rename to lib/c-ares-1.33.0/src/lib/ares__parse_into_addrinfo.c diff --git a/lib/c-ares-1.33.0/src/lib/ares__socket.c b/lib/c-ares-1.33.0/src/lib/ares__socket.c new file mode 100644 index 00000000000..2e360efb414 --- /dev/null +++ b/lib/c-ares-1.33.0/src/lib/ares__socket.c @@ -0,0 +1,764 @@ +/* MIT License + * + * Copyright (c) Massachusetts Institute of Technology + * Copyright (c) The c-ares project and its contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * SPDX-License-Identifier: MIT + */ +#include "ares_private.h" + +#ifdef HAVE_SYS_UIO_H +# include +#endif +#ifdef HAVE_NETINET_IN_H +# include +#endif +#ifdef HAVE_NETINET_TCP_H +# include +#endif +#ifdef HAVE_NETDB_H +# include +#endif +#ifdef HAVE_ARPA_INET_H +# include +#endif + +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_IOCTL_H +# include +#endif +#ifdef NETWARE +# include +#endif + +#include +#include +#include + +#if defined(__linux__) && defined(MSG_FASTOPEN) +# define TFO_SUPPORTED 1 +# define TFO_SKIP_CONNECT 0 +# define TFO_USE_SENDTO 0 +# define TFO_USE_CONNECTX 0 +# define TFO_CLIENT_SOCKOPT TCP_FASTOPEN_CONNECT +#elif defined(__FreeBSD__) && defined(TCP_FASTOPEN) +# define TFO_SUPPORTED 1 +# define TFO_SKIP_CONNECT 1 +# define TFO_USE_SENDTO 1 +# define TFO_USE_CONNECTX 0 +# define TFO_CLIENT_SOCKOPT TCP_FASTOPEN +#elif defined(__APPLE__) && defined(HAVE_CONNECTX) +# define TFO_SUPPORTED 1 +# define TFO_SKIP_CONNECT 0 +# define TFO_USE_SENDTO 0 +# define TFO_USE_CONNECTX 1 +# undef TFO_CLIENT_SOCKOPT +#else +# define TFO_SUPPORTED 0 +#endif + + +#ifndef HAVE_WRITEV +/* Structure for scatter/gather I/O. */ +struct iovec { + void *iov_base; /* Pointer to data. */ + size_t iov_len; /* Length of data. */ +}; +#endif + + +/* Return 1 if the specified error number describes a readiness error, or 0 + * otherwise. This is mostly for HP-UX, which could return EAGAIN or + * EWOULDBLOCK. See this man page + * + * http://devrsrc1.external.hp.com/STKS/cgi-bin/man2html? + * manpage=/usr/share/man/man2.Z/send.2 + */ +ares_bool_t ares__socket_try_again(int errnum) +{ +#if !defined EWOULDBLOCK && !defined EAGAIN +# error "Neither EWOULDBLOCK nor EAGAIN defined" +#endif + +#ifdef EWOULDBLOCK + if (errnum == EWOULDBLOCK) { + return ARES_TRUE; + } +#endif + +#if defined EAGAIN && EAGAIN != EWOULDBLOCK + if (errnum == EAGAIN) { + return ARES_TRUE; + } +#endif + + return ARES_FALSE; +} + +ares_ssize_t ares__socket_recv(ares_channel_t *channel, ares_socket_t s, + void *data, size_t data_len) +{ + if (channel->sock_funcs && channel->sock_funcs->arecvfrom) { + return channel->sock_funcs->arecvfrom(s, data, data_len, 0, 0, 0, + channel->sock_func_cb_data); + } + + return (ares_ssize_t)recv((RECV_TYPE_ARG1)s, (RECV_TYPE_ARG2)data, + (RECV_TYPE_ARG3)data_len, (RECV_TYPE_ARG4)(0)); +} + +ares_ssize_t ares__socket_recvfrom(ares_channel_t *channel, ares_socket_t s, + void *data, size_t data_len, int flags, + struct sockaddr *from, + ares_socklen_t *from_len) +{ + if (channel->sock_funcs && channel->sock_funcs->arecvfrom) { + return channel->sock_funcs->arecvfrom(s, data, data_len, flags, from, + from_len, channel->sock_func_cb_data); + } + +#ifdef HAVE_RECVFROM + return (ares_ssize_t)recvfrom(s, data, (RECVFROM_TYPE_ARG3)data_len, flags, + from, from_len); +#else + return ares__socket_recv(channel, s, data, data_len); +#endif +} + +/* Use like: + * struct sockaddr_storage sa_storage; + * ares_socklen_t salen = sizeof(sa_storage); + * struct sockaddr *sa = (struct sockaddr *)&sa_storage; + * ares__conn_set_sockaddr(conn, sa, &salen); + */ +static ares_status_t ares__conn_set_sockaddr(const ares_conn_t *conn, + struct sockaddr *sa, + ares_socklen_t *salen) +{ + const ares_server_t *server = conn->server; + unsigned short port = + conn->flags & ARES_CONN_FLAG_TCP ? server->tcp_port : server->udp_port; + struct sockaddr_in *sin; + struct sockaddr_in6 *sin6; + + switch (server->addr.family) { + case AF_INET: + sin = (struct sockaddr_in *)(void *)sa; + if (*salen < (ares_socklen_t)sizeof(*sin)) { + return ARES_EFORMERR; + } + *salen = sizeof(*sin); + memset(sin, 0, sizeof(*sin)); + sin->sin_family = AF_INET; + sin->sin_port = htons(port); + memcpy(&sin->sin_addr, &server->addr.addr.addr4, sizeof(sin->sin_addr)); + return ARES_SUCCESS; + case AF_INET6: + sin6 = (struct sockaddr_in6 *)(void *)sa; + if (*salen < (ares_socklen_t)sizeof(*sin6)) { + return ARES_EFORMERR; + } + *salen = sizeof(*sin6); + memset(sin6, 0, sizeof(*sin6)); + sin6->sin6_family = AF_INET6; + sin6->sin6_port = htons(port); + memcpy(&sin6->sin6_addr, &server->addr.addr.addr6, + sizeof(sin6->sin6_addr)); +#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID + sin6->sin6_scope_id = server->ll_scope; +#endif + return ARES_SUCCESS; + default: + break; + } + + return ARES_EBADFAMILY; +} + +static ares_status_t ares_conn_set_self_ip(ares_conn_t *conn, ares_bool_t early) +{ + struct sockaddr_storage sa_storage; + int rv; + ares_socklen_t len = sizeof(sa_storage); + + /* We call this twice on TFO, if we already have the IP we can go ahead and + * skip processing */ + if (!early && conn->self_ip.family != AF_UNSPEC) { + return ARES_SUCCESS; + } + + memset(&sa_storage, 0, sizeof(sa_storage)); + + rv = getsockname(conn->fd, (struct sockaddr *)(void *)&sa_storage, &len); + if (rv != 0) { + /* During TCP FastOpen, we can't get the IP this early since connect() + * may not be called. That's ok, we'll try again later */ + if (early && conn->flags & ARES_CONN_FLAG_TCP && + conn->flags & ARES_CONN_FLAG_TFO) { + memset(&conn->self_ip, 0, sizeof(conn->self_ip)); + return ARES_SUCCESS; + } + return ARES_ECONNREFUSED; + } + + if (!ares_sockaddr_to_ares_addr(&conn->self_ip, NULL, + (struct sockaddr *)(void *)&sa_storage)) { + return ARES_ECONNREFUSED; + } + + return ARES_SUCCESS; +} + +ares_ssize_t ares__conn_write(ares_conn_t *conn, const void *data, size_t len) +{ + ares_channel_t *channel = conn->server->channel; + int flags = 0; + +#ifdef HAVE_MSG_NOSIGNAL + flags |= MSG_NOSIGNAL; +#endif + + if (channel->sock_funcs && channel->sock_funcs->asendv) { + struct iovec vec; + vec.iov_base = (void *)((size_t)data); /* Cast off const */ + vec.iov_len = len; + return channel->sock_funcs->asendv(conn->fd, &vec, 1, + channel->sock_func_cb_data); + } + + if (conn->flags & ARES_CONN_FLAG_TFO_INITIAL) { + conn->flags &= ~((unsigned int)ARES_CONN_FLAG_TFO_INITIAL); + +#if defined(TFO_USE_SENDTO) && TFO_USE_SENDTO + { + struct sockaddr_storage sa_storage; + ares_socklen_t salen = sizeof(sa_storage); + struct sockaddr *sa = (struct sockaddr *)&sa_storage; + ares_status_t status; + ares_ssize_t rv; + + status = ares__conn_set_sockaddr(conn, sa, &salen); + if (status != ARES_SUCCESS) { + return status; + } + + rv = (ares_ssize_t)sendto((SEND_TYPE_ARG1)conn->fd, (SEND_TYPE_ARG2)data, + (SEND_TYPE_ARG3)len, (SEND_TYPE_ARG4)flags, sa, + salen); + + /* If using TFO, we might not have been able to get an IP earlier, since + * we hadn't informed the OS of the destination. When using sendto() + * now we have so we should be able to fetch it */ + ares_conn_set_self_ip(conn, ARES_TRUE); + return rv; + } +#endif + } + + return (ares_ssize_t)send((SEND_TYPE_ARG1)conn->fd, (SEND_TYPE_ARG2)data, + (SEND_TYPE_ARG3)len, (SEND_TYPE_ARG4)flags); +} + +/* + * setsocknonblock sets the given socket to either blocking or non-blocking + * mode based on the 'nonblock' boolean argument. This function is highly + * portable. + */ +static int setsocknonblock(ares_socket_t sockfd, /* operate on this */ + int nonblock /* TRUE or FALSE */) +{ +#if defined(USE_BLOCKING_SOCKETS) + + return 0; /* returns success */ + +#elif defined(HAVE_FCNTL_O_NONBLOCK) + + /* most recent unix versions */ + int flags; + flags = fcntl(sockfd, F_GETFL, 0); + if (nonblock) { + return fcntl(sockfd, F_SETFL, flags | O_NONBLOCK); + } else { + return fcntl(sockfd, F_SETFL, flags & (~O_NONBLOCK)); /* LCOV_EXCL_LINE */ + } + +#elif defined(HAVE_IOCTL_FIONBIO) + + /* older unix versions */ + int flags = nonblock ? 1 : 0; + return ioctl(sockfd, FIONBIO, &flags); + +#elif defined(HAVE_IOCTLSOCKET_FIONBIO) + +# ifdef WATT32 + char flags = nonblock ? 1 : 0; +# else + /* Windows */ + unsigned long flags = nonblock ? 1UL : 0UL; +# endif + return ioctlsocket(sockfd, (long)FIONBIO, &flags); + +#elif defined(HAVE_IOCTLSOCKET_CAMEL_FIONBIO) + + /* Amiga */ + long flags = nonblock ? 1L : 0L; + return IoctlSocket(sockfd, FIONBIO, flags); + +#elif defined(HAVE_SETSOCKOPT_SO_NONBLOCK) + + /* BeOS */ + long b = nonblock ? 1L : 0L; + return setsockopt(sockfd, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b)); + +#else +# error "no non-blocking method was found/used/set" +#endif +} + +#if defined(IPV6_V6ONLY) && defined(USE_WINSOCK) +/* It makes support for IPv4-mapped IPv6 addresses. + * Linux kernel, NetBSD, FreeBSD and Darwin: default is off; + * Windows Vista and later: default is on; + * DragonFly BSD: acts like off, and dummy setting; + * OpenBSD and earlier Windows: unsupported. + * Linux: controlled by /proc/sys/net/ipv6/bindv6only. + */ +static void set_ipv6_v6only(ares_socket_t sockfd, int on) +{ + (void)setsockopt(sockfd, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&on, sizeof(on)); +} +#else +# define set_ipv6_v6only(s, v) +#endif + +static ares_status_t configure_socket(ares_conn_t *conn) +{ + union { + struct sockaddr sa; + struct sockaddr_in sa4; + struct sockaddr_in6 sa6; + } local; + + ares_socklen_t bindlen = 0; + ares_server_t *server = conn->server; + ares_channel_t *channel = server->channel; + + /* do not set options for user-managed sockets */ + if (channel->sock_funcs && channel->sock_funcs->asocket) { + return ARES_SUCCESS; + } + + (void)setsocknonblock(conn->fd, 1); + +#if defined(FD_CLOEXEC) && !defined(MSDOS) + /* Configure the socket fd as close-on-exec. */ + if (fcntl(conn->fd, F_SETFD, FD_CLOEXEC) != 0) { + return ARES_ECONNREFUSED; /* LCOV_EXCL_LINE */ + } +#endif + + /* No need to emit SIGPIPE on socket errors */ +#if defined(SO_NOSIGPIPE) + { + int opt = 1; + (void)setsockopt(conn->fd, SOL_SOCKET, SO_NOSIGPIPE, (void *)&opt, + sizeof(opt)); + } +#endif + + /* Set the socket's send and receive buffer sizes. */ + if (channel->socket_send_buffer_size > 0 && + setsockopt(conn->fd, SOL_SOCKET, SO_SNDBUF, + (void *)&channel->socket_send_buffer_size, + sizeof(channel->socket_send_buffer_size)) != 0) { + return ARES_ECONNREFUSED; /* LCOV_EXCL_LINE: UntestablePath */ + } + + if (channel->socket_receive_buffer_size > 0 && + setsockopt(conn->fd, SOL_SOCKET, SO_RCVBUF, + (void *)&channel->socket_receive_buffer_size, + sizeof(channel->socket_receive_buffer_size)) != 0) { + return ARES_ECONNREFUSED; /* LCOV_EXCL_LINE: UntestablePath */ + } + +#ifdef SO_BINDTODEVICE + if (ares_strlen(channel->local_dev_name)) { + /* Only root can do this, and usually not fatal if it doesn't work, so + * just continue on. */ + (void)setsockopt(conn->fd, SOL_SOCKET, SO_BINDTODEVICE, + channel->local_dev_name, sizeof(channel->local_dev_name)); + } +#endif + + if (server->addr.family == AF_INET && channel->local_ip4) { + memset(&local.sa4, 0, sizeof(local.sa4)); + local.sa4.sin_family = AF_INET; + local.sa4.sin_addr.s_addr = htonl(channel->local_ip4); + bindlen = sizeof(local.sa4); + } else if (server->addr.family == AF_INET6 && server->ll_scope == 0 && + memcmp(channel->local_ip6, ares_in6addr_any._S6_un._S6_u8, + sizeof(channel->local_ip6)) != 0) { + /* Only if not link-local and an ip other than "::" is specified */ + memset(&local.sa6, 0, sizeof(local.sa6)); + local.sa6.sin6_family = AF_INET6; + memcpy(&local.sa6.sin6_addr, channel->local_ip6, + sizeof(channel->local_ip6)); + bindlen = sizeof(local.sa6); + } + + if (bindlen && bind(conn->fd, &local.sa, bindlen) < 0) { + return ARES_ECONNREFUSED; + } + + if (server->addr.family == AF_INET6) { + set_ipv6_v6only(conn->fd, 0); + } + + if (conn->flags & ARES_CONN_FLAG_TCP) { + int opt = 1; + +#ifdef TCP_NODELAY + /* + * Disable the Nagle algorithm (only relevant for TCP sockets, and thus not + * in configure_socket). In general, in DNS lookups we're pretty much + * interested in firing off a single request and then waiting for a reply, + * so batching isn't very interesting. + */ + if (setsockopt(conn->fd, IPPROTO_TCP, TCP_NODELAY, (void *)&opt, + sizeof(opt)) != 0) { + return ARES_ECONNREFUSED; + } +#endif + +#if defined(TFO_CLIENT_SOCKOPT) + if (conn->flags & ARES_CONN_FLAG_TFO && + setsockopt(conn->fd, IPPROTO_TCP, TFO_CLIENT_SOCKOPT, (void *)&opt, + sizeof(opt)) != 0) { + /* Disable TFO if flag can't be set. */ + conn->flags &= ~((unsigned int)ARES_CONN_FLAG_TFO); + } +#endif + } + + return ARES_SUCCESS; +} + +ares_bool_t ares_sockaddr_to_ares_addr(struct ares_addr *ares_addr, + unsigned short *port, + const struct sockaddr *sockaddr) +{ + if (sockaddr->sa_family == AF_INET) { + /* NOTE: memcpy sockaddr_in due to alignment issues found by UBSAN due to + * dnsinfo packing on MacOS */ + struct sockaddr_in sockaddr_in; + memcpy(&sockaddr_in, sockaddr, sizeof(sockaddr_in)); + + ares_addr->family = AF_INET; + memcpy(&ares_addr->addr.addr4, &(sockaddr_in.sin_addr), + sizeof(ares_addr->addr.addr4)); + + if (port) { + *port = ntohs(sockaddr_in.sin_port); + } + return ARES_TRUE; + } + + if (sockaddr->sa_family == AF_INET6) { + /* NOTE: memcpy sockaddr_in6 due to alignment issues found by UBSAN due to + * dnsinfo packing on MacOS */ + struct sockaddr_in6 sockaddr_in6; + memcpy(&sockaddr_in6, sockaddr, sizeof(sockaddr_in6)); + + ares_addr->family = AF_INET6; + memcpy(&ares_addr->addr.addr6, &(sockaddr_in6.sin6_addr), + sizeof(ares_addr->addr.addr6)); + if (port) { + *port = ntohs(sockaddr_in6.sin6_port); + } + return ARES_TRUE; + } + + return ARES_FALSE; +} + +static ares_status_t ares__conn_connect(ares_conn_t *conn, struct sockaddr *sa, + ares_socklen_t salen) +{ + /* Normal non TCPFastOpen style connect */ + if (!(conn->flags & ARES_CONN_FLAG_TFO)) { + return ares__connect_socket(conn->server->channel, conn->fd, sa, salen); + } + + /* FreeBSD don't want any sort of connect() so skip */ +#if defined(TFO_SKIP_CONNECT) && TFO_SKIP_CONNECT + return ARES_SUCCESS; +#elif defined(TFO_USE_CONNECTX) && TFO_USE_CONNECTX + { + int rv; + int err; + + do { + sa_endpoints_t endpoints; + memset(&endpoints, 0, sizeof(endpoints)); + endpoints.sae_dstaddr = sa; + endpoints.sae_dstaddrlen = salen; + + rv = connectx(conn->fd, &endpoints, SAE_ASSOCID_ANY, + CONNECT_DATA_IDEMPOTENT | CONNECT_RESUME_ON_READ_WRITE, + NULL, 0, NULL, NULL); + + err = SOCKERRNO; + if (rv == -1 && err != EINPROGRESS && err != EWOULDBLOCK) { + return ARES_ECONNREFUSED; + } + + } while (rv == -1 && err == EINTR); + } + return ARES_SUCCESS; +#elif defined(TFO_SUPPORTED) && TFO_SUPPORTED + return ares__connect_socket(conn->server->channel, conn->fd, sa, salen); +#else + /* Shouldn't be possible */ + return ARES_ECONNREFUSED; +#endif +} + +ares_status_t ares__open_connection(ares_conn_t **conn_out, + ares_channel_t *channel, + ares_server_t *server, ares_bool_t is_tcp) +{ + ares_status_t status; + struct sockaddr_storage sa_storage; + ares_socklen_t salen = sizeof(sa_storage); + struct sockaddr *sa = (struct sockaddr *)&sa_storage; + ares_conn_t *conn; + ares__llist_node_t *node = NULL; + int stype = is_tcp ? SOCK_STREAM : SOCK_DGRAM; + + *conn_out = NULL; + + conn = ares_malloc(sizeof(*conn)); + if (conn == NULL) { + return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ + } + + memset(conn, 0, sizeof(*conn)); + conn->fd = ARES_SOCKET_BAD; + conn->server = server; + conn->queries_to_conn = ares__llist_create(NULL); + conn->flags = is_tcp ? ARES_CONN_FLAG_TCP : ARES_CONN_FLAG_NONE; + + /* Enable TFO if the OS supports it and we were passed in data to send during + * the connect. It might be disabled later if an error is encountered. Make + * sure a user isn't overriding anything. */ + if (conn->flags & ARES_CONN_FLAG_TCP && channel->sock_funcs == NULL && + TFO_SUPPORTED) { + conn->flags |= ARES_CONN_FLAG_TFO; + } + + if (conn->queries_to_conn == NULL) { + /* LCOV_EXCL_START: OutOfMemory */ + status = ARES_ENOMEM; + goto done; + /* LCOV_EXCL_STOP */ + } + + /* Convert into the struct sockaddr structure needed by the OS */ + status = ares__conn_set_sockaddr(conn, sa, &salen); + if (status != ARES_SUCCESS) { + goto done; + } + + /* Acquire a socket. */ + conn->fd = ares__open_socket(channel, server->addr.family, stype, 0); + if (conn->fd == ARES_SOCKET_BAD) { + status = ARES_ECONNREFUSED; + goto done; + } + + /* Configure it. */ + status = configure_socket(conn); + if (status != ARES_SUCCESS) { + goto done; + } + + if (channel->sock_config_cb) { + int err = + channel->sock_config_cb(conn->fd, stype, channel->sock_config_cb_data); + if (err < 0) { + status = ARES_ECONNREFUSED; + goto done; + } + } + + /* Connect */ + status = ares__conn_connect(conn, sa, salen); + if (status != ARES_SUCCESS) { + goto done; + } + + if (channel->sock_create_cb) { + int err = + channel->sock_create_cb(conn->fd, stype, channel->sock_create_cb_data); + if (err < 0) { + status = ARES_ECONNREFUSED; + goto done; + } + } + + /* Let the connection know we haven't written our first packet yet for TFO */ + if (conn->flags & ARES_CONN_FLAG_TFO) { + conn->flags |= ARES_CONN_FLAG_TFO_INITIAL; + } + + /* Need to store our own ip for DNS cookie support */ + status = ares_conn_set_self_ip(conn, ARES_FALSE); + if (status != ARES_SUCCESS) { + goto done; /* LCOV_EXCL_LINE: UntestablePath */ + } + + /* TCP connections are thrown to the end as we don't spawn multiple TCP + * connections. UDP connections are put on front where the newest connection + * can be quickly pulled */ + if (is_tcp) { + node = ares__llist_insert_last(server->connections, conn); + } else { + node = ares__llist_insert_first(server->connections, conn); + } + if (node == NULL) { + /* LCOV_EXCL_START: OutOfMemory */ + status = ARES_ENOMEM; + goto done; + /* LCOV_EXCL_STOP */ + } + + /* Register globally to quickly map event on file descriptor to connection + * node object */ + if (!ares__htable_asvp_insert(channel->connnode_by_socket, conn->fd, node)) { + /* LCOV_EXCL_START: OutOfMemory */ + status = ARES_ENOMEM; + goto done; + /* LCOV_EXCL_STOP */ + } + + SOCK_STATE_CALLBACK(channel, conn->fd, 1, is_tcp ? 1 : 0); + + if (is_tcp) { + server->tcp_conn = conn; + } + +done: + if (status != ARES_SUCCESS) { + ares__llist_node_claim(node); + ares__llist_destroy(conn->queries_to_conn); + ares__close_socket(channel, conn->fd); + ares_free(conn); + } else { + *conn_out = conn; + } + return status; +} + +ares_socket_t ares__open_socket(ares_channel_t *channel, int af, int type, + int protocol) +{ + if (channel->sock_funcs && channel->sock_funcs->asocket) { + return channel->sock_funcs->asocket(af, type, protocol, + channel->sock_func_cb_data); + } + + return socket(af, type, protocol); +} + +ares_status_t ares__connect_socket(ares_channel_t *channel, + ares_socket_t sockfd, + const struct sockaddr *addr, + ares_socklen_t addrlen) +{ + int rv; + int err; + + do { + if (channel->sock_funcs && channel->sock_funcs->aconnect) { + rv = channel->sock_funcs->aconnect(sockfd, addr, addrlen, + channel->sock_func_cb_data); + } else { + rv = connect(sockfd, addr, addrlen); + } + + err = SOCKERRNO; + + if (rv == -1 && err != EINPROGRESS && err != EWOULDBLOCK) { + return ARES_ECONNREFUSED; + } + + } while (rv == -1 && err == EINTR); + + return ARES_SUCCESS; +} + +void ares__close_socket(ares_channel_t *channel, ares_socket_t s) +{ + if (s == ARES_SOCKET_BAD) { + return; + } + + if (channel->sock_funcs && channel->sock_funcs->aclose) { + channel->sock_funcs->aclose(s, channel->sock_func_cb_data); + } else { + sclose(s); + } +} + +void ares_set_socket_callback(ares_channel_t *channel, + ares_sock_create_callback cb, void *data) +{ + if (channel == NULL) { + return; + } + channel->sock_create_cb = cb; + channel->sock_create_cb_data = data; +} + +void ares_set_socket_configure_callback(ares_channel_t *channel, + ares_sock_config_callback cb, + void *data) +{ + if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) { + return; + } + channel->sock_config_cb = cb; + channel->sock_config_cb_data = data; +} + +void ares_set_socket_functions(ares_channel_t *channel, + const struct ares_socket_functions *funcs, + void *data) +{ + if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) { + return; + } + channel->sock_funcs = funcs; + channel->sock_func_cb_data = data; +} diff --git a/lib/c-ares-1.32.3/src/lib/ares__sortaddrinfo.c b/lib/c-ares-1.33.0/src/lib/ares__sortaddrinfo.c similarity index 98% rename from lib/c-ares-1.32.3/src/lib/ares__sortaddrinfo.c rename to lib/c-ares-1.33.0/src/lib/ares__sortaddrinfo.c index e9bca4e386d..1aab81ecf84 100644 --- a/lib/c-ares-1.32.3/src/lib/ares__sortaddrinfo.c +++ b/lib/c-ares-1.33.0/src/lib/ares__sortaddrinfo.c @@ -51,7 +51,6 @@ #include #include - struct addrinfo_sort_elem { struct ares_addrinfo_node *ai; ares_bool_t has_src_addr; @@ -347,7 +346,6 @@ static int find_src_addr(ares_channel_t *channel, const struct sockaddr *addr, struct sockaddr *src_addr) { ares_socket_t sock; - int ret; ares_socklen_t len; switch (addr->sa_family) { @@ -364,18 +362,14 @@ static int find_src_addr(ares_channel_t *channel, const struct sockaddr *addr, sock = ares__open_socket(channel, addr->sa_family, SOCK_DGRAM, IPPROTO_UDP); if (sock == ARES_SOCKET_BAD) { - if (errno == EAFNOSUPPORT) { + if (SOCKERRNO == EAFNOSUPPORT) { return 0; } else { return -1; } } - do { - ret = ares__connect_socket(channel, sock, addr, len); - } while (ret == -1 && errno == EINTR); - - if (ret == -1) { + if (ares__connect_socket(channel, sock, addr, len) != ARES_SUCCESS) { ares__close_socket(channel, sock); return 0; } diff --git a/lib/c-ares-1.32.3/src/lib/ares_android.c b/lib/c-ares-1.33.0/src/lib/ares_android.c similarity index 96% rename from lib/c-ares-1.32.3/src/lib/ares_android.c rename to lib/c-ares-1.33.0/src/lib/ares_android.c index 67a9482d72e..4c0ffa04f7c 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_android.c +++ b/lib/c-ares-1.33.0/src/lib/ares_android.c @@ -26,6 +26,7 @@ #if defined(ANDROID) || defined(__ANDROID__) # include "ares_private.h" # include +# include static JavaVM *android_jvm = NULL; static jobject android_connectivity_manager = NULL; @@ -80,6 +81,23 @@ static jmethodID jni_get_method_id(JNIEnv *env, jclass cls, return mid; } +static int jvm_attach(JNIEnv **env) +{ + char name[17] = {0}; + + JavaVMAttachArgs args; + + args.version = JNI_VERSION_1_6; + if (prctl(PR_GET_NAME, name) == 0) { + args.name = name; + } else { + args.name = NULL; + } + args.group = NULL; + + return (*android_jvm)->AttachCurrentThread(android_jvm, env, &args); +} + void ares_library_init_jvm(JavaVM *jvm) { android_jvm = jvm; @@ -100,7 +118,7 @@ int ares_library_init_android(jobject connectivity_manager) res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6); if (res == JNI_EDETACHED) { env = NULL; - res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); + res = jvm_attach(&env); need_detatch = 1; } if (res != JNI_OK || env == NULL) { @@ -233,7 +251,7 @@ void ares_library_cleanup_android(void) res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6); if (res == JNI_EDETACHED) { env = NULL; - res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); + res = jvm_attach(&env); need_detatch = 1; } if (res != JNI_OK || env == NULL) { @@ -285,7 +303,7 @@ char **ares_get_android_server_list(size_t max_servers, size_t *num_servers) res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6); if (res == JNI_EDETACHED) { env = NULL; - res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); + res = jvm_attach(&env); need_detatch = 1; } if (res != JNI_OK || env == NULL) { @@ -403,7 +421,7 @@ char *ares_get_android_search_domains_list(void) res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6); if (res == JNI_EDETACHED) { env = NULL; - res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); + res = jvm_attach(&env); need_detatch = 1; } if (res != JNI_OK || env == NULL) { diff --git a/lib/c-ares-1.32.3/src/lib/ares_android.h b/lib/c-ares-1.33.0/src/lib/ares_android.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_android.h rename to lib/c-ares-1.33.0/src/lib/ares_android.h diff --git a/lib/c-ares-1.32.3/src/lib/ares_cancel.c b/lib/c-ares-1.33.0/src/lib/ares_cancel.c similarity index 98% rename from lib/c-ares-1.32.3/src/lib/ares_cancel.c rename to lib/c-ares-1.33.0/src/lib/ares_cancel.c index 4312b5e188e..c29d8ef82f4 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_cancel.c +++ b/lib/c-ares-1.33.0/src/lib/ares_cancel.c @@ -59,7 +59,7 @@ void ares_cancel(ares_channel_t *channel) node = ares__llist_node_first(list_copy); while (node != NULL) { - struct query *query; + ares_query_t *query; /* Cache next since this node is being deleted */ next = ares__llist_node_next(node); diff --git a/lib/c-ares-1.32.3/src/lib/ares_config.h.cmake b/lib/c-ares-1.33.0/src/lib/ares_config.h.cmake similarity index 97% rename from lib/c-ares-1.32.3/src/lib/ares_config.h.cmake rename to lib/c-ares-1.33.0/src/lib/ares_config.h.cmake index cafdadd9bbc..da738671971 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_config.h.cmake +++ b/lib/c-ares-1.33.0/src/lib/ares_config.h.cmake @@ -67,6 +67,9 @@ /* Define to 1 if you have the connect function. */ #cmakedefine HAVE_CONNECT 1 +/* Define to 1 if you have the connectx function. */ +#cmakedefine HAVE_CONNECTX 1 + /* define if the compiler supports basic C++11 syntax */ #cmakedefine HAVE_CXX11 1 @@ -145,6 +148,12 @@ /* Define to 1 if you have the `ConvertInterfaceLuidToNameA' function. */ #cmakedefine HAVE_CONVERTINTERFACELUIDTONAMEA 1 +/* Define to 1 if you have the `NotifyIpInterfaceChange' function. */ +#cmakedefine HAVE_NOTIFYIPINTERFACECHANGE 1 + +/* Define to 1 if you have the `RegisterWaitForSingleObject' function. */ +#cmakedefine HAVE_REGISTERWAITFORSINGLEOBJECT 1 + /* Define to 1 if you have a IPv6 capable working inet_net_pton function. */ #cmakedefine HAVE_INET_NET_PTON 1 diff --git a/lib/c-ares-1.32.3/src/lib/ares_config.h.in b/lib/c-ares-1.33.0/src/lib/ares_config.h.in similarity index 98% rename from lib/c-ares-1.32.3/src/lib/ares_config.h.in rename to lib/c-ares-1.33.0/src/lib/ares_config.h.in index 0a4aa069580..3e75b4c2cd0 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_config.h.in +++ b/lib/c-ares-1.33.0/src/lib/ares_config.h.in @@ -75,6 +75,9 @@ /* Define to 1 if you have `connect` */ #undef HAVE_CONNECT +/* Define to 1 if you have `connectx` */ +#undef HAVE_CONNECTX + /* Define to 1 if you have `ConvertInterfaceIndexToLuid` */ #undef HAVE_CONVERTINTERFACEINDEXTOLUID @@ -201,6 +204,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_NET_IF_H +/* Define to 1 if you have `NotifyIpInterfaceChange` */ +#undef HAVE_NOTIFYIPINTERFACECHANGE + /* Define to 1 if you have the header file. */ #undef HAVE_NTDEF_H @@ -237,6 +243,9 @@ /* Define to 1 if you have `recvfrom` */ #undef HAVE_RECVFROM +/* Define to 1 if you have `RegisterWaitForSingleObject` */ +#undef HAVE_REGISTERWAITFORSINGLEOBJECT + /* Define to 1 if you have `send` */ #undef HAVE_SEND diff --git a/lib/c-ares-1.33.0/src/lib/ares_cookie.c b/lib/c-ares-1.33.0/src/lib/ares_cookie.c new file mode 100644 index 00000000000..0680fe9ec7b --- /dev/null +++ b/lib/c-ares-1.33.0/src/lib/ares_cookie.c @@ -0,0 +1,459 @@ +/* MIT License + * + * Copyright (c) 2024 Brad House + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * SPDX-License-Identifier: MIT + */ + +/* DNS cookies are a simple form of learned mutual authentication supported by + * most DNS server implementations these days and can help prevent DNS Cache + * Poisoning attacks for clients and DNS amplification attacks for servers. + * + * A good overview is here: + * https://www.dotmagazine.online/issues/digital-responsibility-and-sustainability/dns-cookies-transaction-mechanism + * + * RFCs used for implementation are + * [RFC7873](https://datatracker.ietf.org/doc/html/rfc7873) which is extended by + * [RFC9018](https://datatracker.ietf.org/doc/html/rfc9018). + * + * Though this could be used on TCP, the likelihood of it being useful is small + * and could cause some issues. TCP is better used as a fallback in case there + * are issues with DNS Cookie support in the upstream servers (e.g. AnyCast + * cluster issues). + * + * While most recursive DNS servers support DNS Cookies, public DNS servers like + * Google (8.8.8.8, 8.8.4.4) and CloudFlare (1.1.1.1, 1.0.0.1) don't seem to + * have this enabled yet for unknown reasons. + * + * The risk to having DNS Cookie support always enabled is nearly zero as there + * is built-in detection support and it will simply bypass using cookies if the + * remote server doesn't support it. The problem arises if a remote server + * supports DNS cookies, then stops supporting them (such as if an administrator + * reconfigured the server, or maybe there are different servers in a cluster + * with different configurations). We need to detect this behavior by tracking + * how much time has gone by since we received our last valid cookie reply, and + * if we exceed the threshold, reset all cookie parameters like we haven't + * attempted a request yet. + * + * ## Implementation Plan + * + * ### Constants: + * - `COOKIE_CLIENT_TIMEOUT`: 86400s (1 day) + * - How often to regenerate the per-server client cookie, even if our + * source ip address hasn't changed. + * - `COOKIE_UNSUPPORTED_TIMEOUT`: 300s (5 minutes) + * - If a server responds without a cookie in the reply, this is how long to + * wait before attempting to send a client cookie again. + * - `COOKIE_REGRESSION_TIMEOUT`: 120s (2 minutes) + * - If a server was once known to return cookies, and all of a sudden stops + * returning cookies (but the reply is otherwise valid), this is how long + * to continue to attempt to use cookies before giving up and resetting. + * Such an event would cause an outage for this duration, but since a + * cache poisoning attack should be dropping invalid replies we should be + * able to still get the valid reply and not assume it is a server + * regression just because we received replies without cookies. + * - `COOKIE_RESEND_MAX`: 3 + * - Maximum times to resend a query to a server due to the server responding + * with `BAD_COOKIE`, after this, we switch to TCP. + * + * ### Per-server variables: + * - `cookie.state`: Known state of cookie support, enumeration. + * - `INITIAL` (0): Initial state, not yet determined. Used during startup. + * - `GENERATED` (1): Cookie has been generated and sent to a server, but no + * validated response yet. + * - `SUPPORTED` (2): Server has been determined to properly support cookies + * - `UNSUPPORTED` (3): Server has been determined to not support cookies + * - `cookie.client` : 8 byte randomly generated client cookie + * - `cookie.client_ts`: Timestamp client cookie was generated + * - `cookie.client_ip`: IP address client used to connect to server + * - `cookie.server`: 8 to 32 byte server cookie + * - `cookie.server_len`: length of server cookie + * - `cookie.unsupported_ts`: Timestamp of last attempt to use a cookies, but + * it was determined that the server didn't support them. + * + * ### Per-query variables: + * - `query.client_cookie`: Duplicate of `cookie.client` at the point in time + * the query is put on the wire. This should be available in the + * `ares_dns_record_t` for the request for verification purposes so we don't + * actually need to duplicate this, just naming it here for the ease of + * documentation below. + * - `query.cookie_try_count`: Number of tries to send a cookie but receive + * `BAD_COOKIE` responses. Used to know when we need to switch to TCP. + * + * ### Procedure: + * **NOTE**: These steps will all be done after obtaining a connection handle as + * some of these steps depend on determining the source ip address for the + * connection. + * + * 1. If the query is not using EDNS, then **skip any remaining processing**. + * 2. If using TCP, ensure there is no EDNS cookie opt (10) set (there may have + * been if this is a resend after upgrade to TCP), then **skip any remaining + * processing**. + * 3. If `cookie.state == SUPPORTED`, `cookie.unsupported_ts` is non-zero, and + * evaluates greater than `COOKIE_REGRESSION_TIMEOUT`, then clear all cookie + * settings, set `cookie.state = INITIAL`. Continue to next step (4) + * 4. If `cookie.state == UNSUPPORTED` + * - If `cookie.unsupported_ts` evaluates less than + * `COOKIE_UNSUPPORTED_TIMEOUT` + * - Ensure there is no EDNS cookie opt (10) set (shouldn't be unless + * requestor had put this themselves), then **skip any remaining + * processing** as we don't want to try to send cookies. + * - Otherwise: + * - clear all cookie settings, set `cookie.state = INITIAL`. + * - Continue to next step (5) which will send a new cookie. + * 5. If `cookie.state == INITIAL`: + * - randomly generate new `cookie.client` + * - set `cookie.client_ts` to the current timestamp. + * - set `cookie.state = GENERATED`. + * - set `cookie.client_ip` to the current source ip address. + * 6. If `cookie.state == GENERATED || cookie.state == SUPPORTED` and + * `cookie.client_ip` does not match the current source ip address: + * - clear `cookie.server` + * - randomly generate new `cookie.client` + * - set `cookie.client_ts` to the current timestamp. + * - set `cookie.client_ip` to the current source ip address. + * - do not change the `cookie.state` + * 7. If `cookie.state == SUPPORTED` and `cookie.client_ts` evaluation exceeds + * `COOKIE_CLIENT_TIMEOUT`: + * - clear `cookie.server` + * - randomly generate new `cookie.client` + * - set `cookie.client_ts` to the current timestamp. + * - set `cookie.client_ip` to the current source ip address. + * - do not change the `cookie.state` + * 8. Generate EDNS OPT record (10) for client cookie. The option value will be + * the `cookie.client` concatenated with the `cookie.server`. If there is no + * known server cookie, it will not be appended. Copy `cookie.client` to + * `query.client_cookie` to handle possible client cookie changes by other + * queries before a reply is received (technically this is in the cached + * `ares_dns_record_t` so no need to manually do this). Send request to + * server. + * 9. Evaluate response: + * 1. If invalid EDNS OPT cookie (10) length sent back in response (valid + * length is 16-40), or bad client cookie value (validate first 8 bytes + * against `query.client_cookie` not `cookie.client`), **drop response** + * as if it hadn't been received. This is likely a spoofing attack. + * Wait for valid response up to normal response timeout. + * 2. If a EDNS OPT cookie (10) server cookie is returned: + * - set `cookie.unsupported_ts` to zero and `cookie.state = SUPPORTED`. + * We can confirm this server supports cookies based on the existence + * of this record. + * - If a new EDNS OPT cookie (10) server cookie is in the response, and + * the `client.cookie` matches the `query.client_cookie` still (hasn't + * been rotated by some other parallel query), save it as + * `cookie.server`. + * 3. If dns response `rcode` is `BAD_COOKIE`: + * - Ensure a EDNS OPT cookie (10) is returned, otherwise **drop + * response**, this is completely invalid and likely an spoof of some + * sort. + * - Otherwise + * - Increment `query.cookie_try_count` + * - If `query.cookie_try_count >= COOKIE_RESEND_MAX`, set + * `query.using_tcp` to force the next attempt to use TCP. + * - **Requeue the query**, but do not increment the normal + * `try_count` as a `BAD_COOKIE` reply isn't a normal try failure. + * This should end up going all the way back to step 1 on the next + * attempt. + * 4. If EDNS OPT cookie (10) is **NOT** returned in the response: + * - If `cookie.state == SUPPORTED` + * - if `cookie.unsupported_ts` is zero, set to the current timestamp. + * - Drop the response, wait for a valid response to be returned + * - if `cookie.state == GENERATED` + * - clear all cookie settings + * - set `cookie.state = UNSUPPORTED` + * - set `cookie.unsupported_ts` to the current time + * - Accept response (state should be `UNSUPPORTED` if we're here) + */ + +#include "ares_private.h" + +/* 1 day */ +#define COOKIE_CLIENT_TIMEOUT_MS (86400 * 1000) + +/* 5 minutes */ +#define COOKIE_UNSUPPORTED_TIMEOUT_MS (300 * 1000) + +/* 2 minutes */ +#define COOKIE_REGRESSION_TIMEOUT_MS (120 * 1000) + +#define COOKIE_RESEND_MAX 3 + +static const unsigned char * + ares_dns_cookie_fetch(const ares_dns_record_t *dnsrec, size_t *len) +{ + const ares_dns_rr_t *rr = ares_dns_get_opt_rr_const(dnsrec); + const unsigned char *val = NULL; + *len = 0; + + if (rr == NULL) { + return NULL; + } + + if (!ares_dns_rr_get_opt_byid(rr, ARES_RR_OPT_OPTIONS, ARES_OPT_PARAM_COOKIE, + &val, len)) { + return NULL; + } + + return val; +} + +static ares_bool_t timeval_is_set(const ares_timeval_t *tv) +{ + if (tv->sec != 0 && tv->usec != 0) { + return ARES_TRUE; + } + return ARES_FALSE; +} + +static ares_bool_t timeval_expired(const ares_timeval_t *tv, + const ares_timeval_t *now, + unsigned long millsecs) +{ + ares_int64_t tvdiff_ms; + ares_timeval_t tvdiff; + ares__timeval_diff(&tvdiff, tv, now); + + tvdiff_ms = tvdiff.sec * 1000 + tvdiff.usec / 1000; + if (tvdiff_ms >= (ares_int64_t)millsecs) { + return ARES_TRUE; + } + return ARES_FALSE; +} + +static void ares_cookie_clear(ares_cookie_t *cookie) +{ + memset(cookie, 0, sizeof(*cookie)); + cookie->state = ARES_COOKIE_INITIAL; +} + +static void ares_cookie_generate(ares_cookie_t *cookie, ares_conn_t *conn, + const ares_timeval_t *now) +{ + ares_channel_t *channel = conn->server->channel; + + ares__rand_bytes(channel->rand_state, cookie->client, sizeof(cookie->client)); + memcpy(&cookie->client_ts, now, sizeof(cookie->client_ts)); + memcpy(&cookie->client_ip, &conn->self_ip, sizeof(cookie->client_ip)); +} + +static void ares_cookie_clear_server(ares_cookie_t *cookie) +{ + memset(cookie->server, 0, sizeof(cookie->server)); + cookie->server_len = 0; +} + +static ares_bool_t ares_addr_equal(const struct ares_addr *addr1, + const struct ares_addr *addr2) +{ + if (addr1->family != addr2->family) { + return ARES_FALSE; + } + + switch (addr1->family) { + case AF_INET: + if (memcmp(&addr1->addr.addr4, &addr2->addr.addr4, + sizeof(addr1->addr.addr4)) == 0) { + return ARES_TRUE; + } + break; + case AF_INET6: + /* This structure is weird, and due to padding SonarCloud complains if + * you don't punch all the way down. At some point we should rework + * this structure */ + if (memcmp(&addr1->addr.addr6._S6_un._S6_u8, + &addr2->addr.addr6._S6_un._S6_u8, + sizeof(addr1->addr.addr6._S6_un._S6_u8)) == 0) { + return ARES_TRUE; + } + break; + default: + break; /* LCOV_EXCL_LINE */ + } + + return ARES_FALSE; +} + +ares_status_t ares_cookie_apply(ares_dns_record_t *dnsrec, ares_conn_t *conn, + const ares_timeval_t *now) +{ + ares_server_t *server = conn->server; + ares_cookie_t *cookie = &server->cookie; + ares_dns_rr_t *rr = ares_dns_get_opt_rr(dnsrec); + unsigned char c[40]; + size_t c_len; + + /* If there is no OPT record, then EDNS isn't supported, and therefore + * cookies can't be supported */ + if (rr == NULL) { + return ARES_SUCCESS; + } + + /* No cookies on TCP, make sure we remove one if one is present */ + if (conn->flags & ARES_CONN_FLAG_TCP) { + ares_dns_rr_del_opt_byid(rr, ARES_RR_OPT_OPTIONS, ARES_OPT_PARAM_COOKIE); + return ARES_SUCCESS; + } + + /* Look for regression */ + if (cookie->state == ARES_COOKIE_SUPPORTED && + timeval_is_set(&cookie->unsupported_ts) && + timeval_expired(&cookie->unsupported_ts, now, + COOKIE_REGRESSION_TIMEOUT_MS)) { + ares_cookie_clear(cookie); + } + + /* Handle unsupported state */ + if (cookie->state == ARES_COOKIE_UNSUPPORTED) { + /* If timer hasn't expired, just delete any possible cookie and return */ + if (!timeval_expired(&cookie->unsupported_ts, now, + COOKIE_REGRESSION_TIMEOUT_MS)) { + ares_dns_rr_del_opt_byid(rr, ARES_RR_OPT_OPTIONS, ARES_OPT_PARAM_COOKIE); + return ARES_SUCCESS; + } + + /* We want to try to "learn" again */ + ares_cookie_clear(cookie); + } + + /* Generate a new cookie */ + if (cookie->state == ARES_COOKIE_INITIAL) { + ares_cookie_generate(cookie, conn, now); + cookie->state = ARES_COOKIE_GENERATED; + } + + /* Regenerate the cookie and clear the server cookie if the client ip has + * changed */ + if ((cookie->state == ARES_COOKIE_GENERATED || + cookie->state == ARES_COOKIE_SUPPORTED) && + !ares_addr_equal(&conn->self_ip, &cookie->client_ip)) { + ares_cookie_clear_server(cookie); + ares_cookie_generate(cookie, conn, now); + } + + /* If the client cookie has reached its maximum time, refresh it */ + if (cookie->state == ARES_COOKIE_SUPPORTED && + timeval_expired(&cookie->client_ts, now, COOKIE_CLIENT_TIMEOUT_MS)) { + ares_cookie_clear_server(cookie); + ares_cookie_generate(cookie, conn, now); + } + + /* Generate the full cookie which is the client cookie concatenated with the + * server cookie (if there is one) and apply it. */ + memcpy(c, cookie->client, sizeof(cookie->client)); + if (cookie->server_len) { + memcpy(c + sizeof(cookie->client), cookie->server, cookie->server_len); + } + c_len = sizeof(cookie->client) + cookie->server_len; + + return ares_dns_rr_set_opt(rr, ARES_RR_OPT_OPTIONS, ARES_OPT_PARAM_COOKIE, c, + c_len); +} + +ares_status_t ares_cookie_validate(ares_query_t *query, + const ares_dns_record_t *dnsresp, + ares_conn_t *conn, const ares_timeval_t *now) +{ + ares_server_t *server = conn->server; + ares_cookie_t *cookie = &server->cookie; + const ares_dns_record_t *dnsreq = query->query; + const unsigned char *resp_cookie; + size_t resp_cookie_len; + const unsigned char *req_cookie; + size_t req_cookie_len; + + resp_cookie = ares_dns_cookie_fetch(dnsresp, &resp_cookie_len); + + /* Invalid cookie length, drop */ + if (resp_cookie && (resp_cookie_len < 8 || resp_cookie_len > 40)) { + return ARES_EBADRESP; + } + + req_cookie = ares_dns_cookie_fetch(dnsreq, &req_cookie_len); + + /* Didn't request cookies, so we can stop evaluating */ + if (req_cookie == NULL) { + return ARES_SUCCESS; + } + + /* If 8-byte prefix for returned cookie doesn't match the requested cookie, + * drop for spoofing */ + if (resp_cookie && memcmp(req_cookie, resp_cookie, 8) != 0) { + return ARES_EBADRESP; + } + + if (resp_cookie && resp_cookie_len > 8) { + /* Make sure we record that we successfully received a cookie response */ + cookie->state = ARES_COOKIE_SUPPORTED; + memset(&cookie->unsupported_ts, 0, sizeof(cookie->unsupported_ts)); + + /* If client cookie hasn't been rotated, save the returned server cookie */ + if (memcmp(cookie->client, req_cookie, sizeof(cookie->client)) == 0) { + cookie->server_len = resp_cookie_len - 8; + memcpy(cookie->server, resp_cookie + 8, cookie->server_len); + } + } + + if (ares_dns_record_get_rcode(dnsresp) == ARES_RCODE_BADCOOKIE) { + /* Illegal to return BADCOOKIE but no cookie, drop */ + if (resp_cookie == NULL) { + return ARES_EBADRESP; + } + + /* If we have too many attempts to send a cookie, we need to requeue as + * tcp */ + query->cookie_try_count++; + if (query->cookie_try_count >= COOKIE_RESEND_MAX) { + query->using_tcp = ARES_TRUE; + } + + /* Resend the request, hopefully it will work the next time as we should + * have recorded a server cookie */ + ares__requeue_query(query, now, ARES_SUCCESS, + ARES_FALSE /* Don't increment try count */); + + /* Parent needs to drop this response */ + return ARES_EBADRESP; + } + + /* We've got a response with a server cookie, and we've done all the + * evaluation we can, return success */ + if (resp_cookie_len > 8) { + return ARES_SUCCESS; + } + + if (cookie->state == ARES_COOKIE_SUPPORTED) { + /* If we're not currently tracking an error time yet, start */ + if (!timeval_is_set(&cookie->unsupported_ts)) { + memcpy(&cookie->unsupported_ts, now, sizeof(cookie->unsupported_ts)); + } + /* Drop it since we expected a cookie */ + return ARES_EBADRESP; + } + + if (cookie->state == ARES_COOKIE_GENERATED) { + ares_cookie_clear(cookie); + cookie->state = ARES_COOKIE_UNSUPPORTED; + memcpy(&cookie->unsupported_ts, now, sizeof(cookie->unsupported_ts)); + } + + /* Cookie state should be UNSUPPORTED if we're here */ + return ARES_SUCCESS; +} diff --git a/lib/c-ares-1.32.3/src/lib/ares_data.c b/lib/c-ares-1.33.0/src/lib/ares_data.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_data.c rename to lib/c-ares-1.33.0/src/lib/ares_data.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_data.h b/lib/c-ares-1.33.0/src/lib/ares_data.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_data.h rename to lib/c-ares-1.33.0/src/lib/ares_data.h diff --git a/lib/c-ares-1.32.3/src/lib/ares_destroy.c b/lib/c-ares-1.33.0/src/lib/ares_destroy.c similarity index 96% rename from lib/c-ares-1.32.3/src/lib/ares_destroy.c rename to lib/c-ares-1.33.0/src/lib/ares_destroy.c index 1be42b1dec1..d75b5e227cc 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_destroy.c +++ b/lib/c-ares-1.33.0/src/lib/ares_destroy.c @@ -26,7 +26,7 @@ */ #include "ares_private.h" -#include "ares_event.h" +#include "event/ares_event.h" #include void ares_destroy(ares_channel_t *channel) @@ -73,7 +73,7 @@ void ares_destroy(ares_channel_t *channel) node = ares__llist_node_first(channel->all_queries); while (node != NULL) { ares__llist_node_t *next = ares__llist_node_next(node); - struct query *query = ares__llist_node_claim(node); + ares_query_t *query = ares__llist_node_claim(node); query->node_all_queries = NULL; query->callback(query->arg, ARES_EDESTRUCTION, 0, NULL); @@ -134,7 +134,7 @@ void ares_destroy(ares_channel_t *channel) ares_free(channel); } -void ares__destroy_server(struct server_state *server) +void ares__destroy_server(ares_server_t *server) { if (server == NULL) { return; /* LCOV_EXCL_LINE: DefensiveCoding */ @@ -152,7 +152,7 @@ void ares__destroy_servers_state(ares_channel_t *channel) ares__slist_node_t *node; while ((node = ares__slist_node_first(channel->servers)) != NULL) { - struct server_state *server = ares__slist_node_claim(node); + ares_server_t *server = ares__slist_node_claim(node); ares__destroy_server(server); } diff --git a/lib/c-ares-1.32.3/src/lib/ares_free_hostent.c b/lib/c-ares-1.33.0/src/lib/ares_free_hostent.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_free_hostent.c rename to lib/c-ares-1.33.0/src/lib/ares_free_hostent.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_free_string.c b/lib/c-ares-1.33.0/src/lib/ares_free_string.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_free_string.c rename to lib/c-ares-1.33.0/src/lib/ares_free_string.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_freeaddrinfo.c b/lib/c-ares-1.33.0/src/lib/ares_freeaddrinfo.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_freeaddrinfo.c rename to lib/c-ares-1.33.0/src/lib/ares_freeaddrinfo.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_getaddrinfo.c b/lib/c-ares-1.33.0/src/lib/ares_getaddrinfo.c similarity index 99% rename from lib/c-ares-1.32.3/src/lib/ares_getaddrinfo.c rename to lib/c-ares-1.33.0/src/lib/ares_getaddrinfo.c index 8a195ed0220..f67acdec2fa 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_getaddrinfo.c +++ b/lib/c-ares-1.33.0/src/lib/ares_getaddrinfo.c @@ -252,7 +252,7 @@ static ares_bool_t fake_addrinfo(const char *name, unsigned short port, ares_bool_t valid = ARES_TRUE; const char *p; for (p = name; *p; p++) { - if (!isdigit(*p) && *p != '.') { + if (!ares__isdigit(*p) && *p != '.') { valid = ARES_FALSE; break; } else if (*p == '.') { @@ -469,7 +469,7 @@ static void terminate_retries(const struct host_query *hquery, unsigned short term_qid = (qid == hquery->qid_a) ? hquery->qid_aaaa : hquery->qid_a; const ares_channel_t *channel = hquery->channel; - struct query *query = NULL; + ares_query_t *query = NULL; /* No other outstanding queries, nothing to do */ if (!hquery->remaining) { diff --git a/lib/c-ares-1.32.3/src/lib/ares_getenv.c b/lib/c-ares-1.33.0/src/lib/ares_getenv.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_getenv.c rename to lib/c-ares-1.33.0/src/lib/ares_getenv.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_getenv.h b/lib/c-ares-1.33.0/src/lib/ares_getenv.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_getenv.h rename to lib/c-ares-1.33.0/src/lib/ares_getenv.h diff --git a/lib/c-ares-1.32.3/src/lib/ares_gethostbyaddr.c b/lib/c-ares-1.33.0/src/lib/ares_gethostbyaddr.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_gethostbyaddr.c rename to lib/c-ares-1.33.0/src/lib/ares_gethostbyaddr.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_gethostbyname.c b/lib/c-ares-1.33.0/src/lib/ares_gethostbyname.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_gethostbyname.c rename to lib/c-ares-1.33.0/src/lib/ares_gethostbyname.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_getnameinfo.c b/lib/c-ares-1.33.0/src/lib/ares_getnameinfo.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_getnameinfo.c rename to lib/c-ares-1.33.0/src/lib/ares_getnameinfo.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_inet_net_pton.h b/lib/c-ares-1.33.0/src/lib/ares_inet_net_pton.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_inet_net_pton.h rename to lib/c-ares-1.33.0/src/lib/ares_inet_net_pton.h diff --git a/lib/c-ares-1.32.3/src/lib/ares_init.c b/lib/c-ares-1.33.0/src/lib/ares_init.c similarity index 98% rename from lib/c-ares-1.32.3/src/lib/ares_init.c rename to lib/c-ares-1.33.0/src/lib/ares_init.c index cc7b85d783e..6dc5f4f9353 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_init.c +++ b/lib/c-ares-1.33.0/src/lib/ares_init.c @@ -63,7 +63,7 @@ #include "ares_inet_net_pton.h" #include "ares_platform.h" -#include "ares_event.h" +#include "event/ares_event.h" int ares_init(ares_channel_t **channelptr) { @@ -72,8 +72,8 @@ int ares_init(ares_channel_t **channelptr) static int ares_query_timeout_cmp_cb(const void *arg1, const void *arg2) { - const struct query *q1 = arg1; - const struct query *q2 = arg2; + const ares_query_t *q1 = arg1; + const ares_query_t *q2 = arg2; if (q1->timeout.sec > q2->timeout.sec) { return 1; @@ -94,8 +94,8 @@ static int ares_query_timeout_cmp_cb(const void *arg1, const void *arg2) static int server_sort_cb(const void *data1, const void *data2) { - const struct server_state *s1 = data1; - const struct server_state *s2 = data2; + const ares_server_t *s1 = data1; + const ares_server_t *s2 = data2; if (s1->consec_failures < s2->consec_failures) { return -1; diff --git a/lib/c-ares-1.32.3/src/lib/ares_ipv6.h b/lib/c-ares-1.33.0/src/lib/ares_ipv6.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_ipv6.h rename to lib/c-ares-1.33.0/src/lib/ares_ipv6.h diff --git a/lib/c-ares-1.32.3/src/lib/ares_library_init.c b/lib/c-ares-1.33.0/src/lib/ares_library_init.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_library_init.c rename to lib/c-ares-1.33.0/src/lib/ares_library_init.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_metrics.c b/lib/c-ares-1.33.0/src/lib/ares_metrics.c similarity index 96% rename from lib/c-ares-1.32.3/src/lib/ares_metrics.c rename to lib/c-ares-1.33.0/src/lib/ares_metrics.c index 78f93bc1b7d..aa0ea8c0170 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_metrics.c +++ b/lib/c-ares-1.33.0/src/lib/ares_metrics.c @@ -145,7 +145,7 @@ static time_t ares_metric_timestamp(ares_server_bucket_t bucket, return (time_t)(now->sec / divisor); } -void ares_metrics_record(const struct query *query, struct server_state *server, +void ares_metrics_record(const ares_query_t *query, ares_server_t *server, ares_status_t status, const ares_dns_record_t *dnsrec) { ares_timeval_t now; @@ -205,8 +205,8 @@ void ares_metrics_record(const struct query *query, struct server_state *server, } } -size_t ares_metrics_server_timeout(const struct server_state *server, - const ares_timeval_t *now) +size_t ares_metrics_server_timeout(const ares_server_t *server, + const ares_timeval_t *now) { const ares_channel_t *channel = server->channel; ares_server_bucket_t i; @@ -252,7 +252,7 @@ size_t ares_metrics_server_timeout(const struct server_state *server, } /* don't go above upper bounds */ - max_timeout_ms = channel->maxtimeout?channel->maxtimeout:MAX_TIMEOUT_MS; + max_timeout_ms = channel->maxtimeout ? channel->maxtimeout : MAX_TIMEOUT_MS; if (timeout_ms > max_timeout_ms) { timeout_ms = max_timeout_ms; } diff --git a/lib/c-ares-1.32.3/src/lib/ares_options.c b/lib/c-ares-1.33.0/src/lib/ares_options.c similarity index 99% rename from lib/c-ares-1.32.3/src/lib/ares_options.c rename to lib/c-ares-1.33.0/src/lib/ares_options.c index 19ddf6d8ca1..9aeb4bad3d7 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_options.c +++ b/lib/c-ares-1.33.0/src/lib/ares_options.c @@ -66,7 +66,7 @@ static struct in_addr *ares_save_opt_servers(const ares_channel_t *channel, for (snode = ares__slist_node_first(channel->servers); snode != NULL; snode = ares__slist_node_next(snode)) { - const struct server_state *server = ares__slist_node_val(snode); + const ares_server_t *server = ares__slist_node_val(snode); if (server->addr.family != AF_INET) { continue; diff --git a/lib/c-ares-1.32.3/src/lib/ares_platform.c b/lib/c-ares-1.33.0/src/lib/ares_platform.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_platform.c rename to lib/c-ares-1.33.0/src/lib/ares_platform.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_platform.h b/lib/c-ares-1.33.0/src/lib/ares_platform.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_platform.h rename to lib/c-ares-1.33.0/src/lib/ares_platform.h diff --git a/lib/c-ares-1.32.3/src/lib/ares_private.h b/lib/c-ares-1.33.0/src/lib/ares_private.h similarity index 81% rename from lib/c-ares-1.32.3/src/lib/ares_private.h rename to lib/c-ares-1.33.0/src/lib/ares_private.h index 5506416d8ef..b85ecb5e14d 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_private.h +++ b/lib/c-ares-1.33.0/src/lib/ares_private.h @@ -105,33 +105,34 @@ W32_FUNC const char *_w32_GetHostsFile(void); struct ares_rand_state; typedef struct ares_rand_state ares_rand_state; -#include "ares__llist.h" -#include "ares__slist.h" -#include "ares__htable_strvp.h" -#include "ares__htable_szvp.h" -#include "ares__htable_asvp.h" -#include "ares__htable_vpvp.h" -#include "ares_dns_multistring.h" -#include "ares__buf.h" -#include "ares_dns_private.h" -#include "ares__iface_ips.h" -#include "ares__threads.h" +#include "dsa/ares__array.h" +#include "dsa/ares__llist.h" +#include "dsa/ares__slist.h" +#include "dsa/ares__htable_strvp.h" +#include "dsa/ares__htable_szvp.h" +#include "dsa/ares__htable_asvp.h" +#include "dsa/ares__htable_vpvp.h" +#include "record/ares_dns_multistring.h" +#include "str/ares__buf.h" +#include "record/ares_dns_private.h" +#include "util/ares__iface_ips.h" +#include "util/ares__threads.h" #ifndef HAVE_GETENV # include "ares_getenv.h" # define getenv(ptr) ares_getenv(ptr) #endif -#include "ares_str.h" -#include "ares_strsplit.h" +#include "str/ares_str.h" +#include "str/ares_strsplit.h" #ifndef HAVE_STRCASECMP -# include "ares_strcasecmp.h" +# include "str/ares_strcasecmp.h" # define strcasecmp(p1, p2) ares_strcasecmp(p1, p2) #endif #ifndef HAVE_STRNCASECMP -# include "ares_strcasecmp.h" +# include "str/ares_strcasecmp.h" # define strncasecmp(p1, p2, n) ares_strncasecmp(p1, p2, n) #endif @@ -150,18 +151,36 @@ typedef struct ares_rand_state ares_rand_state; #define DEFAULT_SERVER_RETRY_CHANCE 10 #define DEFAULT_SERVER_RETRY_DELAY 5000 -struct query; +struct ares_query; +typedef struct ares_query ares_query_t; -struct server_state; +struct ares_server; +typedef struct ares_server ares_server_t; -struct server_connection { - struct server_state *server; - ares_socket_t fd; - ares_bool_t is_tcp; +struct ares_conn; +typedef struct ares_conn ares_conn_t; + +typedef enum { + /*! No flags */ + ARES_CONN_FLAG_NONE = 0, + /*! TCP connection, not UDP */ + ARES_CONN_FLAG_TCP = 1 << 0, + /*! TCP Fast Open is enabled and being used if supported by the OS */ + ARES_CONN_FLAG_TFO = 1 << 1, + /*! TCP Fast Open has not yet sent its first packet. Gets unset on first + * write to a connection */ + ARES_CONN_FLAG_TFO_INITIAL = 1 << 2 +} ares_conn_flags_t; + +struct ares_conn { + ares_server_t *server; + ares_socket_t fd; + struct ares_addr self_ip; + ares_conn_flags_t flags; /* total number of queries run on this connection since it was established */ - size_t total_queries; + size_t total_queries; /* list of outstanding queries to this connection */ - ares__llist_t *queries_to_conn; + ares__llist_t *queries_to_conn; }; #ifdef _MSC_VER @@ -204,70 +223,104 @@ typedef struct { ares_uint64_t prev_total_count; /*!< Previous period bucket query count */ } ares_server_metrics_t; -struct server_state { +typedef enum { + ARES_COOKIE_INITIAL = 0, + ARES_COOKIE_GENERATED = 1, + ARES_COOKIE_SUPPORTED = 2, + ARES_COOKIE_UNSUPPORTED = 3 +} ares_cookie_state_t; + +/*! Structure holding tracking data for RFC 7873/9018 DNS cookies. + * Implementation plan for this feature is here: + * https://github.com/c-ares/c-ares/issues/620 + */ +typedef struct { + /*! starts at INITIAL, transitions as needed. */ + ares_cookie_state_t state; + /*! randomly-generate client cookie */ + unsigned char client[8]; + /*! timestamp client cookie was generated, used for rotation purposes */ + ares_timeval_t client_ts; + /*! IP address last used for client to connect to server. If this changes + * The client cookie gets invalidated */ + struct ares_addr client_ip; + /*! Server Cookie last received, 8-32 bytes in length */ + unsigned char server[32]; + /*! Length of server cookie on file. */ + size_t server_len; + /*! Timestamp of last attempt to use cookies, but it was determined that the + * server didn't support them */ + ares_timeval_t unsupported_ts; +} ares_cookie_t; + +struct ares_server { /* Configuration */ - size_t idx; /* index for server in system configuration */ - struct ares_addr addr; - unsigned short udp_port; /* host byte order */ - unsigned short tcp_port; /* host byte order */ - char ll_iface[64]; /* IPv6 Link Local Interface */ - unsigned int ll_scope; /* IPv6 Link Local Scope */ - - size_t consec_failures; /* Consecutive query failure count - * can be hard errors or timeouts - */ - ares__llist_t *connections; - struct server_connection *tcp_conn; + size_t idx; /* index for server in system configuration */ + struct ares_addr addr; + unsigned short udp_port; /* host byte order */ + unsigned short tcp_port; /* host byte order */ + char ll_iface[64]; /* IPv6 Link Local Interface */ + unsigned int ll_scope; /* IPv6 Link Local Scope */ + + size_t consec_failures; /* Consecutive query failure count + * can be hard errors or timeouts + */ + ares__llist_t *connections; + ares_conn_t *tcp_conn; /* The next time when we will retry this server if it has hit failures */ - ares_timeval_t next_retry_time; + ares_timeval_t next_retry_time; /* TCP buffer since multiple responses can come back in one read, or partial * in a read */ - ares__buf_t *tcp_parser; + ares__buf_t *tcp_parser; /* TCP output queue */ - ares__buf_t *tcp_send; + ares__buf_t *tcp_send; /*! Buckets for collecting metrics about the server */ - ares_server_metrics_t metrics[ARES_METRIC_COUNT]; + ares_server_metrics_t metrics[ARES_METRIC_COUNT]; + + /*! RFC 7873/9018 DNS Cookies */ + ares_cookie_t cookie; /* Link back to owning channel */ - ares_channel_t *channel; + ares_channel_t *channel; }; /* State to represent a DNS query */ -struct query { +struct ares_query { /* Query ID from qbuf, for faster lookup, and current timeout */ - unsigned short qid; /* host byte order */ - ares_timeval_t ts; /*!< Timestamp query was sent */ - ares_timeval_t timeout; - ares_channel_t *channel; + unsigned short qid; /* host byte order */ + ares_timeval_t ts; /*!< Timestamp query was sent */ + ares_timeval_t timeout; + ares_channel_t *channel; /* * Node object for each list entry the query belongs to in order to * make removal operations O(1). */ - ares__slist_node_t *node_queries_by_timeout; - ares__llist_node_t *node_queries_to_conn; - ares__llist_node_t *node_all_queries; + ares__slist_node_t *node_queries_by_timeout; + ares__llist_node_t *node_queries_to_conn; + ares__llist_node_t *node_all_queries; /* connection handle query is associated with */ - struct server_connection *conn; + ares_conn_t *conn; /* Query */ - ares_dns_record_t *query; + ares_dns_record_t *query; - ares_callback_dnsrec callback; - void *arg; + ares_callback_dnsrec callback; + void *arg; /* Query status */ size_t try_count; /* Number of times we tried this query already. */ + size_t cookie_try_count; /* Attempt count for cookie resends */ ares_bool_t using_tcp; ares_status_t error_status; - 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 - * when a query is to be canceled */ + 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 when a query is to be canceled */ }; struct apattern { @@ -408,10 +461,11 @@ ares_bool_t ares__timedout(const ares_timeval_t *now, const ares_timeval_t *check); /* Returns one of the normal ares status codes like ARES_SUCCESS */ -ares_status_t ares__send_query(struct query *query, const ares_timeval_t *now); -ares_status_t ares__requeue_query(struct query *query, +ares_status_t ares__send_query(ares_query_t *query, const ares_timeval_t *now); +ares_status_t ares__requeue_query(ares_query_t *query, const ares_timeval_t *now, - ares_status_t status); + ares_status_t status, + ares_bool_t inc_try_count); /*! Retrieve a list of names to use for searching. The first successful * query in the list wins. This function also uses the HOSTSALIASES file @@ -439,11 +493,10 @@ void *ares__dnsrec_convert_arg(ares_callback callback, void *arg); void ares__dnsrec_convert_cb(void *arg, ares_status_t status, size_t timeouts, const ares_dns_record_t *dnsrec); -void ares__close_connection(struct server_connection *conn, - ares_status_t requeue_status); -void ares__close_sockets(struct server_state *server); +void ares__close_connection(ares_conn_t *conn, ares_status_t requeue_status); +void ares__close_sockets(ares_server_t *server); void ares__check_cleanup_conns(const ares_channel_t *channel); -void ares__free_query(struct query *query); +void ares__free_query(ares_query_t *query); ares_rand_state *ares__init_rand_state(void); void ares__destroy_rand_state(ares_rand_state *state); @@ -550,23 +603,28 @@ ares_status_t ares__addrinfo2addrttl(const struct ares_addrinfo *ai, int family, ares_status_t ares__addrinfo_localhost(const char *name, unsigned short port, const struct ares_addrinfo_hints *hints, struct ares_addrinfo *ai); -ares_status_t ares__open_connection(ares_channel_t *channel, - struct server_state *server, - ares_bool_t is_tcp); +ares_status_t ares__open_connection(ares_conn_t **conn_out, + ares_channel_t *channel, + ares_server_t *server, ares_bool_t is_tcp); +ares_bool_t ares_sockaddr_to_ares_addr(struct ares_addr *ares_addr, + unsigned short *port, + const struct sockaddr *sockaddr); ares_socket_t ares__open_socket(ares_channel_t *channel, int af, int type, int protocol); -ares_ssize_t ares__socket_write(ares_channel_t *channel, ares_socket_t s, - const void *data, size_t len); +ares_bool_t ares__socket_try_again(int errnum); +ares_ssize_t ares__conn_write(ares_conn_t *conn, const void *data, size_t len); ares_ssize_t ares__socket_recvfrom(ares_channel_t *channel, ares_socket_t s, void *data, size_t data_len, int flags, struct sockaddr *from, ares_socklen_t *from_len); ares_ssize_t ares__socket_recv(ares_channel_t *channel, ares_socket_t s, void *data, size_t data_len); -void ares__close_socket(ares_channel, ares_socket_t); -int ares__connect_socket(ares_channel_t *channel, ares_socket_t sockfd, - const struct sockaddr *addr, ares_socklen_t addrlen); -void ares__destroy_server(struct server_state *server); +void ares__close_socket(ares_channel_t *channel, ares_socket_t s); +ares_status_t ares__connect_socket(ares_channel_t *channel, + ares_socket_t sockfd, + const struct sockaddr *addr, + ares_socklen_t addrlen); +void ares__destroy_server(ares_server_t *server); ares_status_t ares__servers_update(ares_channel_t *channel, ares__llist_t *server_list, @@ -582,8 +640,8 @@ ares_status_t ares__sconfig_append_fromstr(ares__llist_t **sconfig, ares_status_t ares_in_addr_to_server_config_llist(const struct in_addr *servers, size_t nservers, ares__llist_t **llist); -ares_status_t ares_get_server_addr(const struct server_state *server, - ares__buf_t *buf); +ares_status_t ares_get_server_addr(const ares_server_t *server, + ares__buf_t *buf); struct ares_hosts_entry; typedef struct ares_hosts_entry ares_hosts_entry_t; @@ -616,8 +674,8 @@ ares_status_t ares_query_nolock(ares_channel_t *channel, const char *name, * if a channel lock is already held */ ares_status_t ares_send_nolock(ares_channel_t *channel, const ares_dns_record_t *dnsrec, - ares_callback_dnsrec callback, - void *arg, unsigned short *qid); + ares_callback_dnsrec callback, void *arg, + unsigned short *qid); /* Same as ares_gethostbyaddr() except does not take a channel lock. Use this * if a channel lock is already held */ @@ -703,17 +761,24 @@ ares_status_t ares__qcache_create(ares_rand_state *rand_state, void ares__qcache_flush(ares__qcache_t *cache); ares_status_t ares_qcache_insert(ares_channel_t *channel, const ares_timeval_t *now, - const struct query *query, + const ares_query_t *query, ares_dns_record_t *dnsrec); ares_status_t ares_qcache_fetch(ares_channel_t *channel, const ares_timeval_t *now, const ares_dns_record_t *dnsrec, const ares_dns_record_t **dnsrec_resp); -void ares_metrics_record(const struct query *query, struct server_state *server, - ares_status_t status, const ares_dns_record_t *dnsrec); -size_t ares_metrics_server_timeout(const struct server_state *server, - const ares_timeval_t *now); +void ares_metrics_record(const ares_query_t *query, ares_server_t *server, + ares_status_t status, const ares_dns_record_t *dnsrec); +size_t ares_metrics_server_timeout(const ares_server_t *server, + const ares_timeval_t *now); + +ares_status_t ares_cookie_apply(ares_dns_record_t *dnsrec, ares_conn_t *conn, + const ares_timeval_t *now); +ares_status_t ares_cookie_validate(ares_query_t *query, + const ares_dns_record_t *dnsresp, + ares_conn_t *conn, + const ares_timeval_t *now); ares_status_t ares__channel_threading_init(ares_channel_t *channel); void ares__channel_threading_destroy(ares_channel_t *channel); diff --git a/lib/c-ares-1.32.3/src/lib/ares_process.c b/lib/c-ares-1.33.0/src/lib/ares_process.c similarity index 72% rename from lib/c-ares-1.32.3/src/lib/ares_process.c rename to lib/c-ares-1.33.0/src/lib/ares_process.c index 01d9e6a49d3..65ee673f6ed 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_process.c +++ b/lib/c-ares-1.33.0/src/lib/ares_process.c @@ -46,7 +46,6 @@ static void timeadd(ares_timeval_t *now, size_t millisecs); -static ares_bool_t try_again(int errnum); static void write_tcp_data(ares_channel_t *channel, fd_set *write_fds, ares_socket_t write_fd); static void read_packets(ares_channel_t *channel, fd_set *read_fds, @@ -55,22 +54,20 @@ static void process_timeouts(ares_channel_t *channel, const ares_timeval_t *now); static ares_status_t process_answer(ares_channel_t *channel, const unsigned char *abuf, size_t alen, - struct server_connection *conn, - ares_bool_t tcp, const ares_timeval_t *now); -static void handle_conn_error(struct server_connection *conn, - ares_bool_t critical_failure, - ares_status_t failure_status); - -static ares_bool_t same_questions(const struct query *query, - const ares_dns_record_t *arec); -static ares_bool_t same_address(const struct sockaddr *sa, - const struct ares_addr *aa); -static void end_query(ares_channel_t *channel, struct server_state *server, - struct query *query, ares_status_t status, - const ares_dns_record_t *dnsrec); - - -static void ares__query_disassociate_from_conn(struct query *query) + ares_conn_t *conn, ares_bool_t tcp, + const ares_timeval_t *now); +static void handle_conn_error(ares_conn_t *conn, ares_bool_t critical_failure, + ares_status_t failure_status); + +static ares_bool_t same_questions(const ares_query_t *query, + const ares_dns_record_t *arec); +static ares_bool_t same_address(const struct sockaddr *sa, + const struct ares_addr *aa); +static void end_query(ares_channel_t *channel, ares_server_t *server, + ares_query_t *query, ares_status_t status, + const ares_dns_record_t *dnsrec); + +static void ares__query_disassociate_from_conn(ares_query_t *query) { /* If its not part of a connection, it can't be tracked for timeouts either */ ares__slist_node_destroy(query->node_queries_by_timeout); @@ -81,7 +78,7 @@ static void ares__query_disassociate_from_conn(struct query *query) } /* 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 ares_server_t *server, ares_bool_t success, int flags) { const ares_channel_t *channel = server->channel; @@ -115,8 +112,8 @@ static void invoke_server_state_cb(const struct server_state *server, ares_free(server_string); } -static void server_increment_failures(struct server_state *server, - ares_bool_t used_tcp) +static void server_increment_failures(ares_server_t *server, + ares_bool_t used_tcp) { ares__slist_node_t *node; const ares_channel_t *channel = server->channel; @@ -139,7 +136,7 @@ static void server_increment_failures(struct server_state *server, : ARES_SERV_STATE_UDP); } -static void server_set_good(struct server_state *server, ares_bool_t used_tcp) +static void server_set_good(ares_server_t *server, ares_bool_t used_tcp) { ares__slist_node_t *node; const ares_channel_t *channel = server->channel; @@ -238,34 +235,6 @@ void ares_process_fd(ares_channel_t *channel, processfds(channel, NULL, read_fd, NULL, write_fd); } -/* Return 1 if the specified error number describes a readiness error, or 0 - * otherwise. This is mostly for HP-UX, which could return EAGAIN or - * EWOULDBLOCK. See this man page - * - * http://devrsrc1.external.hp.com/STKS/cgi-bin/man2html? - * manpage=/usr/share/man/man2.Z/send.2 - */ -static ares_bool_t try_again(int errnum) -{ -#if !defined EWOULDBLOCK && !defined EAGAIN -# error "Neither EWOULDBLOCK nor EAGAIN defined" -#endif - -#ifdef EWOULDBLOCK - if (errnum == EWOULDBLOCK) { - return ARES_TRUE; - } -#endif - -#if defined EAGAIN && EAGAIN != EWOULDBLOCK - if (errnum == EAGAIN) { - return ARES_TRUE; - } -#endif - - return ARES_FALSE; -} - /* If any TCP sockets select true for writing, write out queued data * we have for them. */ @@ -281,7 +250,7 @@ static void write_tcp_data(ares_channel_t *channel, fd_set *write_fds, for (node = ares__slist_node_first(channel->servers); node != NULL; node = ares__slist_node_next(node)) { - struct server_state *server = ares__slist_node_val(node); + ares_server_t *server = ares__slist_node_val(node); const unsigned char *data; size_t data_len; ares_ssize_t count; @@ -312,9 +281,9 @@ static void write_tcp_data(ares_channel_t *channel, fd_set *write_fds, } data = ares__buf_peek(server->tcp_send, &data_len); - count = ares__socket_write(channel, server->tcp_conn->fd, data, data_len); + count = ares__conn_write(server->tcp_conn, data, data_len); if (count <= 0) { - if (!try_again(SOCKERRNO)) { + if (!ares__socket_try_again(SOCKERRNO)) { handle_conn_error(server->tcp_conn, ARES_TRUE, ARES_ECONNREFUSED); } continue; @@ -334,21 +303,21 @@ static void write_tcp_data(ares_channel_t *channel, fd_set *write_fds, * allocate a buffer if we finish reading the length word, and process * a packet if we finish reading one. */ -static void read_tcp_data(ares_channel_t *channel, - struct server_connection *conn, - const ares_timeval_t *now) +static void read_tcp_data(ares_channel_t *channel, ares_conn_t *conn, + const ares_timeval_t *now) { - ares_ssize_t count; - struct server_state *server = conn->server; + ares_ssize_t count; + ares_server_t *server = conn->server; /* Fetch buffer to store data we are reading */ - size_t ptr_len = 65535; - unsigned char *ptr; + size_t ptr_len = 65535; + unsigned char *ptr; ptr = ares__buf_append_start(server->tcp_parser, &ptr_len); if (ptr == NULL) { - handle_conn_error(conn, ARES_FALSE /* not critical to connection */, ARES_SUCCESS); + handle_conn_error(conn, ARES_FALSE /* not critical to connection */, + ARES_SUCCESS); return; /* bail out on malloc failure. TODO: make this function return error codes */ } @@ -357,7 +326,7 @@ static void read_tcp_data(ares_channel_t *channel, count = ares__socket_recv(channel, conn->fd, ptr, ptr_len); if (count <= 0) { ares__buf_append_finish(server->tcp_parser, 0); - if (!(count == -1 && try_again(SOCKERRNO))) { + if (!(count == -1 && ares__socket_try_again(SOCKERRNO))) { handle_conn_error(conn, ARES_TRUE, ARES_ECONNREFUSED); } return; @@ -411,69 +380,48 @@ static void read_tcp_data(ares_channel_t *channel, } } -static int socket_list_append(ares_socket_t **socketlist, ares_socket_t fd, - size_t *alloc_cnt, size_t *num) -{ - if (*num >= *alloc_cnt) { - /* Grow by powers of 2 */ - size_t new_alloc = (*alloc_cnt) << 1; - ares_socket_t *new_list = - ares_realloc(socketlist, new_alloc * sizeof(*new_list)); - if (new_list == NULL) { - return 0; /* LCOV_EXCL_LINE: OutOfMemory */ - } - *alloc_cnt = new_alloc; - *socketlist = new_list; - } - - (*socketlist)[(*num)++] = fd; - return 1; -} - static ares_socket_t *channel_socket_list(const ares_channel_t *channel, size_t *num) { - size_t alloc_cnt = 1 << 4; - ares_socket_t *out = ares_malloc(alloc_cnt * sizeof(*out)); ares__slist_node_t *snode; + ares__array_t *arr = ares__array_create(sizeof(ares_socket_t), NULL); *num = 0; - if (out == NULL) { + if (arr == NULL) { return NULL; /* LCOV_EXCL_LINE: OutOfMemory */ } for (snode = ares__slist_node_first(channel->servers); snode != NULL; snode = ares__slist_node_next(snode)) { - struct server_state *server = ares__slist_node_val(snode); - ares__llist_node_t *node; + ares_server_t *server = ares__slist_node_val(snode); + ares__llist_node_t *node; for (node = ares__llist_node_first(server->connections); node != NULL; node = ares__llist_node_next(node)) { - const struct server_connection *conn = ares__llist_node_val(node); + const ares_conn_t *conn = ares__llist_node_val(node); + ares_socket_t *sptr; + ares_status_t status; if (conn->fd == ARES_SOCKET_BAD) { continue; } - if (!socket_list_append(&out, conn->fd, &alloc_cnt, num)) { - goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ + status = ares__array_insert_last((void **)&sptr, arr); + if (status != ARES_SUCCESS) { + ares__array_destroy(arr); /* LCOV_EXCL_LINE: OutOfMemory */ + return NULL; /* LCOV_EXCL_LINE: OutOfMemory */ } + *sptr = conn->fd; } } - return out; - -fail: - ares_free(out); - *num = 0; - return NULL; + return ares__array_finish(arr, num); } /* If any UDP sockets select true for reading, process them. */ -static void read_udp_packets_fd(ares_channel_t *channel, - struct server_connection *conn, - const ares_timeval_t *now) +static void read_udp_packets_fd(ares_channel_t *channel, ares_conn_t *conn, + const ares_timeval_t *now) { ares_ssize_t read_len; unsigned char buf[MAXENDSSZ + 1]; @@ -511,7 +459,7 @@ static void read_udp_packets_fd(ares_channel_t *channel, * tcp */ continue; } else if (read_len < 0) { - if (try_again(SOCKERRNO)) { + if (ares__socket_try_again(SOCKERRNO)) { break; } @@ -537,11 +485,11 @@ static void read_udp_packets_fd(ares_channel_t *channel, static void read_packets(ares_channel_t *channel, fd_set *read_fds, ares_socket_t read_fd, const ares_timeval_t *now) { - size_t i; - ares_socket_t *socketlist = NULL; - size_t num_sockets = 0; - struct server_connection *conn = NULL; - ares__llist_node_t *node = NULL; + size_t i; + ares_socket_t *socketlist = NULL; + size_t num_sockets = 0; + ares_conn_t *conn = NULL; + ares__llist_node_t *node = NULL; if (!read_fds && (read_fd == ARES_SOCKET_BAD)) { /* no possible action */ @@ -557,7 +505,7 @@ static void read_packets(ares_channel_t *channel, fd_set *read_fds, conn = ares__llist_node_val(node); - if (conn->is_tcp) { + if (conn->flags & ARES_CONN_FLAG_TCP) { read_tcp_data(channel, conn, now); } else { read_udp_packets_fd(channel, conn, now); @@ -591,7 +539,7 @@ static void read_packets(ares_channel_t *channel, fd_set *read_fds, conn = ares__llist_node_val(node); - if (conn->is_tcp) { + if (conn->flags & ARES_CONN_FLAG_TCP) { read_tcp_data(channel, conn, now); } else { read_udp_packets_fd(channel, conn, now); @@ -610,8 +558,8 @@ static void process_timeouts(ares_channel_t *channel, const ares_timeval_t *now) * and go. We don't want to try to rely on 'next' as some operation might * cause a cleanup of that pointer and would become invalid */ while ((node = ares__slist_node_first(channel->queries_by_timeout)) != NULL) { - struct query *query = ares__slist_node_val(node); - struct server_connection *conn; + ares_query_t *query = ares__slist_node_val(node); + ares_conn_t *conn; /* Since this is sorted, as soon as we hit a query that isn't timed out, * break */ @@ -623,15 +571,15 @@ static void process_timeouts(ares_channel_t *channel, const ares_timeval_t *now) conn = query->conn; server_increment_failures(conn->server, query->using_tcp); - ares__requeue_query(query, now, ARES_ETIMEOUT); + ares__requeue_query(query, now, ARES_ETIMEOUT, ARES_TRUE); } } -static ares_status_t rewrite_without_edns(struct query *query) +static ares_status_t rewrite_without_edns(ares_query_t *query) { - ares_status_t status = ARES_SUCCESS; - size_t i; - ares_bool_t found_opt_rr = ARES_FALSE; + ares_status_t status = ARES_SUCCESS; + size_t i; + ares_bool_t found_opt_rr = ARES_FALSE; /* Find and remove the OPT RR record */ for (i = 0; i < ares_dns_record_rr_cnt(query->query, ARES_SECTION_ADDITIONAL); @@ -659,16 +607,16 @@ static ares_status_t rewrite_without_edns(struct query *query) * the connection to be terminated after this call. */ static ares_status_t process_answer(ares_channel_t *channel, const unsigned char *abuf, size_t alen, - struct server_connection *conn, - ares_bool_t tcp, const ares_timeval_t *now) + ares_conn_t *conn, ares_bool_t tcp, + const ares_timeval_t *now) { - struct query *query; + ares_query_t *query; /* Cache these as once ares__send_query() gets called, it may end up * invalidating the connection all-together */ - struct server_state *server = conn->server; - ares_dns_record_t *rdnsrec = NULL; - ares_status_t status; - ares_bool_t is_cached = ARES_FALSE; + ares_server_t *server = conn->server; + ares_dns_record_t *rdnsrec = NULL; + ares_status_t status; + ares_bool_t is_cached = ARES_FALSE; /* Parse the response */ status = ares_dns_parse(abuf, alen, 0, &rdnsrec); @@ -697,6 +645,14 @@ static ares_status_t process_answer(ares_channel_t *channel, goto cleanup; } + /* Validate DNS cookie in response. This function may need to requeue the + * query. */ + if (ares_cookie_validate(query, rdnsrec, conn, now) != ARES_SUCCESS) { + /* Drop response and return */ + status = ARES_SUCCESS; + goto cleanup; + } + /* At this point we know we've received an answer for this query, so we should * remove it from the connection's queue so we can possibly invalidate the * connection. Delay cleaning up the connection though as we may enqueue @@ -708,7 +664,8 @@ static ares_status_t process_answer(ares_channel_t *channel, * protocol extension is not understood by the responder. We must retry the * query without EDNS enabled. */ if (ares_dns_record_get_rcode(rdnsrec) == ARES_RCODE_FORMERR && - ares_dns_has_opt_rr(query->query) && !ares_dns_has_opt_rr(rdnsrec)) { + ares_dns_get_opt_rr_const(query->query) != NULL && + ares_dns_get_opt_rr_const(rdnsrec) == NULL) { status = rewrite_without_edns(query); if (status != ARES_SUCCESS) { end_query(channel, server, query, status, NULL); @@ -754,7 +711,7 @@ static ares_status_t process_answer(ares_channel_t *channel, } server_increment_failures(server, query->using_tcp); - ares__requeue_query(query, now, status); + ares__requeue_query(query, now, status, ARES_TRUE); /* Should any of these cause a connection termination? * Maybe SERVER_FAILURE? */ @@ -783,25 +740,26 @@ static ares_status_t process_answer(ares_channel_t *channel, return status; } -static void handle_conn_error(struct server_connection *conn, - ares_bool_t critical_failure, - ares_status_t failure_status) +static void handle_conn_error(ares_conn_t *conn, ares_bool_t critical_failure, + ares_status_t failure_status) { - struct server_state *server = conn->server; + ares_server_t *server = conn->server; /* Increment failures first before requeue so it is unlikely to requeue * to the same server */ if (critical_failure) { - server_increment_failures(server, conn->is_tcp); + server_increment_failures( + server, (conn->flags & ARES_CONN_FLAG_TCP) ? ARES_TRUE : ARES_FALSE); } /* This will requeue any connections automatically */ ares__close_connection(conn, failure_status); } -ares_status_t ares__requeue_query(struct query *query, +ares_status_t ares__requeue_query(ares_query_t *query, const ares_timeval_t *now, - ares_status_t status) + ares_status_t status, + ares_bool_t inc_try_count) { ares_channel_t *channel = query->channel; size_t max_tries = ares__slist_len(channel->servers) * channel->tries; @@ -812,7 +770,10 @@ ares_status_t ares__requeue_query(struct query *query, query->error_status = status; } - query->try_count++; + if (inc_try_count) { + query->try_count++; + } + if (query->try_count < max_tries && !query->no_retries) { return ares__send_query(query, now); } @@ -829,7 +790,7 @@ ares_status_t ares__requeue_query(struct query *query, /* Pick a random server from the list, we first get a random number in the * range of the number of servers, then scan until we find that server in * the list */ -static struct server_state *ares__random_server(ares_channel_t *channel) +static ares_server_t *ares__random_server(ares_channel_t *channel) { unsigned char c; size_t cnt; @@ -873,12 +834,11 @@ static struct server_state *ares__random_server(ares_channel_t *channel) * To resolve this, with some probability we select a failed server to retry * instead. */ -static struct server_state *ares__failover_server(ares_channel_t *channel) +static ares_server_t *ares__failover_server(ares_channel_t *channel) { - struct server_state *first_server = ares__slist_first_val(channel->servers); - const struct server_state *last_server = - ares__slist_last_val(channel->servers); - unsigned short r; + ares_server_t *first_server = ares__slist_first_val(channel->servers); + const ares_server_t *last_server = ares__slist_last_val(channel->servers); + unsigned short r; /* Defensive code against no servers being available on the channel. */ if (first_server == NULL) { @@ -911,7 +871,7 @@ static struct server_state *ares__failover_server(ares_channel_t *channel) ares__tvnow(&now); for (node = ares__slist_node_first(channel->servers); node != NULL; node = ares__slist_node_next(node)) { - struct server_state *node_val = ares__slist_node_val(node); + ares_server_t *node_val = ares__slist_node_val(node); if (node_val != NULL && node_val->consec_failures > 0 && ares__timedout(&now, &node_val->next_retry_time)) { return node_val; @@ -923,65 +883,9 @@ static struct server_state *ares__failover_server(ares_channel_t *channel) return first_server; } -static ares_status_t ares__append_tcpbuf(struct server_state *server, - const struct query *query) -{ - ares_status_t status; - unsigned char *qbuf = NULL; - size_t qbuf_len = 0; - - status = ares_dns_write(query->query, &qbuf, &qbuf_len); - if (status != ARES_SUCCESS) { - goto done; - } - - status = ares__buf_append_be16(server->tcp_send, (unsigned short)qbuf_len); - if (status != ARES_SUCCESS) { - goto done; /* LCOV_EXCL_LINE: OutOfMemory */ - } - - status = ares__buf_append(server->tcp_send, qbuf, qbuf_len); - -done: - ares_free(qbuf); - return status; -} - - -static ares_status_t ares__write_udpbuf(ares_channel_t *channel, - ares_socket_t fd, - const struct query *query) -{ - ares_status_t status; - unsigned char *qbuf = NULL; - size_t qbuf_len = 0; - - status = ares_dns_write(query->query, &qbuf, &qbuf_len); - if (status != ARES_SUCCESS) { - goto done; - } - - if (ares__socket_write(channel, fd, qbuf, qbuf_len) == -1) { - if (try_again(SOCKERRNO)) { - status = ARES_ESERVFAIL; - } else { - /* UDP is connection-less, but we might receive an ICMP unreachable which - * means we can't talk to the remote host at all and that will be - * reflected here */ - status = ARES_ECONNREFUSED; - } - } else { - status = ARES_SUCCESS; - } - -done: - ares_free(qbuf); - return status; -} - -static size_t ares__calc_query_timeout(const struct query *query, - const struct server_state *server, - const ares_timeval_t *now) +static size_t ares__calc_query_timeout(const ares_query_t *query, + const ares_server_t *server, + const ares_timeval_t *now) { const ares_channel_t *channel = query->channel; size_t timeout = ares_metrics_server_timeout(server, now); @@ -1031,150 +935,187 @@ static size_t ares__calc_query_timeout(const struct query *query, return timeplus; } -ares_status_t ares__send_query(struct query *query, const ares_timeval_t *now) +static ares_conn_t *ares__fetch_connection(const ares_channel_t *channel, + ares_server_t *server, + const ares_query_t *query) { - ares_channel_t *channel = query->channel; - struct server_state *server; - struct server_connection *conn; - size_t timeplus; - ares_status_t status; - ares_bool_t new_connection = ARES_FALSE; + ares__llist_node_t *node; + ares_conn_t *conn; - /* Choose the server to send the query to */ - if (channel->rotate) { - /* Pull random server */ - server = ares__random_server(channel); - } else { - /* Pull server with failover behavior */ - server = ares__failover_server(channel); + if (query->using_tcp) { + return server->tcp_conn; } - if (server == NULL) { - end_query(channel, server, query, ARES_ENOSERVER /* ? */, NULL); - return ARES_ENOSERVER; + /* Fetch existing UDP connection */ + node = ares__llist_node_first(server->connections); + if (node == NULL) { + return NULL; } - if (query->using_tcp) { - size_t prior_len = 0; - /* Make sure the TCP socket for this server is set up and queue - * a send request. - */ - if (server->tcp_conn == NULL) { - new_connection = ARES_TRUE; - status = ares__open_connection(channel, server, ARES_TRUE); - switch (status) { - /* Good result, continue on */ - case ARES_SUCCESS: - break; + conn = ares__llist_node_val(node); + /* Not UDP, skip */ + if (conn->flags & ARES_CONN_FLAG_TCP) { + return NULL; + } - /* These conditions are retryable as they are server-specific - * error codes */ - case ARES_ECONNREFUSED: - case ARES_EBADFAMILY: - server_increment_failures(server, query->using_tcp); - return ares__requeue_query(query, now, status); + /* Used too many times */ + if (channel->udp_max_queries > 0 && + conn->total_queries >= channel->udp_max_queries) { + return NULL; + } - /* Anything else is not retryable, likely ENOMEM */ - default: - end_query(channel, server, query, status, NULL); - return status; - } - } + return conn; +} - conn = server->tcp_conn; +static ares_status_t ares__conn_query_write(ares_conn_t *conn, + ares_query_t *query, + const ares_timeval_t *now) +{ + unsigned char *qbuf = NULL; + size_t qbuf_len = 0; + ares_ssize_t len; + ares_server_t *server = conn->server; + ares_channel_t *channel = server->channel; + ares_status_t status; + + status = ares_cookie_apply(query->query, conn, now); + if (status != ARES_SUCCESS) { + return status; + } - prior_len = ares__buf_len(server->tcp_send); + if (conn->flags & ARES_CONN_FLAG_TCP) { + size_t prior_len = ares__buf_len(server->tcp_send); - status = ares__append_tcpbuf(server, query); + status = ares_dns_write_buf_tcp(query->query, server->tcp_send); if (status != ARES_SUCCESS) { - end_query(channel, server, query, status, NULL); + return status; + } + + if (conn->flags & ARES_CONN_FLAG_TFO_INITIAL) { + /* When using TFO, we need to put it on the wire immediately. */ + size_t data_len; + const unsigned char *data = NULL; + + data = ares__buf_peek(server->tcp_send, &data_len); + len = ares__conn_write(conn, data, data_len); + if (len <= 0) { + if (ares__socket_try_again(SOCKERRNO)) { + /* This means we must not have qualified for TFO, keep the data + * buffered, wait on write signal. */ + return ARES_SUCCESS; + } - /* Only safe to kill connection if it was new, otherwise it should be - * cleaned up by another process later */ - if (new_connection) { - ares__close_connection(conn, status); + /* TCP TFO might delay failure. Reflect that here */ + return ARES_ECONNREFUSED; } - return status; + + /* Consume what was written */ + ares__buf_consume(server->tcp_send, (size_t)len); + return ARES_SUCCESS; } if (prior_len == 0) { SOCK_STATE_CALLBACK(channel, conn->fd, 1, 1); } - } else { - ares__llist_node_t *node = ares__llist_node_first(server->connections); - - /* Don't use the found connection if we've gone over the maximum number - * of queries. Also, skip over the TCP connection if it is the first in - * the list */ - if (node != NULL) { - conn = ares__llist_node_val(node); - if (conn->is_tcp) { - node = NULL; - } else if (channel->udp_max_queries > 0 && - conn->total_queries >= channel->udp_max_queries) { - node = NULL; - } - } + return ARES_SUCCESS; + } - if (node == NULL) { - new_connection = ARES_TRUE; - status = ares__open_connection(channel, server, ARES_FALSE); - switch (status) { - /* Good result, continue on */ - case ARES_SUCCESS: - break; + /* UDP Here */ + status = ares_dns_write(query->query, &qbuf, &qbuf_len); + if (status != ARES_SUCCESS) { + return status; + } - /* These conditions are retryable as they are server-specific - * error codes */ - case ARES_ECONNREFUSED: - case ARES_EBADFAMILY: - server_increment_failures(server, query->using_tcp); - return ares__requeue_query(query, now, status); + len = ares__conn_write(conn, qbuf, qbuf_len); + ares_free(qbuf); - /* Anything else is not retryable, likely ENOMEM */ - default: - end_query(channel, server, query, status, NULL); - return status; - } - node = ares__llist_node_first(server->connections); + if (len == -1) { + if (ares__socket_try_again(SOCKERRNO)) { + return ARES_ESERVFAIL; } + /* UDP is connection-less, but we might receive an ICMP unreachable which + * means we can't talk to the remote host at all and that will be + * reflected here */ + return ARES_ECONNREFUSED; + } - conn = ares__llist_node_val(node); + return ARES_SUCCESS; +} - status = ares__write_udpbuf(channel, conn->fd, query); - if (status != ARES_SUCCESS) { - if (status == ARES_ENOMEM) { - /* Not retryable */ - end_query(channel, server, query, status, NULL); - return status; - } +ares_status_t ares__send_query(ares_query_t *query, const ares_timeval_t *now) +{ + ares_channel_t *channel = query->channel; + ares_server_t *server; + ares_conn_t *conn; + size_t timeplus; + ares_status_t status; - if (status == ARES_ECONNREFUSED) { - handle_conn_error(conn, ARES_TRUE, status); + /* Choose the server to send the query to */ + if (channel->rotate) { + /* Pull random server */ + server = ares__random_server(channel); + } else { + /* Pull server with failover behavior */ + server = ares__failover_server(channel); + } - /* This query wasn't yet bound to the connection, need to manually - * requeue it and return an appropriate error */ - status = ares__requeue_query(query, now, status); - if (status == ARES_ETIMEOUT) { - status = ARES_ECONNREFUSED; - } + if (server == NULL) { + end_query(channel, server, query, ARES_ENOSERVER /* ? */, NULL); + return ARES_ENOSERVER; + } + + conn = ares__fetch_connection(channel, server, query); + if (conn == NULL) { + status = ares__open_connection(&conn, channel, server, query->using_tcp); + switch (status) { + /* Good result, continue on */ + case ARES_SUCCESS: + break; + + /* These conditions are retryable as they are server-specific + * error codes */ + case ARES_ECONNREFUSED: + case ARES_EBADFAMILY: + server_increment_failures(server, query->using_tcp); + return ares__requeue_query(query, now, status, ARES_TRUE); + + /* Anything else is not retryable, likely ENOMEM */ + default: + end_query(channel, server, query, status, NULL); return status; - } + } + } - /* FIXME: Handle EAGAIN here since it likely can happen. Right now we - * just requeue to a different server/connection. */ - server_increment_failures(server, query->using_tcp); - status = ares__requeue_query(query, now, status); + /* Write the query */ + status = ares__conn_query_write(conn, query, now); + switch (status) { + /* Good result, continue on */ + case ARES_SUCCESS: + break; - /* Only safe to kill connection if it was new, otherwise it should be - * cleaned up by another process later */ - if (new_connection) { - ares__close_connection(conn, status); + case ARES_ENOMEM: + /* Not retryable */ + end_query(channel, server, query, status, NULL); + return status; + + /* These conditions are retryable as they are server-specific + * error codes */ + case ARES_ECONNREFUSED: + case ARES_EBADFAMILY: + handle_conn_error(conn, ARES_TRUE, status); + status = ares__requeue_query(query, now, status, ARES_TRUE); + if (status == ARES_ETIMEOUT) { + status = ARES_ECONNREFUSED; } + return status; + /* FIXME: Handle EAGAIN here since it likely can happen. Right now we + * just requeue to a different server/connection. */ + default: + server_increment_failures(server, query->using_tcp); + status = ares__requeue_query(query, now, status, ARES_TRUE); return status; - } } timeplus = ares__calc_query_timeout(query, server, now); @@ -1190,11 +1131,6 @@ ares_status_t ares__send_query(struct query *query, const ares_timeval_t *now) if (!query->node_queries_by_timeout) { /* LCOV_EXCL_START: OutOfMemory */ end_query(channel, server, query, ARES_ENOMEM, NULL); - /* Only safe to kill connection if it was new, otherwise it should be - * cleaned up by another process later */ - if (new_connection) { - ares__close_connection(conn, ARES_SUCCESS); - } return ARES_ENOMEM; /* LCOV_EXCL_STOP */ } @@ -1208,11 +1144,6 @@ ares_status_t ares__send_query(struct query *query, const ares_timeval_t *now) if (query->node_queries_to_conn == NULL) { /* LCOV_EXCL_START: OutOfMemory */ end_query(channel, server, query, ARES_ENOMEM, NULL); - /* Only safe to kill connection if it was new, otherwise it should be - * cleaned up by another process later */ - if (new_connection) { - ares__close_connection(conn, ARES_SUCCESS); - } return ARES_ENOMEM; /* LCOV_EXCL_STOP */ } @@ -1222,7 +1153,7 @@ ares_status_t ares__send_query(struct query *query, const ares_timeval_t *now) return ARES_SUCCESS; } -static ares_bool_t same_questions(const struct query *query, +static ares_bool_t same_questions(const ares_query_t *query, const ares_dns_record_t *arec) { size_t i; @@ -1299,7 +1230,8 @@ static ares_bool_t same_address(const struct sockaddr *sa, break; case AF_INET6: addr1 = &aa->addr.addr6; - addr2 = &(CARES_INADDR_CAST(const struct sockaddr_in6 *, sa))->sin6_addr; + addr2 = + &(CARES_INADDR_CAST(const struct sockaddr_in6 *, sa))->sin6_addr; if (memcmp(addr1, addr2, sizeof(aa->addr.addr6)) == 0) { return ARES_TRUE; /* match */ } @@ -1311,17 +1243,17 @@ static ares_bool_t same_address(const struct sockaddr *sa, return ARES_FALSE; /* different */ } -static void ares_detach_query(struct query *query) +static void ares_detach_query(ares_query_t *query) { /* Remove the query from all the lists in which it is linked */ ares__query_disassociate_from_conn(query); ares__htable_szvp_remove(query->channel->queries_by_qid, query->qid); ares__llist_node_destroy(query->node_all_queries); - query->node_all_queries = NULL; + query->node_all_queries = NULL; } -static void end_query(ares_channel_t *channel, struct server_state *server, - struct query *query, ares_status_t status, +static void end_query(ares_channel_t *channel, ares_server_t *server, + ares_query_t *query, ares_status_t status, const ares_dns_record_t *dnsrec) { ares_metrics_record(query, server, status, dnsrec); @@ -1338,7 +1270,7 @@ static void end_query(ares_channel_t *channel, struct server_state *server, ares_queue_notify_empty(channel); } -void ares__free_query(struct query *query) +void ares__free_query(ares_query_t *query) { ares_detach_query(query); /* Zero out some important stuff, to help catch bugs */ diff --git a/lib/c-ares-1.32.3/src/lib/ares_qcache.c b/lib/c-ares-1.33.0/src/lib/ares_qcache.c similarity index 98% rename from lib/c-ares-1.32.3/src/lib/ares_qcache.c rename to lib/c-ares-1.33.0/src/lib/ares_qcache.c index 2d9919fd104..aee1328b51c 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_qcache.c +++ b/lib/c-ares-1.33.0/src/lib/ares_qcache.c @@ -300,10 +300,10 @@ static unsigned int ares__qcache_soa_minimum(ares_dns_record_t *dnsrec) } /* On success, takes ownership of dnsrec */ -static ares_status_t ares__qcache_insert(ares__qcache_t *qcache, - ares_dns_record_t *qresp, - const ares_dns_record_t *qreq, - const ares_timeval_t *now) +static ares_status_t ares__qcache_insert(ares__qcache_t *qcache, + ares_dns_record_t *qresp, + const ares_dns_record_t *qreq, + const ares_timeval_t *now) { ares__qcache_entry_t *entry; unsigned int ttl; @@ -422,9 +422,8 @@ ares_status_t ares_qcache_fetch(ares_channel_t *channel, ares_status_t ares_qcache_insert(ares_channel_t *channel, const ares_timeval_t *now, - const struct query *query, + const ares_query_t *query, ares_dns_record_t *dnsrec) { - return ares__qcache_insert(channel->qcache, dnsrec, query->query, - now); + return ares__qcache_insert(channel->qcache, dnsrec, query->query, now); } diff --git a/lib/c-ares-1.32.3/src/lib/ares_query.c b/lib/c-ares-1.33.0/src/lib/ares_query.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_query.c rename to lib/c-ares-1.33.0/src/lib/ares_query.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_search.c b/lib/c-ares-1.33.0/src/lib/ares_search.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_search.c rename to lib/c-ares-1.33.0/src/lib/ares_search.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_send.c b/lib/c-ares-1.33.0/src/lib/ares_send.c similarity index 92% rename from lib/c-ares-1.32.3/src/lib/ares_send.c rename to lib/c-ares-1.33.0/src/lib/ares_send.c index e07ef5b51fe..94415344049 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_send.c +++ b/lib/c-ares-1.33.0/src/lib/ares_send.c @@ -43,13 +43,12 @@ static unsigned short generate_unique_qid(ares_channel_t *channel) return id; } - /* https://datatracker.ietf.org/doc/html/draft-vixie-dnsext-dns0x20-00 */ -static ares_status_t ares_apply_dns0x20(ares_channel_t *channel, +static ares_status_t ares_apply_dns0x20(ares_channel_t *channel, ares_dns_record_t *dnsrec) { - ares_status_t status = ARES_SUCCESS; - const char *name = NULL; + ares_status_t status = ARES_SUCCESS; + const char *name = NULL; char dns0x20name[256]; unsigned char randdata[256 / 8]; size_t len; @@ -72,16 +71,16 @@ static ares_status_t ares_apply_dns0x20(ares_channel_t *channel, /* Fetch the minimum amount of random data we'd need for the string, which * is 1 bit per byte */ - total_bits = ((len + 7) / 8) * 8; + total_bits = ((len + 7) / 8) * 8; remaining_bits = total_bits; ares__rand_bytes(channel->rand_state, randdata, total_bits / 8); /* Randomly apply 0x20 to name */ - for (i=0; iqid = id; query->timeout.sec = 0; query->timeout.usec = 0; - query->using_tcp = (channel->flags & ARES_FLAG_USEVC)?ARES_TRUE:ARES_FALSE; + query->using_tcp = + (channel->flags & ARES_FLAG_USEVC) ? ARES_TRUE : ARES_FALSE; /* Duplicate Query */ status = ares_dns_record_duplicate_ex(&query->query, dnsrec); diff --git a/lib/c-ares-1.32.3/src/lib/ares_setup.h b/lib/c-ares-1.33.0/src/lib/ares_setup.h similarity index 79% rename from lib/c-ares-1.32.3/src/lib/ares_setup.h rename to lib/c-ares-1.33.0/src/lib/ares_setup.h index 1b554f1974c..b6ce077ff64 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_setup.h +++ b/lib/c-ares-1.33.0/src/lib/ares_setup.h @@ -231,95 +231,6 @@ struct timeval { }; #endif - -/* - * If we have the MSG_NOSIGNAL define, make sure we use - * it as the fourth argument of function send() - */ - -#ifdef HAVE_MSG_NOSIGNAL -# define SEND_4TH_ARG MSG_NOSIGNAL -#else -# define SEND_4TH_ARG 0 -#endif - - -#if defined(__minix) -/* Minix doesn't support recv on TCP sockets */ -# define sread(x, y, z) \ - (ares_ssize_t) \ - read((RECV_TYPE_ARG1)(x), (RECV_TYPE_ARG2)(y), (RECV_TYPE_ARG3)(z)) - -#elif defined(HAVE_RECV) -/* - * The definitions for the return type and arguments types - * of functions recv() and send() belong and come from the - * configuration file. Do not define them in any other place. - * - * HAVE_RECV is defined if you have a function named recv() - * which is used to read incoming data from sockets. If your - * function has another name then don't define HAVE_RECV. - * - * If HAVE_RECV is defined then RECV_TYPE_ARG1, RECV_TYPE_ARG2, - * RECV_TYPE_ARG3, RECV_TYPE_ARG4 and RECV_TYPE_RETV must also - * be defined. - * - * HAVE_SEND is defined if you have a function named send() - * which is used to write outgoing data on a connected socket. - * If yours has another name then don't define HAVE_SEND. - * - * If HAVE_SEND is defined then SEND_TYPE_ARG1, - * SEND_TYPE_ARG2, SEND_TYPE_ARG3, SEND_TYPE_ARG4 and - * SEND_TYPE_RETV must also be defined. - */ - -# if !defined(RECV_TYPE_ARG1) || !defined(RECV_TYPE_ARG2) || \ - !defined(RECV_TYPE_ARG3) || !defined(RECV_TYPE_ARG4) || \ - !defined(RECV_TYPE_RETV) -/* */ -Error Missing_definition_of_return_and_arguments_types_of_recv -/* */ -# else -# define sread(x, y, z) \ - (ares_ssize_t) recv((RECV_TYPE_ARG1)(x), (RECV_TYPE_ARG2)(y), \ - (RECV_TYPE_ARG3)(z), (RECV_TYPE_ARG4)(0)) -# endif -#else /* HAVE_RECV */ -# ifndef sread -/* */ -Error Missing_definition_of_macro_sread -/* */ -# endif -#endif /* HAVE_RECV */ - - -#if defined(__minix) -/* Minix doesn't support send on TCP sockets */ -# define swrite(x, y, z) \ - (ares_ssize_t) \ - write((SEND_TYPE_ARG1)(x), (SEND_TYPE_ARG2)(y), (SEND_TYPE_ARG3)(z)) - -#elif defined(HAVE_SEND) -# if !defined(SEND_TYPE_ARG1) || \ - !defined(SEND_TYPE_ARG2) || !defined(SEND_TYPE_ARG3) || \ - !defined(SEND_TYPE_ARG4) || !defined(SEND_TYPE_RETV) - /* */ - Error Missing_definition_of_return_and_arguments_types_of_send -/* */ -# else -# define swrite(x, y, z) \ - (ares_ssize_t) send((SEND_TYPE_ARG1)(x), (SEND_TYPE_ARG2)(y), \ - (SEND_TYPE_ARG3)(z), (SEND_TYPE_ARG4)(SEND_4TH_ARG)) -# endif -#else /* HAVE_SEND */ -# ifndef swrite - /* */ - Error Missing_definition_of_macro_swrite -/* */ -# endif -#endif /* HAVE_SEND */ - - /* * Function-like macro definition used to close a socket. */ @@ -343,7 +254,7 @@ Error Missing_definition_of_macro_sread #else # define DEBUGF(x) \ do { \ - } while(0) + } while (0) #endif /* diff --git a/lib/c-ares-1.32.3/src/lib/ares_strerror.c b/lib/c-ares-1.33.0/src/lib/ares_strerror.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_strerror.c rename to lib/c-ares-1.33.0/src/lib/ares_strerror.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_sysconfig.c b/lib/c-ares-1.33.0/src/lib/ares_sysconfig.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_sysconfig.c rename to lib/c-ares-1.33.0/src/lib/ares_sysconfig.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_sysconfig_files.c b/lib/c-ares-1.33.0/src/lib/ares_sysconfig_files.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_sysconfig_files.c rename to lib/c-ares-1.33.0/src/lib/ares_sysconfig_files.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_sysconfig_mac.c b/lib/c-ares-1.33.0/src/lib/ares_sysconfig_mac.c similarity index 92% rename from lib/c-ares-1.32.3/src/lib/ares_sysconfig_mac.c rename to lib/c-ares-1.33.0/src/lib/ares_sysconfig_mac.c index e2136201f68..38ac451ca5f 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_sysconfig_mac.c +++ b/lib/c-ares-1.33.0/src/lib/ares_sysconfig_mac.c @@ -115,11 +115,11 @@ static ares_status_t dnsinfo_init(dnsinfo_t **dnsinfo_out) continue; } - dnsinfo->dns_configuration_copy = (dns_config_t *(*)(void)) + dnsinfo->dns_configuration_copy = (dns_config_t * (*)(void)) dlsym(dnsinfo->handle, "dns_configuration_copy"); - dnsinfo->dns_configuration_free = (void (*)(dns_config_t *)) - dlsym(dnsinfo->handle, "dns_configuration_free"); + dnsinfo->dns_configuration_free = (void (*)(dns_config_t *))dlsym( + dnsinfo->handle, "dns_configuration_free"); if (dnsinfo->dns_configuration_copy != NULL && dnsinfo->dns_configuration_free != NULL) { @@ -274,25 +274,7 @@ static ares_status_t read_resolver(const dns_resolver_t *resolver, /* UBSAN alignment workaround to fetch memory address */ memcpy(&sockaddr, resolver->nameserver + i, sizeof(sockaddr)); - if (sockaddr->sa_family == AF_INET) { - /* NOTE: memcpy sockaddr_in due to alignment issues found by UBSAN due to - * dnsinfo packing */ - struct sockaddr_in addr_in; - memcpy(&addr_in, sockaddr, sizeof(addr_in)); - - addr.family = AF_INET; - memcpy(&addr.addr.addr4, &(addr_in.sin_addr), sizeof(addr.addr.addr4)); - addrport = ntohs(addr_in.sin_port); - } else if (sockaddr->sa_family == AF_INET6) { - /* NOTE: memcpy sockaddr_in6 due to alignment issues found by UBSAN due to - * dnsinfo packing */ - struct sockaddr_in6 addr_in6; - memcpy(&addr_in6, sockaddr, sizeof(addr_in6)); - - addr.family = AF_INET6; - memcpy(&addr.addr.addr6, &(addr_in6.sin6_addr), sizeof(addr.addr.addr6)); - addrport = ntohs(addr_in6.sin6_port); - } else { + if (!ares_sockaddr_to_ares_addr(&addr, &addrport, sockaddr)) { continue; } diff --git a/lib/c-ares-1.32.3/src/lib/ares_sysconfig_win.c b/lib/c-ares-1.33.0/src/lib/ares_sysconfig_win.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_sysconfig_win.c rename to lib/c-ares-1.33.0/src/lib/ares_sysconfig_win.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_timeout.c b/lib/c-ares-1.33.0/src/lib/ares_timeout.c similarity index 88% rename from lib/c-ares-1.32.3/src/lib/ares_timeout.c rename to lib/c-ares-1.33.0/src/lib/ares_timeout.c index dac439b1b43..5ed8b553a3c 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_timeout.c +++ b/lib/c-ares-1.33.0/src/lib/ares_timeout.c @@ -65,7 +65,8 @@ void ares__timeval_diff(ares_timeval_t *tvdiff, const ares_timeval_t *tvstart, } } -static void ares_timeval_to_struct_timeval(struct timeval *tv, const ares_timeval_t *atv) +static void ares_timeval_to_struct_timeval(struct timeval *tv, + const ares_timeval_t *atv) { #ifdef USE_WINSOCK tv->tv_sec = (long)atv->sec; @@ -76,17 +77,18 @@ static void ares_timeval_to_struct_timeval(struct timeval *tv, const ares_timeva tv->tv_usec = (int)atv->usec; } -static void struct_timeval_to_ares_timeval(ares_timeval_t *atv, const struct timeval *tv) +static void struct_timeval_to_ares_timeval(ares_timeval_t *atv, + const struct timeval *tv) { atv->sec = (ares_int64_t)tv->tv_sec; atv->usec = (unsigned int)tv->tv_usec; } static struct timeval *ares_timeout_int(const ares_channel_t *channel, - struct timeval *maxtv, - struct timeval *tvbuf) + struct timeval *maxtv, + struct timeval *tvbuf) { - const struct query *query; + const ares_query_t *query; ares__slist_node_t *node; ares_timeval_t now; ares_timeval_t atvbuf; @@ -135,8 +137,9 @@ struct timeval *ares_timeout(const ares_channel_t *channel, { struct timeval *rv; - if (channel == NULL || tvbuf == NULL) + if (channel == NULL || tvbuf == NULL) { return NULL; + } ares__channel_lock(channel); diff --git a/lib/c-ares-1.32.3/src/lib/ares_update_servers.c b/lib/c-ares-1.33.0/src/lib/ares_update_servers.c similarity index 97% rename from lib/c-ares-1.32.3/src/lib/ares_update_servers.c rename to lib/c-ares-1.33.0/src/lib/ares_update_servers.c index 455e3001d5c..639f79d8159 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_update_servers.c +++ b/lib/c-ares-1.33.0/src/lib/ares_update_servers.c @@ -525,7 +525,7 @@ static ares__slist_node_t *ares__server_find(ares_channel_t *channel, for (node = ares__slist_node_first(channel->servers); node != NULL; node = ares__slist_node_next(node)) { - const struct server_state *server = ares__slist_node_val(node); + const ares_server_t *server = ares__slist_node_val(node); if (!ares__addr_match(&server->addr, &s->addr)) { continue; @@ -579,8 +579,8 @@ static ares_status_t ares__server_create(ares_channel_t *channel, const ares_sconfig_t *sconfig, size_t idx) { - ares_status_t status; - struct server_state *server = ares_malloc_zero(sizeof(*server)); + ares_status_t status; + ares_server_t *server = ares_malloc_zero(sizeof(*server)); if (server == NULL) { return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ @@ -641,8 +641,8 @@ static ares_status_t ares__server_create(ares_channel_t *channel, return status; } -static ares_bool_t ares__server_in_newconfig(const struct server_state *server, - ares__llist_t *srvlist) +static ares_bool_t ares__server_in_newconfig(const ares_server_t *server, + ares__llist_t *srvlist) { ares__llist_node_t *node; const ares_channel_t *channel = server->channel; @@ -676,8 +676,8 @@ static ares_bool_t ares__servers_remove_stale(ares_channel_t *channel, ares__slist_node_t *snode = ares__slist_node_first(channel->servers); while (snode != NULL) { - ares__slist_node_t *snext = ares__slist_node_next(snode); - const struct server_state *server = ares__slist_node_val(snode); + ares__slist_node_t *snext = ares__slist_node_next(snode); + const ares_server_t *server = ares__slist_node_val(snode); if (!ares__server_in_newconfig(server, srvlist)) { /* This will clean up all server state via the destruction callback and * move any queries to new servers */ @@ -726,7 +726,7 @@ ares_status_t ares__servers_update(ares_channel_t *channel, snode = ares__server_find(channel, sconfig); if (snode != NULL) { - struct server_state *server = ares__slist_node_val(snode); + ares_server_t *server = ares__slist_node_val(snode); /* Copy over link-local settings. Its possible some of this data has * changed, maybe ... */ @@ -928,8 +928,8 @@ ares_status_t ares_in_addr_to_server_config_llist(const struct in_addr *servers, } /* Write out the details of a server to a buffer */ -ares_status_t ares_get_server_addr(const struct server_state *server, - ares__buf_t *buf) +ares_status_t ares_get_server_addr(const ares_server_t *server, + ares__buf_t *buf) { ares_status_t status; char addr[INET6_ADDRSTRLEN]; @@ -1000,7 +1000,7 @@ int ares_get_servers(const ares_channel_t *channel, for (node = ares__slist_node_first(channel->servers); node != NULL; node = ares__slist_node_next(node)) { - const struct server_state *server = ares__slist_node_val(node); + const ares_server_t *server = ares__slist_node_val(node); /* Allocate storage for this server node appending it to the list */ srvr_curr = ares_malloc_data(ARES_DATATYPE_ADDR_NODE); @@ -1055,7 +1055,7 @@ int ares_get_servers_ports(const ares_channel_t *channel, for (node = ares__slist_node_first(channel->servers); node != NULL; node = ares__slist_node_next(node)) { - const struct server_state *server = ares__slist_node_val(node); + const ares_server_t *server = ares__slist_node_val(node); /* Allocate storage for this server node appending it to the list */ srvr_curr = ares_malloc_data(ARES_DATATYPE_ADDR_PORT_NODE); @@ -1203,8 +1203,8 @@ char *ares_get_servers_csv(const ares_channel_t *channel) for (node = ares__slist_node_first(channel->servers); node != NULL; node = ares__slist_node_next(node)) { - ares_status_t status; - const struct server_state *server = ares__slist_node_val(node); + ares_status_t status; + const ares_server_t *server = ares__slist_node_val(node); if (ares__buf_len(buf)) { status = ares__buf_append_byte(buf, ','); diff --git a/lib/c-ares-1.32.3/src/lib/ares_version.c b/lib/c-ares-1.33.0/src/lib/ares_version.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_version.c rename to lib/c-ares-1.33.0/src/lib/ares_version.c diff --git a/lib/c-ares-1.32.3/src/lib/cares.rc b/lib/c-ares-1.33.0/src/lib/cares.rc similarity index 100% rename from lib/c-ares-1.32.3/src/lib/cares.rc rename to lib/c-ares-1.33.0/src/lib/cares.rc diff --git a/lib/c-ares-1.32.3/src/lib/config-dos.h b/lib/c-ares-1.33.0/src/lib/config-dos.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/config-dos.h rename to lib/c-ares-1.33.0/src/lib/config-dos.h diff --git a/lib/c-ares-1.32.3/src/lib/config-win32.h b/lib/c-ares-1.33.0/src/lib/config-win32.h similarity index 98% rename from lib/c-ares-1.32.3/src/lib/config-win32.h rename to lib/c-ares-1.33.0/src/lib/config-win32.h index da5c7483879..b9c4ec17336 100644 --- a/lib/c-ares-1.32.3/src/lib/config-win32.h +++ b/lib/c-ares-1.33.0/src/lib/config-win32.h @@ -352,6 +352,9 @@ # define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1 #endif +/* Define to 1 if you have the `RegisterWaitForSingleObject' function. */ +#define HAVE_REGISTERWAITFORSINGLEOBJECT 1 + #if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) && \ !defined(__WATCOMC__) && !defined(WATT32) /* Define if you have if_nametoindex() */ @@ -362,6 +365,8 @@ # define HAVE_CONVERTINTERFACEINDEXTOLUID 1 /* Define to 1 if you have the `ConvertInterfaceLuidToNameA' function. */ # define HAVE_CONVERTINTERFACELUIDTONAMEA 1 +/* Define to 1 if you have the `NotifyIpInterfaceChange' function. */ +# define HAVE_NOTIFYIPINTERFACECHANGE 1 #endif /* ---------------------------------------------------------------- */ diff --git a/lib/c-ares-1.33.0/src/lib/dsa/ares__array.c b/lib/c-ares-1.33.0/src/lib/dsa/ares__array.c new file mode 100644 index 00000000000..0c724248bf2 --- /dev/null +++ b/lib/c-ares-1.33.0/src/lib/dsa/ares__array.c @@ -0,0 +1,356 @@ +/* MIT License + * + * Copyright (c) 2024 Brad House + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * SPDX-License-Identifier: MIT + */ +#include "ares_private.h" +#include "ares__array.h" + +#define ARES__ARRAY_MIN 4 + +struct ares__array { + ares__array_destructor_t destruct; + void *arr; + size_t member_size; + size_t cnt; + size_t offset; + size_t alloc_cnt; +}; + +ares__array_t *ares__array_create(size_t member_size, + ares__array_destructor_t destruct) +{ + ares__array_t *arr; + + if (member_size == 0) { + return NULL; + } + + arr = ares_malloc_zero(sizeof(*arr)); + if (arr == NULL) { + return NULL; + } + + arr->member_size = member_size; + arr->destruct = destruct; + return arr; +} + +size_t ares__array_len(const ares__array_t *arr) +{ + if (arr == NULL) { + return 0; + } + return arr->cnt; +} + +void *ares__array_at(ares__array_t *arr, size_t idx) +{ + if (arr == NULL || idx >= arr->cnt) { + return NULL; + } + return (unsigned char *)arr->arr + ((idx + arr->offset) * arr->member_size); +} + +const void *ares__array_at_const(const ares__array_t *arr, size_t idx) +{ + if (arr == NULL || idx >= arr->cnt) { + return NULL; + } + return (unsigned char *)arr->arr + ((idx + arr->offset) * arr->member_size); +} + +ares_status_t ares__array_sort(ares__array_t *arr, ares__array_cmp_t cmp) +{ + if (arr == NULL || cmp == NULL) { + return ARES_EFORMERR; + } + + /* Nothing to sort */ + if (arr->cnt < 2) { + return ARES_SUCCESS; + } + + qsort((unsigned char *)arr->arr + (arr->offset * arr->member_size), arr->cnt, + arr->member_size, cmp); + return ARES_SUCCESS; +} + +void ares__array_destroy(ares__array_t *arr) +{ + size_t i; + + if (arr == NULL) { + return; + } + + if (arr->destruct != NULL) { + for (i = 0; i < arr->cnt; i++) { + arr->destruct(ares__array_at(arr, i)); + } + } + + ares_free(arr->arr); + ares_free(arr); +} + +/* NOTE: this function operates on actual indexes, NOT indexes using the + * arr->offset */ +static ares_status_t ares__array_move(ares__array_t *arr, size_t dest_idx, + size_t src_idx) +{ + void *dest_ptr; + const void *src_ptr; + size_t nmembers; + + if (arr == NULL || dest_idx >= arr->alloc_cnt || src_idx >= arr->alloc_cnt) { + return ARES_EFORMERR; + } + + /* Nothing to do */ + if (dest_idx == src_idx) { + return ARES_SUCCESS; + } + + dest_ptr = (unsigned char *)arr->arr + (dest_idx * arr->member_size); + src_ptr = (unsigned char *)arr->arr + (src_idx * arr->member_size); + + /* Check to make sure shifting to the right won't overflow our allocation + * boundary */ + if (dest_idx > src_idx && arr->cnt + (dest_idx - src_idx) > arr->alloc_cnt) { + return ARES_EFORMERR; + } + if (dest_idx < src_idx) { + nmembers = arr->cnt - dest_idx; + } else { + nmembers = arr->cnt - src_idx; + } + + memmove(dest_ptr, src_ptr, nmembers * arr->member_size); + + return ARES_SUCCESS; +} + +void *ares__array_finish(ares__array_t *arr, size_t *num_members) +{ + void *ptr; + + if (arr == NULL || num_members == NULL) { + return NULL; + } + + /* Make sure we move data to beginning of allocation */ + if (arr->offset != 0) { + if (ares__array_move(arr, 0, arr->offset) != ARES_SUCCESS) { + return NULL; + } + arr->offset = 0; + } + + ptr = arr->arr; + *num_members = arr->cnt; + ares_free(arr); + return ptr; +} + +ares_status_t ares__array_set_size(ares__array_t *arr, size_t size) +{ + void *temp; + + if (arr == NULL || size == 0 || size < arr->cnt) { + return ARES_EFORMERR; + } + + /* Always operate on powers of 2 */ + size = ares__round_up_pow2(size); + + if (size < ARES__ARRAY_MIN) { + size = ARES__ARRAY_MIN; + } + + /* If our allocation size is already large enough, skip */ + if (size <= arr->alloc_cnt) { + return ARES_SUCCESS; + } + + temp = ares_realloc_zero(arr->arr, arr->alloc_cnt * arr->member_size, + size * arr->member_size); + if (temp == NULL) { + return ARES_ENOMEM; + } + arr->alloc_cnt = size; + arr->arr = temp; + return ARES_SUCCESS; +} + +ares_status_t ares__array_insert_at(void **elem_ptr, ares__array_t *arr, + size_t idx) +{ + void *ptr; + ares_status_t status; + + if (arr == NULL) { + return ARES_EFORMERR; + } + + /* Not >= since we are allowed to append to the end */ + if (idx > arr->cnt) { + return ARES_EFORMERR; + } + + /* Allocate more if needed */ + status = ares__array_set_size(arr, arr->cnt + 1); + if (status != ARES_SUCCESS) { + return status; + } + + /* Shift if we have memory but not enough room at the end */ + if (arr->cnt + 1 + arr->offset > arr->alloc_cnt) { + status = ares__array_move(arr, 0, arr->offset); + if (status != ARES_SUCCESS) { + return status; + } + arr->offset = 0; + } + + /* If we're inserting anywhere other than the end, we need to move some + * elements out of the way */ + if (idx != arr->cnt) { + status = ares__array_move(arr, idx + arr->offset + 1, idx + arr->offset); + if (status != ARES_SUCCESS) { + return status; + } + } + + /* Ok, we're guaranteed to have a gap where we need it, lets zero it out, + * and return it */ + ptr = (unsigned char *)arr->arr + ((idx + arr->offset) * arr->member_size); + memset(ptr, 0, arr->member_size); + arr->cnt++; + + if (elem_ptr) { + *elem_ptr = ptr; + } + + return ARES_SUCCESS; +} + +ares_status_t ares__array_insert_last(void **elem_ptr, ares__array_t *arr) +{ + return ares__array_insert_at(elem_ptr, arr, ares__array_len(arr)); +} + +ares_status_t ares__array_insert_first(void **elem_ptr, ares__array_t *arr) +{ + return ares__array_insert_at(elem_ptr, arr, 0); +} + +void *ares__array_first(ares__array_t *arr) +{ + return ares__array_at(arr, 0); +} + +void *ares__array_last(ares__array_t *arr) +{ + size_t cnt = ares__array_len(arr); + if (cnt == 0) { + return NULL; + } + return ares__array_at(arr, cnt - 1); +} + +const void *ares__array_first_const(const ares__array_t *arr) +{ + return ares__array_at_const(arr, 0); +} + +const void *ares__array_last_const(const ares__array_t *arr) +{ + size_t cnt = ares__array_len(arr); + if (cnt == 0) { + return NULL; + } + return ares__array_at_const(arr, cnt - 1); +} + +ares_status_t ares__array_claim_at(void *dest, size_t dest_size, + ares__array_t *arr, size_t idx) +{ + ares_status_t status; + + if (arr == NULL || idx >= arr->cnt) { + return ARES_EFORMERR; + } + + if (dest != NULL && dest_size < arr->member_size) { + return ARES_EFORMERR; + } + + if (dest) { + memcpy(dest, ares__array_at(arr, idx), arr->member_size); + } + + if (idx == 0) { + /* Optimization, if first element, just increment offset, makes removing a + * lot from the start quick */ + arr->offset++; + } else if (idx != arr->cnt - 1) { + /* Must shift entire array if removing an element from the middle. Does + * nothing if removing last element other than decrement count. */ + status = ares__array_move(arr, idx + arr->offset, idx + arr->offset + 1); + if (status != ARES_SUCCESS) { + return status; + } + } + + arr->cnt--; + return ARES_SUCCESS; +} + +ares_status_t ares__array_remove_at(ares__array_t *arr, size_t idx) +{ + void *ptr = ares__array_at(arr, idx); + if (arr == NULL || ptr == NULL) { + return ARES_EFORMERR; + } + + if (arr->destruct != NULL) { + arr->destruct(ptr); + } + + return ares__array_claim_at(NULL, 0, arr, idx); +} + +ares_status_t ares__array_remove_first(ares__array_t *arr) +{ + return ares__array_remove_at(arr, 0); +} + +ares_status_t ares__array_remove_last(ares__array_t *arr) +{ + size_t cnt = ares__array_len(arr); + if (cnt == 0) { + return ARES_EFORMERR; + } + return ares__array_remove_at(arr, cnt - 1); +} diff --git a/lib/c-ares-1.33.0/src/lib/dsa/ares__array.h b/lib/c-ares-1.33.0/src/lib/dsa/ares__array.h new file mode 100644 index 00000000000..6fa1c0e15e9 --- /dev/null +++ b/lib/c-ares-1.33.0/src/lib/dsa/ares__array.h @@ -0,0 +1,223 @@ +/* MIT License + * + * Copyright (c) 2024 Brad House + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * SPDX-License-Identifier: MIT + */ +#ifndef __ARES__ARRAY_H +#define __ARES__ARRAY_H + +/*! \addtogroup ares__array Array Data Structure + * + * This is an array with helpers. It is meant to have as little overhead + * as possible over direct array management by applications but to provide + * safety and some optimization features. It can also return the array in + * native form once all manipulation has been performed. + * + * @{ + */ + +struct ares__array; + +/*! Opaque data structure for array */ +typedef struct ares__array ares__array_t; + +/*! Callback to free user-defined member data + * + * \param[in] data pointer to member of array to be destroyed. The pointer + * itself must not be destroyed, just the data it contains. + */ +typedef void (*ares__array_destructor_t)(void *data); + +/*! Callback to compare two array elements used for sorting + * + * \param[in] data1 array member 1 + * \param[in] data2 array member 2 + * \return < 0 if data1 < data2, > 0 if data1 > data2, 0 if data1 == data2 + */ +typedef int (*ares__array_cmp_t)(const void *data1, const void *data2); + +/*! Create an array object + * + * NOTE: members of the array are typically going to be an going to be a + * struct with compiler/ABI specific padding to ensure proper alignment. + * Care needs to be taken if using primitive types, especially floating + * point numbers which size may not indicate the required alignment. + * For example, a double may be 80 bits (10 bytes), but required + * alignment of 16 bytes. In such a case, a member_size of 16 would be + * required to be used. + * + * \param[in] destruct Optional. Destructor to call on a removed member + * \param[in] member_size Size of array member, usually determined using + * sizeof() for the member such as a struct. + * + * \return array object or NULL on out of memory + */ +ares__array_t *ares__array_create(size_t member_size, + ares__array_destructor_t destruct); + + +/*! Request the array be at least the requested size. Useful if the desired + * array size is known prior to populating the array to prevent reallocations. + * + * \param[in] arr Initialized array object. + * \param[in] size Minimum number of members + * \return ARES_SUCCESS on success, ARES_EFORMERR on misuse, + * ARES_ENOMEM on out of memory */ +ares_status_t ares__array_set_size(ares__array_t *arr, size_t size); + +/*! Sort the array using the given comparison function. This is not + * persistent, any future elements inserted will not maintain this sort. + * + * \param[in] arr Initialized array object. + * \param[in] cb Sort callback + * \return ARES_SUCCESS on success + */ +ares_status_t ares__array_sort(ares__array_t *arr, ares__array_cmp_t cmp); + +/*! Destroy an array object. If a destructor is set, will be called on each + * member of the array. + * + * \param[in] arr Initialized array object. + */ +void ares__array_destroy(ares__array_t *arr); + +/*! Retrieve the array in the native format. This will also destroy the + * container. It is the responsibility of the caller to free the returned + * pointer and also any data within each array element. + * + * \param[in] arr Initialized array object + * \param[out] num_members the number of members in the returned array + * \return pointer to native array on success, NULL on failure. + */ +void *ares__array_finish(ares__array_t *arr, size_t *num_members); + +/*! Retrieve the number of members in the array + * + * \param[in] arr Initialized array object. + * \return numbrer of members + */ +size_t ares__array_len(const ares__array_t *arr); + +/*! Insert a new array member at the given index + * + * \param[out] elem_ptr Optional. Pointer to the returned array element. + * \param[in] arr Initialized array object. + * \param[in] idx Index in array to place new element, will shift any + * elements down that exist after this point. + * \return ARES_SUCCESS on success, ARES_EFORMERR on bad index, + * ARES_ENOMEM on out of memory. + */ +ares_status_t ares__array_insert_at(void **elem_ptr, ares__array_t *arr, + size_t idx); + +/*! Insert a new array member at the end of the array + * + * \param[out] elem_ptr Optional. Pointer to the returned array element. + * \param[in] arr Initialized array object. + * \return ARES_SUCCESS on success, ARES_ENOMEM on out of memory. + */ +ares_status_t ares__array_insert_last(void **elem_ptr, ares__array_t *arr); + +/*! Insert a new array member at the beginning of the array + * + * \param[out] elem_ptr Optional. Pointer to the returned array element. + * \param[in] arr Initialized array object. + * \return ARES_SUCCESS on success, ARES_ENOMEM on out of memory. + */ +ares_status_t ares__array_insert_first(void **elem_ptr, ares__array_t *arr); + +/*! Fetch a pointer to the given element in the array + * \param[in] array Initialized array object + * \param[in] idx Index to fetch + * \return pointer on success, NULL on failure */ +void *ares__array_at(ares__array_t *arr, size_t idx); + +/*! Fetch a pointer to the first element in the array + * \param[in] array Initialized array object + * \return pointer on success, NULL on failure */ +void *ares__array_first(ares__array_t *arr); + +/*! Fetch a pointer to the last element in the array + * \param[in] array Initialized array object + * \return pointer on success, NULL on failure */ +void *ares__array_last(ares__array_t *arr); + +/*! Fetch a constant pointer to the given element in the array + * \param[in] array Initialized array object + * \param[in] idx Index to fetch + * \return pointer on success, NULL on failure */ +const void *ares__array_at_const(const ares__array_t *arr, size_t idx); + +/*! Fetch a constant pointer to the first element in the array + * \param[in] array Initialized array object + * \return pointer on success, NULL on failure */ +const void *ares__array_first_const(const ares__array_t *arr); + +/*! Fetch a constant pointer to the last element in the array + * \param[in] array Initialized array object + * \return pointer on success, NULL on failure */ +const void *ares__array_last_const(const ares__array_t *arr); + +/*! Claim the data from the specified array index, copying it to the buffer + * provided by the caller. The index specified in the array will then be + * removed (without calling any possible destructor) + * + * \param[in,out] dest Optional. Buffer to hold array member. Pass NULL + * if not needed. This could leak memory if array + * member needs destructor if not provided. + * \param[in] dest_size Size of buffer provided, used as a sanity check. + * Must match member_size provided to + * ares__array_create() if dest_size specified. + * \param[in] arr Initialized array object + * \param[in] idx Index to claim + * \return ARES_SUCCESS on success, ARES_EFORMERR on usage failure. + */ +ares_status_t ares__array_claim_at(void *dest, size_t dest_size, + ares__array_t *arr, size_t idx); + +/*! Remove the member at the specified array index. The destructor will be + * called. + * + * \param[in] arr Initialized array object + * \param[in] idx Index to remove + * \return ARES_SUCCESS if removed, ARES_EFORMERR on invalid use + */ +ares_status_t ares__array_remove_at(ares__array_t *arr, size_t idx); + +/*! Remove the first member of the array. + * + * \param[in] arr Initialized array object + * \return ARES_SUCCESS if removed, ARES_EFORMERR on invalid use + */ +ares_status_t ares__array_remove_first(ares__array_t *arr); + +/*! Remove the last member of the array. + * + * \param[in] arr Initialized array object + * \return ARES_SUCCESS if removed, ARES_EFORMERR on invalid use + */ +ares_status_t ares__array_remove_last(ares__array_t *arr); + +/*! @} */ + +#endif /* __ARES__ARRAY_H */ diff --git a/lib/c-ares-1.32.3/src/lib/ares__htable.c b/lib/c-ares-1.33.0/src/lib/dsa/ares__htable.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__htable.c rename to lib/c-ares-1.33.0/src/lib/dsa/ares__htable.c diff --git a/lib/c-ares-1.32.3/src/lib/ares__htable.h b/lib/c-ares-1.33.0/src/lib/dsa/ares__htable.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__htable.h rename to lib/c-ares-1.33.0/src/lib/dsa/ares__htable.h diff --git a/lib/c-ares-1.32.3/src/lib/ares__htable_asvp.c b/lib/c-ares-1.33.0/src/lib/dsa/ares__htable_asvp.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__htable_asvp.c rename to lib/c-ares-1.33.0/src/lib/dsa/ares__htable_asvp.c diff --git a/lib/c-ares-1.32.3/src/lib/ares__htable_asvp.h b/lib/c-ares-1.33.0/src/lib/dsa/ares__htable_asvp.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__htable_asvp.h rename to lib/c-ares-1.33.0/src/lib/dsa/ares__htable_asvp.h diff --git a/lib/c-ares-1.32.3/src/lib/ares__htable_strvp.c b/lib/c-ares-1.33.0/src/lib/dsa/ares__htable_strvp.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__htable_strvp.c rename to lib/c-ares-1.33.0/src/lib/dsa/ares__htable_strvp.c diff --git a/lib/c-ares-1.32.3/src/lib/ares__htable_strvp.h b/lib/c-ares-1.33.0/src/lib/dsa/ares__htable_strvp.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__htable_strvp.h rename to lib/c-ares-1.33.0/src/lib/dsa/ares__htable_strvp.h diff --git a/lib/c-ares-1.32.3/src/lib/ares__htable_szvp.c b/lib/c-ares-1.33.0/src/lib/dsa/ares__htable_szvp.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__htable_szvp.c rename to lib/c-ares-1.33.0/src/lib/dsa/ares__htable_szvp.c diff --git a/lib/c-ares-1.32.3/src/lib/ares__htable_szvp.h b/lib/c-ares-1.33.0/src/lib/dsa/ares__htable_szvp.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__htable_szvp.h rename to lib/c-ares-1.33.0/src/lib/dsa/ares__htable_szvp.h diff --git a/lib/c-ares-1.32.3/src/lib/ares__htable_vpvp.c b/lib/c-ares-1.33.0/src/lib/dsa/ares__htable_vpvp.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__htable_vpvp.c rename to lib/c-ares-1.33.0/src/lib/dsa/ares__htable_vpvp.c diff --git a/lib/c-ares-1.32.3/src/lib/ares__htable_vpvp.h b/lib/c-ares-1.33.0/src/lib/dsa/ares__htable_vpvp.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__htable_vpvp.h rename to lib/c-ares-1.33.0/src/lib/dsa/ares__htable_vpvp.h diff --git a/lib/c-ares-1.32.3/src/lib/ares__llist.c b/lib/c-ares-1.33.0/src/lib/dsa/ares__llist.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__llist.c rename to lib/c-ares-1.33.0/src/lib/dsa/ares__llist.c diff --git a/lib/c-ares-1.32.3/src/lib/ares__llist.h b/lib/c-ares-1.33.0/src/lib/dsa/ares__llist.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__llist.h rename to lib/c-ares-1.33.0/src/lib/dsa/ares__llist.h diff --git a/lib/c-ares-1.32.3/src/lib/ares__slist.c b/lib/c-ares-1.33.0/src/lib/dsa/ares__slist.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__slist.c rename to lib/c-ares-1.33.0/src/lib/dsa/ares__slist.c diff --git a/lib/c-ares-1.32.3/src/lib/ares__slist.h b/lib/c-ares-1.33.0/src/lib/dsa/ares__slist.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__slist.h rename to lib/c-ares-1.33.0/src/lib/dsa/ares__slist.h diff --git a/lib/c-ares-1.32.3/src/lib/ares_event.h b/lib/c-ares-1.33.0/src/lib/event/ares_event.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_event.h rename to lib/c-ares-1.33.0/src/lib/event/ares_event.h diff --git a/lib/c-ares-1.32.3/src/lib/ares_event_configchg.c b/lib/c-ares-1.33.0/src/lib/event/ares_event_configchg.c similarity index 95% rename from lib/c-ares-1.32.3/src/lib/ares_event_configchg.c rename to lib/c-ares-1.33.0/src/lib/event/ares_event_configchg.c index 1d5d026ba39..030c76c69c9 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_event_configchg.c +++ b/lib/c-ares-1.33.0/src/lib/event/ares_event_configchg.c @@ -195,13 +195,14 @@ void ares_event_configchg_destroy(ares_event_configchg_t *configchg) return; } -# ifndef __WATCOMC__ +# ifdef HAVE_NOTIFYIPINTERFACECHANGE if (configchg->ifchg_hnd != NULL) { CancelMibChangeNotify2(configchg->ifchg_hnd); configchg->ifchg_hnd = NULL; } # endif +# ifdef HAVE_REGISTERWAITFORSINGLEOBJECT if (configchg->regip4_wait != NULL) { UnregisterWait(configchg->regip4_wait); configchg->regip4_wait = NULL; @@ -231,15 +232,15 @@ void ares_event_configchg_destroy(ares_event_configchg_t *configchg) CloseHandle(configchg->regip6_event); configchg->regip6_event = NULL; } +# endif ares_free(configchg); } -# ifndef __WATCOMC__ +# ifdef HAVE_NOTIFYIPINTERFACECHANGE static void NETIOAPI_API_ - ares_event_configchg_ip_cb(PVOID CallerContext, - PMIB_IPINTERFACE_ROW Row, + ares_event_configchg_ip_cb(PVOID CallerContext, PMIB_IPINTERFACE_ROW Row, MIB_NOTIFICATION_TYPE NotificationType) { ares_event_configchg_t *configchg = CallerContext; @@ -252,9 +253,10 @@ static void NETIOAPI_API_ static ares_bool_t ares_event_configchg_regnotify(ares_event_configchg_t *configchg) { -# if defined(__WATCOMC__) && !defined(REG_NOTIFY_THREAD_AGNOSTIC) -# define REG_NOTIFY_THREAD_AGNOSTIC 0x10000000L -# endif +# ifdef HAVE_REGISTERWAITFORSINGLEOBJECT +# if defined(__WATCOMC__) && !defined(REG_NOTIFY_THREAD_AGNOSTIC) +# define REG_NOTIFY_THREAD_AGNOSTIC 0x10000000L +# endif DWORD flags = REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_THREAD_AGNOSTIC; @@ -267,7 +269,9 @@ static ares_bool_t configchg->regip6_event, TRUE) != ERROR_SUCCESS) { return ARES_FALSE; } - +# else + (void)configchg; +# endif return ARES_TRUE; } @@ -297,27 +301,27 @@ ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg, c->e = e; -# ifndef __WATCOMC__ +# ifdef HAVE_NOTIFYIPINTERFACECHANGE /* NOTE: If a user goes into the control panel and changes the network * adapter DNS addresses manually, this will NOT trigger a notification. * We've also tried listening on NotifyUnicastIpAddressChange(), but * that didn't get triggered either. */ - if (NotifyIpInterfaceChange( - AF_UNSPEC, ares_event_configchg_ip_cb, - c, FALSE, &c->ifchg_hnd) != NO_ERROR) { + if (NotifyIpInterfaceChange(AF_UNSPEC, ares_event_configchg_ip_cb, c, FALSE, + &c->ifchg_hnd) != NO_ERROR) { status = ARES_ESERVFAIL; goto done; } # endif +# ifdef HAVE_REGISTERWAITFORSINGLEOBJECT /* Monitor HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\Interfaces * and HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces * for changes via RegNotifyChangeKeyValue() */ if (RegOpenKeyExW( HKEY_LOCAL_MACHINE, - L"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces", 0, - KEY_NOTIFY, &c->regip4) != ERROR_SUCCESS) { + L"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces", + 0, KEY_NOTIFY, &c->regip4) != ERROR_SUCCESS) { status = ARES_ESERVFAIL; goto done; } @@ -355,6 +359,7 @@ ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg, status = ARES_ESERVFAIL; goto done; } +# endif if (!ares_event_configchg_regnotify(c)) { status = ARES_ESERVFAIL; @@ -472,8 +477,8 @@ ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg, continue; } - pdns_configuration_notify_key = (const char *(*)(void)) - dlsym(handle, "dns_configuration_notify_key"); + pdns_configuration_notify_key = + (const char *(*)(void))dlsym(handle, "dns_configuration_notify_key"); if (pdns_configuration_notify_key != NULL) { break; } @@ -551,7 +556,7 @@ static ares_status_t config_change_check(ares__htable_strvp_t *filestat, { size_t i; const char *configfiles[5]; - ares_bool_t changed = ARES_FALSE; + ares_bool_t changed = ARES_FALSE; configfiles[0] = resolvconf_path; configfiles[1] = "/etc/nsswitch.conf"; diff --git a/lib/c-ares-1.32.3/src/lib/ares_event_epoll.c b/lib/c-ares-1.33.0/src/lib/event/ares_event_epoll.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_event_epoll.c rename to lib/c-ares-1.33.0/src/lib/event/ares_event_epoll.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_event_kqueue.c b/lib/c-ares-1.33.0/src/lib/event/ares_event_kqueue.c similarity index 96% rename from lib/c-ares-1.32.3/src/lib/ares_event_kqueue.c rename to lib/c-ares-1.33.0/src/lib/event/ares_event_kqueue.c index aedd99ec42d..1c35c14f165 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_event_kqueue.c +++ b/lib/c-ares-1.33.0/src/lib/event/ares_event_kqueue.c @@ -123,11 +123,9 @@ static void ares_evsys_kqueue_enqueue(ares_evsys_kqueue_t *kq, int fd, if (kq->nchanges > kq->nchanges_alloc) { kq->nchanges_alloc <<= 1; - kq->changelist = ares_realloc_zero( - kq->changelist, - (kq->nchanges_alloc >> 1) * sizeof(*kq->changelist), - kq->nchanges_alloc * sizeof(*kq->changelist) - ); + kq->changelist = ares_realloc_zero( + kq->changelist, (kq->nchanges_alloc >> 1) * sizeof(*kq->changelist), + kq->nchanges_alloc * sizeof(*kq->changelist)); } EV_SET(&kq->changelist[idx], fd, filter, flags, 0, 0, 0); @@ -198,7 +196,7 @@ static size_t ares_evsys_kqueue_wait(ares_event_thread_t *e, size_t cnt = 0; if (timeout_ms != 0) { - ts.tv_sec = timeout_ms / 1000; + ts.tv_sec = (time_t)timeout_ms / 1000; ts.tv_nsec = (timeout_ms % 1000) * 1000 * 1000; timeout = &ts; } diff --git a/lib/c-ares-1.32.3/src/lib/ares_event_poll.c b/lib/c-ares-1.33.0/src/lib/event/ares_event_poll.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_event_poll.c rename to lib/c-ares-1.33.0/src/lib/event/ares_event_poll.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_event_select.c b/lib/c-ares-1.33.0/src/lib/event/ares_event_select.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_event_select.c rename to lib/c-ares-1.33.0/src/lib/event/ares_event_select.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_event_thread.c b/lib/c-ares-1.33.0/src/lib/event/ares_event_thread.c similarity index 95% rename from lib/c-ares-1.32.3/src/lib/ares_event_thread.c rename to lib/c-ares-1.33.0/src/lib/event/ares_event_thread.c index 63d8aa2218a..8b332e9b019 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_event_thread.c +++ b/lib/c-ares-1.33.0/src/lib/event/ares_event_thread.c @@ -47,6 +47,23 @@ static void ares_event_destroy_cb(void *arg) ares_free(event); } +static void ares_event_signal(const ares_event_t *event) +{ + if (event == NULL || event->signal_cb == NULL) { + return; /* LCOV_EXCL_LINE: DefensiveCoding */ + } + event->signal_cb(event); +} + +static void ares_event_thread_wake(const ares_event_thread_t *e) +{ + if (e == NULL) { + return; /* LCOV_EXCL_LINE: DefensiveCoding */ + } + + ares_event_signal(e->ev_signal); +} + /* See if a pending update already exists. We don't want to enqueue multiple * updates for the same event handle. Right now this is O(n) based on number * of updates already enqueued. In the future, it might make sense to make @@ -86,6 +103,7 @@ ares_status_t ares_event_update(ares_event_t **event, ares_event_thread_t *e, ares_event_signal_cb_t signal_cb) { ares_event_t *ev = NULL; + ares_status_t status; if (e == NULL) { return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */ @@ -116,18 +134,22 @@ ares_status_t ares_event_update(ares_event_t **event, ares_event_thread_t *e, /* That's all the validation we can really do */ + ares__thread_mutex_lock(e->mutex); + /* See if we have a queued update already */ ev = ares_event_update_find(e, fd, data); if (ev == NULL) { /* Allocate a new one */ ev = ares_malloc_zero(sizeof(*ev)); if (ev == NULL) { - return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ + status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ + goto done; /* LCOV_EXCL_LINE: OutOfMemory */ } if (ares__llist_insert_last(e->ev_updates, ev) == NULL) { - ares_free(ev); /* LCOV_EXCL_LINE: OutOfMemory */ - return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ + ares_free(ev); /* LCOV_EXCL_LINE: OutOfMemory */ + status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ + goto done; /* LCOV_EXCL_LINE: OutOfMemory */ } } @@ -150,24 +172,17 @@ ares_status_t ares_event_update(ares_event_t **event, ares_event_thread_t *e, *event = ev; } - return ARES_SUCCESS; -} + status = ARES_SUCCESS; -static void ares_event_signal(const ares_event_t *event) -{ - if (event == NULL || event->signal_cb == NULL) { - return; /* LCOV_EXCL_LINE: DefensiveCoding */ +done: + if (status == ARES_SUCCESS) { + /* Wake event thread if successful so it can pull the updates */ + ares_event_thread_wake(e); } - event->signal_cb(event); -} -static void ares_event_thread_wake(const ares_event_thread_t *e) -{ - if (e == NULL) { - return; /* LCOV_EXCL_LINE: DefensiveCoding */ - } + ares__thread_mutex_unlock(e->mutex); - ares_event_signal(e->ev_signal); + return status; } static void ares_event_thread_process_fd(ares_event_thread_t *e, @@ -195,15 +210,10 @@ static void ares_event_thread_sockstate_cb(void *data, ares_socket_t socket_fd, flags |= ARES_EVENT_FLAG_WRITE; } - /* Update channel fd */ - ares__thread_mutex_lock(e->mutex); + /* Update channel fd. This function will lock e->mutex and also wake the + * event thread to process the update */ ares_event_update(NULL, e, flags, ares_event_thread_process_fd, socket_fd, NULL, NULL, NULL); - - /* Wake the event thread so it properly enqueues any updates */ - ares_event_thread_wake(e); - - ares__thread_mutex_unlock(e->mutex); } static void ares_event_process_updates(ares_event_thread_t *e) @@ -370,7 +380,7 @@ void ares_event_thread_destroy(ares_channel_t *channel) ares_event_thread_destroy_int(e); channel->sock_state_cb_data = NULL; - channel->sock_state_cb = NULL; + channel->sock_state_cb = NULL; } static const ares_event_sys_t *ares_event_fetch_sys(ares_evsys_t evsys) diff --git a/lib/c-ares-1.32.3/src/lib/ares_event_wake_pipe.c b/lib/c-ares-1.33.0/src/lib/event/ares_event_wake_pipe.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_event_wake_pipe.c rename to lib/c-ares-1.33.0/src/lib/event/ares_event_wake_pipe.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_event_win32.c b/lib/c-ares-1.33.0/src/lib/event/ares_event_win32.c similarity index 99% rename from lib/c-ares-1.32.3/src/lib/ares_event_win32.c rename to lib/c-ares-1.33.0/src/lib/event/ares_event_win32.c index 173d0ca9c9d..0b7e535bbbf 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_event_win32.c +++ b/lib/c-ares-1.33.0/src/lib/event/ares_event_win32.c @@ -25,9 +25,13 @@ */ /* Uses an anonymous union */ -#if defined(__clang__) +#if defined(__clang__) || defined(__GNUC__) # pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wc11-extensions" +# if defined(__clang__) +# pragma GCC diagnostic ignored "-Wc11-extensions" +# else +# pragma GCC diagnostic ignored "-Wpedantic" +# endif #endif #include "ares_private.h" @@ -967,6 +971,6 @@ const ares_event_sys_t ares_evsys_win32 = { "win32", ares_evsys_win32_wait }; #endif -#if defined(__clang__) +#if defined(__clang__) || defined(__GNUC__) # pragma GCC diagnostic pop #endif diff --git a/lib/c-ares-1.32.3/src/lib/ares_event_win32.h b/lib/c-ares-1.33.0/src/lib/event/ares_event_win32.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_event_win32.h rename to lib/c-ares-1.33.0/src/lib/event/ares_event_win32.h diff --git a/lib/c-ares-1.32.3/src/lib/inet_net_pton.c b/lib/c-ares-1.33.0/src/lib/inet_net_pton.c similarity index 93% rename from lib/c-ares-1.32.3/src/lib/inet_net_pton.c rename to lib/c-ares-1.33.0/src/lib/inet_net_pton.c index 935058da9ce..5356778c47b 100644 --- a/lib/c-ares-1.32.3/src/lib/inet_net_pton.c +++ b/lib/c-ares-1.33.0/src/lib/inet_net_pton.c @@ -32,11 +32,6 @@ #include "ares_ipv6.h" #include "ares_inet_net_pton.h" -#define ISDIGIT(x) (isdigit((int)((unsigned char)x))) -#define ISXDIGIT(x) (isxdigit((int)((unsigned char)x))) -#define ISASCII(x) (((unsigned char)x) <= 127 ? 1 : 0) -#define ISUPPER(x) (isupper((int)((unsigned char)x))) - const struct ares_in6_addr ares_in6addr_any = { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } }; @@ -74,16 +69,16 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst, const unsigned char *odst = dst; ch = *src++; - if (ch == '0' && (src[0] == 'x' || src[0] == 'X') && ISASCII(src[1]) && - ISXDIGIT(src[1])) { + if (ch == '0' && (src[0] == 'x' || src[0] == 'X') && ares__isascii(src[1]) && + ares__isxdigit(src[1])) { /* Hexadecimal: Eat nybble string. */ if (!size) { goto emsgsize; } dirty = 0; src++; /* skip x or X. */ - while ((ch = *src++) != '\0' && ISASCII(ch) && ISXDIGIT(ch)) { - if (ISUPPER(ch)) { + while ((ch = *src++) != '\0' && ares__isascii(ch) && ares__isxdigit(ch)) { + if (ares__isupper(ch)) { ch = ares__tolower((unsigned char)ch); } n = (int)(strchr(xdigits, ch) - xdigits); @@ -106,7 +101,7 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst, } *dst++ = (unsigned char)(tmp << 4); } - } else if (ISASCII(ch) && ISDIGIT(ch)) { + } else if (ares__isascii(ch) && ares__isdigit(ch)) { /* Decimal: eat dotted digit string. */ for (;;) { tmp = 0; @@ -117,7 +112,7 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst, if (tmp > 255) { goto enoent; } - } while ((ch = *src++) != '\0' && ISASCII(ch) && ISDIGIT(ch)); + } while ((ch = *src++) != '\0' && ares__isascii(ch) && ares__isdigit(ch)); if (!size--) { goto emsgsize; } @@ -129,7 +124,7 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst, goto enoent; } ch = *src++; - if (!ISASCII(ch) || !ISDIGIT(ch)) { + if (!ares__isascii(ch) || !ares__isdigit(ch)) { goto enoent; } } @@ -138,7 +133,8 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst, } bits = -1; - if (ch == '/' && ISASCII(src[0]) && ISDIGIT(src[0]) && dst > odst) { + if (ch == '/' && ares__isascii(src[0]) && ares__isdigit(src[0]) && + dst > odst) { /* CIDR width specifier. Nothing can follow it. */ ch = *src++; /* Skip over the /. */ bits = 0; @@ -149,7 +145,7 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst, if (bits > 32) { goto enoent; } - } while ((ch = *src++) != '\0' && ISASCII(ch) && ISDIGIT(ch)); + } while ((ch = *src++) != '\0' && ares__isascii(ch) && ares__isdigit(ch)); if (ch != '\0') { goto enoent; } diff --git a/lib/c-ares-1.32.3/src/lib/inet_ntop.c b/lib/c-ares-1.33.0/src/lib/inet_ntop.c similarity index 97% rename from lib/c-ares-1.32.3/src/lib/inet_ntop.c rename to lib/c-ares-1.33.0/src/lib/inet_ntop.c index 8dee8d69da7..6f96b92cccc 100644 --- a/lib/c-ares-1.32.3/src/lib/inet_ntop.c +++ b/lib/c-ares-1.33.0/src/lib/inet_ntop.c @@ -138,7 +138,7 @@ static const char *inet_ntop6(const unsigned char *src, char *dst, size_t size) if (words[i] == 0) { if (cur.base == -1) { cur.base = (ares_ssize_t)i; - cur.len = 1; + cur.len = 1; } else { cur.len++; } @@ -166,7 +166,8 @@ static const char *inet_ntop6(const unsigned char *src, char *dst, size_t size) tp = tmp; for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++) { /* Are we inside the best run of 0x00's? */ - if (best.base != -1 && i >= (size_t)best.base && i < ((size_t)best.base + best.len)) { + if (best.base != -1 && i >= (size_t)best.base && + i < ((size_t)best.base + best.len)) { if (i == (size_t)best.base) { *tp++ = ':'; } @@ -205,4 +206,3 @@ static const char *inet_ntop6(const unsigned char *src, char *dst, size_t size) ares_strcpy(dst, tmp, size); return dst; } - diff --git a/lib/c-ares-1.32.3/src/lib/ares_create_query.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_create_query.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_create_query.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_create_query.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_expand_name.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_expand_name.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_expand_name.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_expand_name.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_expand_string.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_expand_string.c similarity index 97% rename from lib/c-ares-1.32.3/src/lib/ares_expand_string.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_expand_string.c index 570ccd917a3..b3e99daa54b 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_expand_string.c +++ b/lib/c-ares-1.33.0/src/lib/legacy/ares_expand_string.c @@ -74,8 +74,7 @@ ares_status_t ares_expand_string_ex(const unsigned char *encoded, } start_len = ares__buf_len(buf); - status = - ares__buf_parse_dns_binstr(buf, ares__buf_len(buf), s, &len); + status = ares__buf_parse_dns_binstr(buf, ares__buf_len(buf), s, &len); /* hrm, no way to pass back 'len' with the prototype */ if (status != ARES_SUCCESS) { goto done; diff --git a/lib/c-ares-1.32.3/src/lib/ares_fds.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_fds.c similarity index 88% rename from lib/c-ares-1.32.3/src/lib/ares_fds.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_fds.c index 0502e71182a..3aedd2c90e2 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_fds.c +++ b/lib/c-ares-1.33.0/src/lib/legacy/ares_fds.c @@ -45,14 +45,14 @@ int ares_fds(const ares_channel_t *channel, fd_set *read_fds, fd_set *write_fds) nfds = 0; for (snode = ares__slist_node_first(channel->servers); snode != NULL; snode = ares__slist_node_next(snode)) { - struct server_state *server = ares__slist_node_val(snode); - ares__llist_node_t *node; + ares_server_t *server = ares__slist_node_val(snode); + ares__llist_node_t *node; for (node = ares__llist_node_first(server->connections); node != NULL; node = ares__llist_node_next(node)) { - const struct server_connection *conn = ares__llist_node_val(node); + const ares_conn_t *conn = ares__llist_node_val(node); - if (!active_queries && !conn->is_tcp) { + if (!active_queries && !(conn->flags & ARES_CONN_FLAG_TCP)) { continue; } @@ -69,7 +69,7 @@ int ares_fds(const ares_channel_t *channel, fd_set *read_fds, fd_set *write_fds) } /* TCP only wait on write if we have buffered data */ - if (conn->is_tcp && ares__buf_len(server->tcp_send)) { + if (conn->flags & ARES_CONN_FLAG_TCP && ares__buf_len(server->tcp_send)) { FD_SET(conn->fd, write_fds); } } diff --git a/lib/c-ares-1.32.3/src/lib/ares_getsock.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_getsock.c similarity index 87% rename from lib/c-ares-1.32.3/src/lib/ares_getsock.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_getsock.c index 836d9b973ed..8c8476fa951 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_getsock.c +++ b/lib/c-ares-1.33.0/src/lib/legacy/ares_getsock.c @@ -47,12 +47,12 @@ int ares_getsock(const ares_channel_t *channel, ares_socket_t *socks, for (snode = ares__slist_node_first(channel->servers); snode != NULL; snode = ares__slist_node_next(snode)) { - struct server_state *server = ares__slist_node_val(snode); - ares__llist_node_t *node; + ares_server_t *server = ares__slist_node_val(snode); + ares__llist_node_t *node; for (node = ares__llist_node_first(server->connections); node != NULL; node = ares__llist_node_next(node)) { - const struct server_connection *conn = ares__llist_node_val(node); + const ares_conn_t *conn = ares__llist_node_val(node); if (sockindex >= (size_t)numsocks || sockindex >= ARES_GETSOCK_MAXNUM) { break; @@ -61,17 +61,17 @@ int ares_getsock(const ares_channel_t *channel, ares_socket_t *socks, /* We only need to register interest in UDP sockets if we have * outstanding queries. */ - if (!active_queries && !conn->is_tcp) { + if (!active_queries && !(conn->flags & ARES_CONN_FLAG_TCP)) { continue; } socks[sockindex] = conn->fd; - if (active_queries || conn->is_tcp) { + if (active_queries || conn->flags & ARES_CONN_FLAG_TCP) { bitmap |= ARES_GETSOCK_READABLE(setbits, sockindex); } - if (conn->is_tcp && ares__buf_len(server->tcp_send)) { + if (conn->flags & ARES_CONN_FLAG_TCP && ares__buf_len(server->tcp_send)) { /* then the tcp socket is also writable! */ bitmap |= ARES_GETSOCK_WRITABLE(setbits, sockindex); } diff --git a/lib/c-ares-1.32.3/src/lib/ares_parse_a_reply.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_parse_a_reply.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_parse_a_reply.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_parse_a_reply.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_parse_aaaa_reply.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_parse_aaaa_reply.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_parse_aaaa_reply.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_parse_aaaa_reply.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_parse_caa_reply.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_parse_caa_reply.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_parse_caa_reply.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_parse_caa_reply.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_parse_mx_reply.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_parse_mx_reply.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_parse_mx_reply.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_parse_mx_reply.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_parse_naptr_reply.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_parse_naptr_reply.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_parse_naptr_reply.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_parse_naptr_reply.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_parse_ns_reply.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_parse_ns_reply.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_parse_ns_reply.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_parse_ns_reply.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_parse_ptr_reply.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_parse_ptr_reply.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_parse_ptr_reply.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_parse_ptr_reply.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_parse_soa_reply.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_parse_soa_reply.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_parse_soa_reply.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_parse_soa_reply.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_parse_srv_reply.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_parse_srv_reply.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_parse_srv_reply.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_parse_srv_reply.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_parse_txt_reply.c b/lib/c-ares-1.33.0/src/lib/legacy/ares_parse_txt_reply.c similarity index 99% rename from lib/c-ares-1.32.3/src/lib/ares_parse_txt_reply.c rename to lib/c-ares-1.33.0/src/lib/legacy/ares_parse_txt_reply.c index cd280332d23..71ee0841119 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_parse_txt_reply.c +++ b/lib/c-ares-1.33.0/src/lib/legacy/ares_parse_txt_reply.c @@ -71,7 +71,7 @@ static int ares__parse_txt_reply(const unsigned char *abuf, size_t alen, cnt = ares_dns_rr_get_abin_cnt(rr, ARES_RR_TXT_DATA); - for (j=0; jdata); +} + ares__dns_multistring_t *ares__dns_multistring_create(void) { - return ares_malloc_zero(sizeof(ares__dns_multistring_t)); + ares__dns_multistring_t *strs = ares_malloc_zero(sizeof(*strs)); + if (strs == NULL) { + return NULL; + } + + strs->strs = ares__array_create(sizeof(multistring_data_t), + ares__dns_multistring_free_cb); + if (strs->strs == NULL) { + ares_free(strs); + return NULL; + } + + return strs; } void ares__dns_multistring_clear(ares__dns_multistring_t *strs) { - size_t i; - if (strs == NULL) { return; } - for (i = 0; i < strs->cnt; i++) { - ares_free(strs->strs[i].data); - memset(&strs->strs[i], 0, sizeof(strs->strs[i])); + while (ares__array_len(strs->strs)) { + ares__array_remove_last(strs->strs); } - strs->cnt = 0; } void ares__dns_multistring_destroy(ares__dns_multistring_t *strs) @@ -70,7 +85,7 @@ void ares__dns_multistring_destroy(ares__dns_multistring_t *strs) return; } ares__dns_multistring_clear(strs); - ares_free(strs->strs); + ares__array_destroy(strs->strs); ares_free(strs->cache_str); ares_free(strs); } @@ -79,43 +94,43 @@ ares_status_t ares__dns_multistring_replace_own(ares__dns_multistring_t *strs, size_t idx, unsigned char *str, size_t len) { - if (strs == NULL || str == NULL || len == 0 || idx >= strs->cnt) { + multistring_data_t *data; + + if (strs == NULL || str == NULL || len == 0) { return ARES_EFORMERR; } strs->cache_invalidated = ARES_TRUE; - ares_free(strs->strs[idx].data); - strs->strs[idx].data = str; - strs->strs[idx].len = len; + + data = ares__array_at(strs->strs, idx); + if (data == NULL) { + return ARES_EFORMERR; + } + + ares_free(data->data); + data->data = str; + data->len = len; return ARES_SUCCESS; } ares_status_t ares__dns_multistring_del(ares__dns_multistring_t *strs, size_t idx) { - size_t move_cnt; - - if (strs == NULL || idx >= strs->cnt) { + if (strs == NULL) { return ARES_EFORMERR; } strs->cache_invalidated = ARES_TRUE; - ares_free(strs->strs[idx].data); - - move_cnt = strs->cnt - idx - 1; - if (move_cnt) { - memmove(&strs->strs[idx], &strs->strs[idx + 1], - sizeof(*strs->strs) * move_cnt); - } - - strs->cnt--; - return ARES_SUCCESS; + return ares__array_remove_at(strs->strs, idx); } ares_status_t ares__dns_multistring_add_own(ares__dns_multistring_t *strs, unsigned char *str, size_t len) { + multistring_data_t *data; + ares_status_t status; + if (strs == NULL) { return ARES_EFORMERR; } @@ -127,20 +142,13 @@ ares_status_t ares__dns_multistring_add_own(ares__dns_multistring_t *strs, return ARES_EFORMERR; } - if (strs->alloc < strs->cnt + 1) { - size_t newalloc = (strs->alloc == 0) ? 1 : (strs->alloc << 1); - void *ptr = ares_realloc_zero(strs->strs, strs->alloc * sizeof(*strs->strs), - (newalloc) * sizeof(*strs->strs)); - if (ptr == NULL) { - return ARES_ENOMEM; - } - strs->strs = ptr; - strs->alloc = newalloc; + status = ares__array_insert_last((void **)&data, strs->strs); + if (status != ARES_SUCCESS) { + return status; } - strs->strs[strs->cnt].data = str; - strs->strs[strs->cnt].len = len; - strs->cnt++; + data->data = str; + data->len = len; return ARES_SUCCESS; } @@ -150,18 +158,26 @@ size_t ares__dns_multistring_cnt(const ares__dns_multistring_t *strs) if (strs == NULL) { return 0; } - return strs->cnt; + return ares__array_len(strs->strs); } -const unsigned char *ares__dns_multistring_get( - const ares__dns_multistring_t *strs, size_t idx, size_t *len) +const unsigned char * + ares__dns_multistring_get(const ares__dns_multistring_t *strs, size_t idx, + size_t *len) { - if (strs == NULL || idx >= strs->cnt || len == NULL) { + const multistring_data_t *data; + + if (strs == NULL || len == NULL) { + return NULL; + } + + data = ares__array_at_const(strs->strs, idx); + if (data == NULL) { return NULL; } - *len = strs->strs[idx].len; - return strs->strs[idx].data; + *len = data->len; + return data->data; } const unsigned char * @@ -189,9 +205,10 @@ const unsigned char * buf = ares__buf_create(); - for (i = 0; i < strs->cnt; i++) { - if (ares__buf_append(buf, strs->strs[i].data, strs->strs[i].len) != - ARES_SUCCESS) { + for (i = 0; i < ares__array_len(strs->strs); i++) { + const multistring_data_t *data = ares__array_at_const(strs->strs, i); + if (data == NULL || + ares__buf_append(buf, data->data, data->len) != ARES_SUCCESS) { ares__buf_destroy(buf); return NULL; } diff --git a/lib/c-ares-1.32.3/src/lib/ares_dns_multistring.h b/lib/c-ares-1.33.0/src/lib/record/ares_dns_multistring.h similarity index 94% rename from lib/c-ares-1.32.3/src/lib/ares_dns_multistring.h rename to lib/c-ares-1.33.0/src/lib/record/ares_dns_multistring.h index 3588f5615c3..d9aa7ae3784 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_dns_multistring.h +++ b/lib/c-ares-1.33.0/src/lib/record/ares_dns_multistring.h @@ -40,8 +40,9 @@ ares_status_t ares__dns_multistring_del(ares__dns_multistring_t *strs, ares_status_t ares__dns_multistring_add_own(ares__dns_multistring_t *strs, unsigned char *str, size_t len); size_t ares__dns_multistring_cnt(const ares__dns_multistring_t *strs); -const unsigned char *ares__dns_multistring_get( - const ares__dns_multistring_t *strs, size_t idx, size_t *len); +const unsigned char * + ares__dns_multistring_get(const ares__dns_multistring_t *strs, size_t idx, + size_t *len); const unsigned char * ares__dns_multistring_get_combined(ares__dns_multistring_t *strs, size_t *len); diff --git a/lib/c-ares-1.32.3/src/lib/ares_dns_name.c b/lib/c-ares-1.33.0/src/lib/record/ares_dns_name.c similarity index 87% rename from lib/c-ares-1.32.3/src/lib/ares_dns_name.c rename to lib/c-ares-1.33.0/src/lib/record/ares_dns_name.c index 076d26643eb..a437553b0f2 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_dns_name.c +++ b/lib/c-ares-1.33.0/src/lib/record/ares_dns_name.c @@ -131,72 +131,62 @@ static const ares_nameoffset_t *ares__nameoffset_find(ares__llist_t *list, return longest_match; } -typedef struct { - ares__buf_t **label; - size_t num; -} ares_dns_labels_t; - -static void ares_dns_labels_free(ares_dns_labels_t *labels) +static void ares_dns_labels_free_cb(void *arg) { - size_t i; - - if (labels == NULL) { - return; /* LCOV_EXCL_LINE: DefensiveCoding */ + ares__buf_t **buf = arg; + if (buf == NULL) { + return; } - for (i = 0; i < labels->num; i++) { - ares__buf_destroy(labels->label[i]); - labels->label[i] = NULL; - } - ares_free(labels->label); - labels->label = NULL; - labels->num = 0; + ares__buf_destroy(*buf); } -static ares__buf_t *ares_dns_labels_add(ares_dns_labels_t *labels) +static ares__buf_t *ares_dns_labels_add(ares__array_t *labels) { - void *temp; + ares__buf_t **buf; if (labels == NULL) { return NULL; /* LCOV_EXCL_LINE: DefensiveCoding */ } - temp = ares_realloc_zero(labels->label, sizeof(*labels->label) * labels->num, - sizeof(*labels->label) * (labels->num + 1)); - if (temp == NULL) { - return NULL; /* LCOV_EXCL_LINE: OutOfMemory */ + if (ares__array_insert_last((void **)&buf, labels) != ARES_SUCCESS) { + return NULL; } - labels->label = temp; - - labels->label[labels->num] = ares__buf_create(); - if (labels->label[labels->num] == NULL) { - return NULL; /* LCOV_EXCL_LINE: OutOfMemory */ + *buf = ares__buf_create(); + if (*buf == NULL) { + ares__array_remove_last(labels); + return NULL; } - labels->num++; - return labels->label[labels->num - 1]; + return *buf; } -static const ares__buf_t * - ares_dns_labels_get_last(const ares_dns_labels_t *labels) +static ares__buf_t *ares_dns_labels_get_last(ares__array_t *labels) { - if (labels == NULL || labels->num == 0) { - return NULL; /* LCOV_EXCL_LINE: DefensiveCoding */ + ares__buf_t **buf = ares__array_last(labels); + + if (buf == NULL) { + return NULL; } - return labels->label[labels->num - 1]; + return *buf; } -static void ares_dns_name_labels_del_last(ares_dns_labels_t *labels) +static ares__buf_t *ares_dns_labels_get_at(ares__array_t *labels, size_t idx) { - if (labels == NULL || labels->num == 0) { - return; /* LCOV_EXCL_LINE: DefensiveCoding */ + ares__buf_t **buf = ares__array_at(labels, idx); + + if (buf == NULL) { + return NULL; } - ares__buf_destroy(labels->label[labels->num - 1]); - labels->label[labels->num - 1] = NULL; - labels->num--; + return *buf; +} + +static void ares_dns_name_labels_del_last(ares__array_t *labels) +{ + ares__array_remove_last(labels); } static ares_status_t ares_parse_dns_name_escape(ares__buf_t *namebuf, @@ -212,7 +202,7 @@ static ares_status_t ares_parse_dns_name_escape(ares__buf_t *namebuf, } /* If next character is a digit, read 2 more digits */ - if (isdigit(c)) { + if (ares__isdigit(c)) { size_t i; unsigned int val = 0; @@ -224,7 +214,7 @@ static ares_status_t ares_parse_dns_name_escape(ares__buf_t *namebuf, return ARES_EBADNAME; } - if (!isdigit(c)) { + if (!ares__isdigit(c)) { return ARES_EBADNAME; } val *= 10; @@ -251,9 +241,9 @@ static ares_status_t ares_parse_dns_name_escape(ares__buf_t *namebuf, return ares__buf_append_byte(label, c); } -static ares_status_t ares_split_dns_name(ares_dns_labels_t *labels, - ares_bool_t validate_hostname, - const char *name) +static ares_status_t ares_split_dns_name(ares__array_t *labels, + ares_bool_t validate_hostname, + const char *name) { ares_status_t status; ares__buf_t *label = NULL; @@ -327,14 +317,15 @@ static ares_status_t ares_split_dns_name(ares_dns_labels_t *labels, /* If someone passed in "." there could have been 2 blank labels, check for * that */ - if (labels->num == 1 && + if (ares__array_len(labels) == 1 && ares__buf_len(ares_dns_labels_get_last(labels)) == 0) { ares_dns_name_labels_del_last(labels); } /* Scan to make sure label lengths are valid */ - for (i = 0; i < labels->num; i++) { - size_t len = ares__buf_len(labels->label[i]); + for (i = 0; i < ares__array_len(labels); i++) { + const ares__buf_t *buf = ares_dns_labels_get_at(labels, i); + size_t len = ares__buf_len(buf); /* No 0-length labels, and no labels over 63 bytes */ if (len == 0 || len > 63) { status = ARES_EBADNAME; @@ -344,7 +335,8 @@ static ares_status_t ares_split_dns_name(ares_dns_labels_t *labels, } /* Can't exceed maximum (unescaped) length */ - if (labels->num && total_len + labels->num - 1 > 255) { + if (ares__array_len(labels) && + total_len + ares__array_len(labels) - 1 > 255) { status = ARES_EBADNAME; goto done; } @@ -353,9 +345,6 @@ static ares_status_t ares_split_dns_name(ares_dns_labels_t *labels, done: ares__buf_destroy(namebuf); - if (status != ARES_SUCCESS) { - ares_dns_labels_free(labels); - } return status; } @@ -366,8 +355,8 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list, const ares_nameoffset_t *off = NULL; size_t name_len; size_t orig_name_len; - size_t pos = ares__buf_len(buf); - ares_dns_labels_t labels; + size_t pos = ares__buf_len(buf); + ares__array_t *labels = NULL; char name_copy[512]; ares_status_t status; @@ -375,7 +364,10 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list, return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */ } - memset(&labels, 0, sizeof(labels)); + labels = ares__array_create(sizeof(ares__buf_t *), ares_dns_labels_free_cb); + if (labels == NULL) { + return ARES_ENOMEM; + } /* NOTE: due to possible escaping, name_copy buffer is > 256 to allow for * this */ @@ -396,14 +388,15 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list, if (off == NULL || off->name_len != orig_name_len) { size_t i; - status = ares_split_dns_name(&labels, validate_hostname, name_copy); + status = ares_split_dns_name(labels, validate_hostname, name_copy); if (status != ARES_SUCCESS) { goto done; } - for (i = 0; i < labels.num; i++) { - size_t len = 0; - const unsigned char *ptr = ares__buf_peek(labels.label[i], &len); + for (i = 0; i < ares__array_len(labels); i++) { + size_t len = 0; + const ares__buf_t *lbuf = ares_dns_labels_get_at(labels, i); + const unsigned char *ptr = ares__buf_peek(lbuf, &len); status = ares__buf_append_byte(buf, (unsigned char)(len & 0xFF)); if (status != ARES_SUCCESS) { @@ -448,7 +441,7 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list, status = ARES_SUCCESS; done: - ares_dns_labels_free(&labels); + ares__array_destroy(labels); return status; } diff --git a/lib/c-ares-1.32.3/src/lib/ares_dns_parse.c b/lib/c-ares-1.33.0/src/lib/record/ares_dns_parse.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_dns_parse.c rename to lib/c-ares-1.33.0/src/lib/record/ares_dns_parse.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_dns_private.h b/lib/c-ares-1.33.0/src/lib/record/ares_dns_private.h similarity index 76% rename from lib/c-ares-1.32.3/src/lib/ares_dns_private.h rename to lib/c-ares-1.33.0/src/lib/record/ares_dns_private.h index 2dd468a5559..5b86fed51f9 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_dns_private.h +++ b/lib/c-ares-1.33.0/src/lib/record/ares_dns_private.h @@ -26,7 +26,7 @@ #ifndef __ARES_DNS_PRIVATE_H #define __ARES_DNS_PRIVATE_H -ares_status_t ares_dns_record_duplicate_ex(ares_dns_record_t **dest, +ares_status_t ares_dns_record_duplicate_ex(ares_dns_record_t **dest, const ares_dns_record_t *src); ares_bool_t ares_dns_rec_type_allow_name_compression(ares_dns_rec_type_t type); ares_bool_t ares_dns_opcode_isvalid(ares_dns_opcode_t opcode); @@ -38,23 +38,32 @@ ares_bool_t ares_dns_class_isvalid(ares_dns_class_t qclass, ares_dns_rec_type_t type, ares_bool_t is_query); ares_bool_t ares_dns_section_isvalid(ares_dns_section_t sect); -ares_status_t ares_dns_rr_set_str_own(ares_dns_rr_t *dns_rr, - ares_dns_rr_key_t key, char *val); -ares_status_t ares_dns_rr_set_bin_own(ares_dns_rr_t *dns_rr, - ares_dns_rr_key_t key, unsigned char *val, - size_t len); -ares_status_t ares_dns_rr_set_abin_own(ares_dns_rr_t *dns_rr, - ares_dns_rr_key_t key, - ares__dns_multistring_t *strs); -ares_status_t ares_dns_rr_set_opt_own(ares_dns_rr_t *dns_rr, - ares_dns_rr_key_t key, unsigned short opt, - unsigned char *val, size_t val_len); -ares_status_t ares_dns_record_rr_prealloc(ares_dns_record_t *dnsrec, - ares_dns_section_t sect, size_t cnt); -ares_bool_t ares_dns_has_opt_rr(const ares_dns_record_t *rec); +ares_status_t ares_dns_rr_set_str_own(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, char *val); +ares_status_t ares_dns_rr_set_bin_own(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, unsigned char *val, + size_t len); +ares_status_t ares_dns_rr_set_abin_own(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, + ares__dns_multistring_t *strs); +ares_status_t ares_dns_rr_set_opt_own(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, unsigned short opt, + unsigned char *val, size_t val_len); +ares_status_t ares_dns_record_rr_prealloc(ares_dns_record_t *dnsrec, + ares_dns_section_t sect, size_t cnt); +ares_dns_rr_t *ares_dns_get_opt_rr(ares_dns_record_t *rec); +const ares_dns_rr_t *ares_dns_get_opt_rr_const(const ares_dns_record_t *rec); void ares_dns_record_write_ttl_decrement(ares_dns_record_t *dnsrec, unsigned int ttl_decrement); +/* Same as ares_dns_write() but appends to an existing buffer object */ +ares_status_t ares_dns_write_buf(const ares_dns_record_t *dnsrec, + ares__buf_t *buf); + +/* Same as ares_dns_write_buf(), but prepends a 16bit length */ +ares_status_t ares_dns_write_buf_tcp(const ares_dns_record_t *dnsrec, + ares__buf_t *buf); + /*! Create a DNS record object for a query. The arguments are the same as * those for ares_create_query(). * @@ -168,18 +177,11 @@ typedef struct { } ares__dns_optval_t; typedef struct { - ares__dns_optval_t *optval; /*!< Attribute/value pairs */ - size_t cnt; /*!< Count of Attribute/Value pairs */ - size_t alloc; /*!< Allocated count of attribute/value - * pairs */ -} ares__dns_options_t; - -typedef struct { - unsigned short udp_size; /*!< taken from class */ - unsigned char version; /*!< taken from bits 8-16 of ttl */ - unsigned short flags; /*!< Flags, remaining 16 bits, though only - * 1 currently defined */ - ares__dns_options_t *options; /*!< Attribute/Value pairs */ + unsigned short udp_size; /*!< taken from class */ + unsigned char version; /*!< taken from bits 8-16 of ttl */ + unsigned short flags; /*!< Flags, remaining 16 bits, though only + * 1 currently defined */ + ares__array_t *options; /*!< Type is ares__dns_optval_t */ } ares__dns_opt_t; typedef struct { @@ -191,9 +193,9 @@ typedef struct { } ares__dns_tlsa_t; typedef struct { - unsigned short priority; - char *target; - ares__dns_options_t *params; + unsigned short priority; + char *target; + ares__array_t *params; /*!< Type is ares__dns_optval_t */ } ares__dns_svcb_t; typedef struct { @@ -262,21 +264,10 @@ struct ares_dns_record { * the ttl of any resource records by * this amount. Used for cache */ - ares_dns_qd_t *qd; - size_t qdcount; - size_t qdalloc; - - ares_dns_rr_t *an; - size_t ancount; - size_t analloc; - - ares_dns_rr_t *ns; - size_t nscount; - size_t nsalloc; - - ares_dns_rr_t *ar; - size_t arcount; - size_t aralloc; + ares__array_t *qd; /*!< Type is ares_dns_qd_t */ + ares__array_t *an; /*!< Type is ares_dns_rr_t */ + ares__array_t *ns; /*!< Type is ares_dns_rr_t */ + ares__array_t *ar; /*!< Type is ares_dns_rr_t */ }; #endif diff --git a/lib/c-ares-1.32.3/src/lib/ares_dns_record.c b/lib/c-ares-1.33.0/src/lib/record/ares_dns_record.c similarity index 84% rename from lib/c-ares-1.32.3/src/lib/ares_dns_record.c rename to lib/c-ares-1.33.0/src/lib/record/ares_dns_record.c index 8545abecf74..14704949094 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_dns_record.c +++ b/lib/c-ares-1.33.0/src/lib/record/ares_dns_record.c @@ -29,6 +29,25 @@ # include #endif +static void ares__dns_rr_free(ares_dns_rr_t *rr); + +static void ares_dns_qd_free_cb(void *arg) +{ + ares_dns_qd_t *qd = arg; + if (qd == NULL) { + return; + } + ares_free(qd->name); +} + +static void ares_dns_rr_free_cb(void *arg) +{ + ares_dns_rr_t *rr = arg; + if (rr == NULL) { + return; + } + ares__dns_rr_free(rr); +} ares_status_t ares_dns_record_create(ares_dns_record_t **dnsrec, unsigned short id, unsigned short flags, @@ -55,6 +74,22 @@ ares_status_t ares_dns_record_create(ares_dns_record_t **dnsrec, (*dnsrec)->flags = flags; (*dnsrec)->opcode = opcode; (*dnsrec)->rcode = rcode; + (*dnsrec)->qd = + ares__array_create(sizeof(ares_dns_qd_t), ares_dns_qd_free_cb); + (*dnsrec)->an = + ares__array_create(sizeof(ares_dns_rr_t), ares_dns_rr_free_cb); + (*dnsrec)->ns = + ares__array_create(sizeof(ares_dns_rr_t), ares_dns_rr_free_cb); + (*dnsrec)->ar = + ares__array_create(sizeof(ares_dns_rr_t), ares_dns_rr_free_cb); + + if ((*dnsrec)->qd == NULL || (*dnsrec)->an == NULL || (*dnsrec)->ns == NULL || + (*dnsrec)->ar == NULL) { + ares_dns_record_destroy(*dnsrec); + *dnsrec = NULL; + return ARES_ENOMEM; + } + return ARES_SUCCESS; } @@ -99,21 +134,6 @@ ares_dns_rcode_t ares_dns_record_get_rcode(const ares_dns_record_t *dnsrec) return dnsrec->rcode; } -static void ares__dns_options_free(ares__dns_options_t *options) -{ - size_t i; - - if (options == NULL) { - return; - } - - for (i = 0; i < options->cnt; i++) { - ares_free(options->optval[i].val); - } - ares_free(options->optval); - ares_free(options); -} - static void ares__dns_rr_free(ares_dns_rr_t *rr) { ares_free(rr->name); @@ -172,7 +192,7 @@ static void ares__dns_rr_free(ares_dns_rr_t *rr) break; case ARES_REC_TYPE_OPT: - ares__dns_options_free(rr->r.opt.options); + ares__array_destroy(rr->r.opt.options); break; case ARES_REC_TYPE_TLSA: @@ -181,12 +201,12 @@ static void ares__dns_rr_free(ares_dns_rr_t *rr) case ARES_REC_TYPE_SVCB: ares_free(rr->r.svcb.target); - ares__dns_options_free(rr->r.svcb.params); + ares__array_destroy(rr->r.svcb.params); break; case ARES_REC_TYPE_HTTPS: ares_free(rr->r.https.target); - ares__dns_options_free(rr->r.https.params); + ares__array_destroy(rr->r.https.params); break; case ARES_REC_TYPE_URI: @@ -206,35 +226,21 @@ static void ares__dns_rr_free(ares_dns_rr_t *rr) void ares_dns_record_destroy(ares_dns_record_t *dnsrec) { - size_t i; - if (dnsrec == NULL) { return; } /* Free questions */ - for (i = 0; i < dnsrec->qdcount; i++) { - ares_free(dnsrec->qd[i].name); - } - ares_free(dnsrec->qd); + ares__array_destroy(dnsrec->qd); /* Free answers */ - for (i = 0; i < dnsrec->ancount; i++) { - ares__dns_rr_free(&dnsrec->an[i]); - } - ares_free(dnsrec->an); + ares__array_destroy(dnsrec->an); /* Free authority */ - for (i = 0; i < dnsrec->nscount; i++) { - ares__dns_rr_free(&dnsrec->ns[i]); - } - ares_free(dnsrec->ns); + ares__array_destroy(dnsrec->ns); /* Free additional */ - for (i = 0; i < dnsrec->arcount; i++) { - ares__dns_rr_free(&dnsrec->ar[i]); - } - ares_free(dnsrec->ar); + ares__array_destroy(dnsrec->ar); ares_free(dnsrec); } @@ -244,7 +250,7 @@ size_t ares_dns_record_query_cnt(const ares_dns_record_t *dnsrec) if (dnsrec == NULL) { return 0; } - return dnsrec->qdcount; + return ares__array_len(dnsrec->qd); } ares_status_t ares_dns_record_query_add(ares_dns_record_t *dnsrec, @@ -252,8 +258,9 @@ ares_status_t ares_dns_record_query_add(ares_dns_record_t *dnsrec, ares_dns_rec_type_t qtype, ares_dns_class_t qclass) { - ares_dns_qd_t *temp = NULL; size_t idx; + ares_dns_qd_t *qd; + ares_status_t status; if (dnsrec == NULL || name == NULL || !ares_dns_rec_type_isvalid(qtype, ARES_TRUE) || @@ -261,47 +268,39 @@ ares_status_t ares_dns_record_query_add(ares_dns_record_t *dnsrec, return ARES_EFORMERR; } - if (dnsrec->qdcount >= dnsrec->qdalloc) { - size_t alloc_cnt = ares__round_up_pow2(dnsrec->qdcount + 1); - - temp = ares_realloc_zero(dnsrec->qd, sizeof(*temp) * (dnsrec->qdalloc), - sizeof(*temp) * alloc_cnt); - if (temp == NULL) { - return ARES_ENOMEM; - } - - dnsrec->qdalloc = alloc_cnt; - dnsrec->qd = temp; + idx = ares__array_len(dnsrec->qd); + status = ares__array_insert_last((void **)&qd, dnsrec->qd); + if (status != ARES_SUCCESS) { + return status; } - idx = dnsrec->qdcount; - - dnsrec->qd[idx].name = ares_strdup(name); - if (dnsrec->qd[idx].name == NULL) { - /* No need to clean up anything */ + qd->name = ares_strdup(name); + if (qd->name == NULL) { + ares__array_remove_at(dnsrec->qd, idx); return ARES_ENOMEM; } - - dnsrec->qd[idx].qtype = qtype; - dnsrec->qd[idx].qclass = qclass; - dnsrec->qdcount++; + qd->qtype = qtype; + qd->qclass = qclass; return ARES_SUCCESS; } ares_status_t ares_dns_record_query_set_name(ares_dns_record_t *dnsrec, size_t idx, const char *name) { - char *orig_name = NULL; + char *orig_name = NULL; + ares_dns_qd_t *qd; - if (dnsrec == NULL || idx >= dnsrec->qdcount || name == NULL) { + if (dnsrec == NULL || idx >= ares__array_len(dnsrec->qd) || name == NULL) { return ARES_EFORMERR; } - orig_name = dnsrec->qd[idx].name; - dnsrec->qd[idx].name = ares_strdup(name); - if (dnsrec->qd[idx].name == NULL) { - dnsrec->qd[idx].name = orig_name; /* LCOV_EXCL_LINE: OutOfMemory */ - return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ + qd = ares__array_at(dnsrec->qd, idx); + + orig_name = qd->name; + qd->name = ares_strdup(name); + if (qd->name == NULL) { + qd->name = orig_name; /* LCOV_EXCL_LINE: OutOfMemory */ + return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ } ares_free(orig_name); @@ -312,12 +311,15 @@ ares_status_t ares_dns_record_query_set_type(ares_dns_record_t *dnsrec, size_t idx, ares_dns_rec_type_t qtype) { - if (dnsrec == NULL || idx >= dnsrec->qdcount || + ares_dns_qd_t *qd; + + if (dnsrec == NULL || idx >= ares__array_len(dnsrec->qd) || !ares_dns_rec_type_isvalid(qtype, ARES_TRUE)) { return ARES_EFORMERR; } - dnsrec->qd[idx].qtype = qtype; + qd = ares__array_at(dnsrec->qd, idx); + qd->qtype = qtype; return ARES_SUCCESS; } @@ -327,20 +329,22 @@ ares_status_t ares_dns_record_query_get(const ares_dns_record_t *dnsrec, ares_dns_rec_type_t *qtype, ares_dns_class_t *qclass) { - if (dnsrec == NULL || idx >= dnsrec->qdcount) { + const ares_dns_qd_t *qd; + if (dnsrec == NULL || idx >= ares__array_len(dnsrec->qd)) { return ARES_EFORMERR; } + qd = ares__array_at(dnsrec->qd, idx); if (name != NULL) { - *name = dnsrec->qd[idx].name; + *name = qd->name; } if (qtype != NULL) { - *qtype = dnsrec->qd[idx].qtype; + *qtype = qd->qtype; } if (qclass != NULL) { - *qclass = dnsrec->qd[idx].qclass; + *qclass = qd->qclass; } return ARES_SUCCESS; @@ -355,11 +359,11 @@ size_t ares_dns_record_rr_cnt(const ares_dns_record_t *dnsrec, switch (sect) { case ARES_SECTION_ANSWER: - return dnsrec->ancount; + return ares__array_len(dnsrec->an); case ARES_SECTION_AUTHORITY: - return dnsrec->nscount; + return ares__array_len(dnsrec->ns); case ARES_SECTION_ADDITIONAL: - return dnsrec->arcount; + return ares__array_len(dnsrec->ar); } return 0; /* LCOV_EXCL_LINE: DefensiveCoding */ @@ -368,46 +372,29 @@ size_t ares_dns_record_rr_cnt(const ares_dns_record_t *dnsrec, ares_status_t ares_dns_record_rr_prealloc(ares_dns_record_t *dnsrec, ares_dns_section_t sect, size_t cnt) { - ares_dns_rr_t **rr_ptr = NULL; - size_t *rr_alloc = NULL; - ares_dns_rr_t *temp = NULL; + ares__array_t *arr = NULL; - if (dnsrec == NULL || cnt == 0 || !ares_dns_section_isvalid(sect)) { - return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */ + if (dnsrec == NULL || !ares_dns_section_isvalid(sect)) { + return ARES_EFORMERR; } switch (sect) { case ARES_SECTION_ANSWER: - rr_ptr = &dnsrec->an; - rr_alloc = &dnsrec->analloc; + arr = dnsrec->an; break; case ARES_SECTION_AUTHORITY: - rr_ptr = &dnsrec->ns; - rr_alloc = &dnsrec->nsalloc; + arr = dnsrec->ns; break; case ARES_SECTION_ADDITIONAL: - rr_ptr = &dnsrec->ar; - rr_alloc = &dnsrec->aralloc; + arr = dnsrec->ar; break; } - /* Round up cnt to a power of 2 */ - cnt = ares__round_up_pow2(cnt); - - /* Already have that */ - if (cnt <= *rr_alloc) { - return ARES_SUCCESS; - } - - temp = ares_realloc_zero(*rr_ptr, sizeof(*temp) * (*rr_alloc), - sizeof(*temp) * cnt); - if (temp == NULL) { - return ARES_ENOMEM; + if (cnt < ares__array_len(arr)) { + return ARES_EFORMERR; } - *rr_alloc = cnt; - *rr_ptr = temp; - return ARES_SUCCESS; + return ares__array_set_size(arr, cnt); } ares_status_t ares_dns_record_rr_add(ares_dns_rr_t **rr_out, @@ -416,11 +403,10 @@ ares_status_t ares_dns_record_rr_add(ares_dns_rr_t **rr_out, ares_dns_rec_type_t type, ares_dns_class_t rclass, unsigned int ttl) { - ares_dns_rr_t **rr_ptr = NULL; - ares_dns_rr_t *rr = NULL; - size_t *rr_len = NULL; - ares_status_t status; - size_t idx; + ares_dns_rr_t *rr = NULL; + ares__array_t *arr = NULL; + ares_status_t status; + size_t idx; if (dnsrec == NULL || name == NULL || rr_out == NULL || !ares_dns_section_isvalid(sect) || @@ -433,30 +419,25 @@ ares_status_t ares_dns_record_rr_add(ares_dns_rr_t **rr_out, switch (sect) { case ARES_SECTION_ANSWER: - rr_ptr = &dnsrec->an; - rr_len = &dnsrec->ancount; + arr = dnsrec->an; break; case ARES_SECTION_AUTHORITY: - rr_ptr = &dnsrec->ns; - rr_len = &dnsrec->nscount; + arr = dnsrec->ns; break; case ARES_SECTION_ADDITIONAL: - rr_ptr = &dnsrec->ar; - rr_len = &dnsrec->arcount; + arr = dnsrec->ar; break; } - status = ares_dns_record_rr_prealloc(dnsrec, sect, *rr_len + 1); + idx = ares__array_len(arr); + status = ares__array_insert_last((void **)&rr, arr); if (status != ARES_SUCCESS) { return status; /* LCOV_EXCL_LINE: OutOfMemory */ } - idx = *rr_len; - rr = &(*rr_ptr)[idx]; - rr->name = ares_strdup(name); if (rr->name == NULL) { - /* No need to clean up anything */ + ares__array_remove_at(arr, idx); return ARES_ENOMEM; } @@ -464,7 +445,6 @@ ares_status_t ares_dns_record_rr_add(ares_dns_rr_t **rr_out, rr->type = type; rr->rclass = rclass; rr->ttl = ttl; - (*rr_len)++; *rr_out = rr; @@ -474,9 +454,7 @@ ares_status_t ares_dns_record_rr_add(ares_dns_rr_t **rr_out, ares_status_t ares_dns_record_rr_del(ares_dns_record_t *dnsrec, ares_dns_section_t sect, size_t idx) { - ares_dns_rr_t *rr_ptr = NULL; - size_t *rr_len = NULL; - size_t cnt_after; + ares__array_t *arr = NULL; if (dnsrec == NULL || !ares_dns_section_isvalid(sect)) { return ARES_EFORMERR; @@ -484,40 +462,23 @@ ares_status_t ares_dns_record_rr_del(ares_dns_record_t *dnsrec, switch (sect) { case ARES_SECTION_ANSWER: - rr_ptr = dnsrec->an; - rr_len = &dnsrec->ancount; + arr = dnsrec->an; break; case ARES_SECTION_AUTHORITY: - rr_ptr = dnsrec->ns; - rr_len = &dnsrec->nscount; + arr = dnsrec->ns; break; case ARES_SECTION_ADDITIONAL: - rr_ptr = dnsrec->ar; - rr_len = &dnsrec->arcount; + arr = dnsrec->ar; break; } - if (idx >= *rr_len) { - return ARES_EFORMERR; - } - - ares__dns_rr_free(&rr_ptr[idx]); - - cnt_after = *rr_len - idx - 1; - - if (cnt_after) { - memmove(&rr_ptr[idx], &rr_ptr[idx + 1], sizeof(*rr_ptr) * cnt_after); - } - - (*rr_len)--; - return ARES_SUCCESS; + return ares__array_remove_at(arr, idx); } ares_dns_rr_t *ares_dns_record_rr_get(ares_dns_record_t *dnsrec, ares_dns_section_t sect, size_t idx) { - ares_dns_rr_t *rr_ptr = NULL; - size_t rr_len = 0; + ares__array_t *arr = NULL; if (dnsrec == NULL || !ares_dns_section_isvalid(sect)) { return NULL; @@ -525,24 +486,17 @@ ares_dns_rr_t *ares_dns_record_rr_get(ares_dns_record_t *dnsrec, switch (sect) { case ARES_SECTION_ANSWER: - rr_ptr = dnsrec->an; - rr_len = dnsrec->ancount; + arr = dnsrec->an; break; case ARES_SECTION_AUTHORITY: - rr_ptr = dnsrec->ns; - rr_len = dnsrec->nscount; + arr = dnsrec->ns; break; case ARES_SECTION_ADDITIONAL: - rr_ptr = dnsrec->ar; - rr_len = dnsrec->arcount; + arr = dnsrec->ar; break; } - if (idx >= rr_len) { - return NULL; - } - - return &rr_ptr[idx]; + return ares__array_at(arr, idx); } const ares_dns_rr_t * @@ -1040,7 +994,7 @@ const char *ares_dns_rr_get_str(const ares_dns_rr_t *dns_rr, size_t ares_dns_rr_get_opt_cnt(const ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key) { - ares__dns_options_t * const *opts; + ares__array_t * const *opts; if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_OPT) { return 0; @@ -1051,14 +1005,15 @@ size_t ares_dns_rr_get_opt_cnt(const ares_dns_rr_t *dns_rr, return 0; } - return (*opts)->cnt; + return ares__array_len(*opts); } unsigned short ares_dns_rr_get_opt(const ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, size_t idx, const unsigned char **val, size_t *val_len) { - ares__dns_options_t * const *opts; + ares__array_t * const *opts; + const ares__dns_optval_t *opt; if (val) { *val = NULL; @@ -1076,26 +1031,29 @@ unsigned short ares_dns_rr_get_opt(const ares_dns_rr_t *dns_rr, return 65535; } - if (idx >= (*opts)->cnt) { + opt = ares__array_at(*opts, idx); + if (opt == NULL) { return 65535; } if (val) { - *val = (*opts)->optval[idx].val; + *val = opt->val; } if (val_len) { - *val_len = (*opts)->optval[idx].val_len; + *val_len = opt->val_len; } - return (*opts)->optval[idx].opt; + return opt->opt; } ares_bool_t ares_dns_rr_get_opt_byid(const ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, unsigned short opt, const unsigned char **val, size_t *val_len) { - ares__dns_options_t * const *opts; - size_t i; + ares__array_t * const *opts; + size_t i; + size_t cnt; + const ares__dns_optval_t *optptr = NULL; if (val) { *val = NULL; @@ -1113,21 +1071,26 @@ ares_bool_t ares_dns_rr_get_opt_byid(const ares_dns_rr_t *dns_rr, return ARES_FALSE; } - for (i = 0; i < (*opts)->cnt; i++) { - if ((*opts)->optval[i].opt == opt) { + cnt = ares__array_len(*opts); + for (i = 0; i < cnt; i++) { + optptr = ares__array_at(*opts, i); + if (optptr == NULL) { + return ARES_FALSE; + } + if (optptr->opt == opt) { break; } } - if (i >= (*opts)->cnt) { + if (i >= cnt || optptr == NULL) { return ARES_FALSE; } if (val) { - *val = (*opts)->optval[i].val; + *val = optptr->val; } if (val_len) { - *val_len = (*opts)->optval[i].val_len; + *val_len = optptr->val_len; } return ARES_TRUE; } @@ -1367,12 +1330,24 @@ ares_status_t ares_dns_rr_set_abin_own(ares_dns_rr_t *dns_rr, return ARES_SUCCESS; } +static void ares__dns_opt_free_cb(void *arg) +{ + ares__dns_optval_t *opt = arg; + if (opt == NULL) { + return; + } + ares_free(opt->val); +} + ares_status_t ares_dns_rr_set_opt_own(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, unsigned short opt, unsigned char *val, size_t val_len) { - ares__dns_options_t **options; - size_t idx; + ares__array_t **options; + ares__dns_optval_t *optptr = NULL; + size_t idx; + size_t cnt; + ares_status_t status; if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_OPT) { return ARES_EFORMERR; @@ -1384,54 +1359,39 @@ ares_status_t ares_dns_rr_set_opt_own(ares_dns_rr_t *dns_rr, } if (*options == NULL) { - *options = ares_malloc_zero(sizeof(**options)); + *options = + ares__array_create(sizeof(ares__dns_optval_t), ares__dns_opt_free_cb); } if (*options == NULL) { return ARES_ENOMEM; } - for (idx = 0; idx < (*options)->cnt; idx++) { - if ((*options)->optval[idx].opt == opt) { + cnt = ares__array_len(*options); + for (idx = 0; idx < cnt; idx++) { + optptr = ares__array_at(*options, idx); + if (optptr == NULL) { + return ARES_EFORMERR; + } + if (optptr->opt == opt) { break; } } /* Duplicate entry, replace */ - if (idx != (*options)->cnt) { + if (idx != cnt && optptr != NULL) { goto done; } - idx = (*options)->cnt; - - /* Expand by powers of 2 */ - if (idx >= (*options)->alloc) { - size_t alloc_size = (*options)->alloc; - void *temp; - - if (alloc_size == 0) { - alloc_size = 1; - } else { - alloc_size <<= 1; - } - - temp = ares_realloc_zero((*options)->optval, - (*options)->alloc * sizeof(*(*options)->optval), - alloc_size * sizeof(*(*options)->optval)); - if (temp == NULL) { - return ARES_ENOMEM; - } - - (*options)->optval = temp; - (*options)->alloc = alloc_size; + status = ares__array_insert_last((void **)&optptr, *options); + if (status != ARES_SUCCESS) { + return status; } - (*options)->cnt++; - done: - ares_free((*options)->optval[idx].val); - (*options)->optval[idx].opt = opt; - (*options)->optval[idx].val = val; - (*options)->optval[idx].val_len = val_len; + ares_free(optptr->val); + optptr->opt = opt; + optptr->val = val; + optptr->val_len = val_len; return ARES_SUCCESS; } @@ -1460,6 +1420,43 @@ ares_status_t ares_dns_rr_set_opt(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, return status; } +ares_status_t ares_dns_rr_del_opt_byid(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, + unsigned short opt) +{ + ares__array_t **options; + const ares__dns_optval_t *optptr; + size_t idx; + size_t cnt; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_OPT) { + return ARES_EFORMERR; + } + + options = ares_dns_rr_data_ptr(dns_rr, key, NULL); + if (options == NULL) { + return ARES_EFORMERR; + } + + /* No options */ + if (*options == NULL) { + return ARES_SUCCESS; + } + + cnt = ares__array_len(*options); + for (idx = 0; idx < cnt; idx++) { + optptr = ares__array_at_const(*options, idx); + if (optptr == NULL) { + return ARES_ENOTFOUND; + } + if (optptr->opt == opt) { + return ares__array_remove_at(*options, idx); + } + } + + return ARES_ENOTFOUND; +} + char *ares_dns_addr_to_ptr(const struct ares_addr *addr) { ares__buf_t *buf = NULL; @@ -1532,8 +1529,20 @@ char *ares_dns_addr_to_ptr(const struct ares_addr *addr) return NULL; } -/* search for an OPT RR in the response */ -ares_bool_t ares_dns_has_opt_rr(const ares_dns_record_t *rec) +ares_dns_rr_t *ares_dns_get_opt_rr(ares_dns_record_t *rec) +{ + size_t i; + for (i = 0; i < ares_dns_record_rr_cnt(rec, ARES_SECTION_ADDITIONAL); i++) { + ares_dns_rr_t *rr = ares_dns_record_rr_get(rec, ARES_SECTION_ADDITIONAL, i); + + if (ares_dns_rr_get_type(rr) == ARES_REC_TYPE_OPT) { + return rr; + } + } + return NULL; +} + +const ares_dns_rr_t *ares_dns_get_opt_rr_const(const ares_dns_record_t *rec) { size_t i; for (i = 0; i < ares_dns_record_rr_cnt(rec, ARES_SECTION_ADDITIONAL); i++) { @@ -1541,10 +1550,10 @@ ares_bool_t ares_dns_has_opt_rr(const ares_dns_record_t *rec) ares_dns_record_rr_get_const(rec, ARES_SECTION_ADDITIONAL, i); if (ares_dns_rr_get_type(rr) == ARES_REC_TYPE_OPT) { - return ARES_TRUE; + return rr; } } - return ARES_FALSE; + return NULL; } /* Construct a DNS record for a name with given class and type. Used internally @@ -1623,12 +1632,12 @@ ares_status_t return status; } -ares_status_t ares_dns_record_duplicate_ex(ares_dns_record_t **dest, +ares_status_t ares_dns_record_duplicate_ex(ares_dns_record_t **dest, const ares_dns_record_t *src) { - unsigned char *data = NULL; - size_t data_len = 0; - ares_status_t status; + unsigned char *data = NULL; + size_t data_len = 0; + ares_status_t status; if (dest == NULL || src == NULL) { return ARES_EFORMERR; diff --git a/lib/c-ares-1.32.3/src/lib/ares_dns_write.c b/lib/c-ares-1.33.0/src/lib/record/ares_dns_write.c similarity index 93% rename from lib/c-ares-1.32.3/src/lib/ares_dns_write.c rename to lib/c-ares-1.33.0/src/lib/record/ares_dns_write.c index 60bbd702889..8a3addd9f01 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_dns_write.c +++ b/lib/c-ares-1.33.0/src/lib/record/ares_dns_write.c @@ -91,7 +91,7 @@ static ares_status_t ares_dns_write_header(const ares_dns_record_t *dnsrec, } /* RCODE */ - if (dnsrec->rcode > 15 && !ares_dns_has_opt_rr(dnsrec)) { + if (dnsrec->rcode > 15 && ares_dns_get_opt_rr_const(dnsrec) == NULL) { /* Must have OPT RR in order to write extended error codes */ rcode = ARES_RCODE_SERVFAIL; } else { @@ -105,25 +105,29 @@ static ares_status_t ares_dns_write_header(const ares_dns_record_t *dnsrec, } /* QDCOUNT */ - status = ares__buf_append_be16(buf, (unsigned short)dnsrec->qdcount); + status = ares__buf_append_be16( + buf, (unsigned short)ares_dns_record_query_cnt(dnsrec)); if (status != ARES_SUCCESS) { return status; /* LCOV_EXCL_LINE: OutOfMemory */ } /* ANCOUNT */ - status = ares__buf_append_be16(buf, (unsigned short)dnsrec->ancount); + status = ares__buf_append_be16( + buf, (unsigned short)ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER)); if (status != ARES_SUCCESS) { return status; /* LCOV_EXCL_LINE: OutOfMemory */ } /* NSCOUNT */ - status = ares__buf_append_be16(buf, (unsigned short)dnsrec->nscount); + status = ares__buf_append_be16(buf, (unsigned short)ares_dns_record_rr_cnt( + dnsrec, ARES_SECTION_AUTHORITY)); if (status != ARES_SUCCESS) { return status; /* LCOV_EXCL_LINE: OutOfMemory */ } /* ARCOUNT */ - status = ares__buf_append_be16(buf, (unsigned short)dnsrec->arcount); + status = ares__buf_append_be16(buf, (unsigned short)ares_dns_record_rr_cnt( + dnsrec, ARES_SECTION_ADDITIONAL)); if (status != ARES_SUCCESS) { return status; /* LCOV_EXCL_LINE: OutOfMemory */ } @@ -1090,52 +1094,121 @@ static ares_status_t ares_dns_write_rr(const ares_dns_record_t *dnsrec, return ARES_SUCCESS; } -ares_status_t ares_dns_write(const ares_dns_record_t *dnsrec, - unsigned char **buf, size_t *buf_len) +ares_status_t ares_dns_write_buf(const ares_dns_record_t *dnsrec, + ares__buf_t *buf) { - ares__buf_t *b = NULL; - ares_status_t status; ares__llist_t *namelist = NULL; + size_t orig_len; + ares_status_t status; - if (buf == NULL || buf_len == NULL || dnsrec == NULL) { + if (dnsrec == NULL || buf == NULL) { return ARES_EFORMERR; } - *buf = NULL; - *buf_len = 0; + orig_len = ares__buf_len(buf); - b = ares__buf_create(); - if (b == NULL) { - return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ + status = ares_dns_write_header(dnsrec, buf); + if (status != ARES_SUCCESS) { + goto done; } - status = ares_dns_write_header(dnsrec, b); + status = ares_dns_write_questions(dnsrec, &namelist, buf); if (status != ARES_SUCCESS) { goto done; } - status = ares_dns_write_questions(dnsrec, &namelist, b); + status = ares_dns_write_rr(dnsrec, &namelist, ARES_SECTION_ANSWER, buf); if (status != ARES_SUCCESS) { goto done; } - status = ares_dns_write_rr(dnsrec, &namelist, ARES_SECTION_ANSWER, b); + status = ares_dns_write_rr(dnsrec, &namelist, ARES_SECTION_AUTHORITY, buf); if (status != ARES_SUCCESS) { goto done; } - status = ares_dns_write_rr(dnsrec, &namelist, ARES_SECTION_AUTHORITY, b); + status = ares_dns_write_rr(dnsrec, &namelist, ARES_SECTION_ADDITIONAL, buf); if (status != ARES_SUCCESS) { goto done; } - status = ares_dns_write_rr(dnsrec, &namelist, ARES_SECTION_ADDITIONAL, b); +done: + ares__llist_destroy(namelist); + if (status != ARES_SUCCESS) { + ares__buf_set_length(buf, orig_len); + } + + return status; +} + +ares_status_t ares_dns_write_buf_tcp(const ares_dns_record_t *dnsrec, + ares__buf_t *buf) +{ + ares_status_t status; + size_t orig_len; + size_t msg_len; + size_t len; + + if (dnsrec == NULL || buf == NULL) { + return ARES_EFORMERR; + } + + orig_len = ares__buf_len(buf); + + /* Write placeholder for length */ + status = ares__buf_append_be16(buf, 0); if (status != ARES_SUCCESS) { + goto done; /* LCOV_EXCL_LINE: OutOfMemory */ + } + + /* Write message */ + status = ares_dns_write_buf(dnsrec, buf); + if (status != ARES_SUCCESS) { + goto done; /* LCOV_EXCL_LINE: OutOfMemory */ + } + + len = ares__buf_len(buf); + msg_len = len - orig_len - 2; + if (msg_len > 65535) { + status = ARES_EBADQUERY; goto done; } + /* Now we need to overwrite the length, so we jump back to the original + * message length, overwrite the section and jump back */ + ares__buf_set_length(buf, orig_len); + status = ares__buf_append_be16(buf, (unsigned short)(msg_len & 0xFFFF)); + if (status != ARES_SUCCESS) { + goto done; /* LCOV_EXCL_LINE: UntestablePath */ + } + ares__buf_set_length(buf, len); + done: - ares__llist_destroy(namelist); + if (status != ARES_SUCCESS) { + ares__buf_set_length(buf, orig_len); + } + return status; +} + +ares_status_t ares_dns_write(const ares_dns_record_t *dnsrec, + unsigned char **buf, size_t *buf_len) +{ + ares__buf_t *b = NULL; + ares_status_t status; + + if (buf == NULL || buf_len == NULL || dnsrec == NULL) { + return ARES_EFORMERR; + } + + *buf = NULL; + *buf_len = 0; + + b = ares__buf_create(); + if (b == NULL) { + return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ + } + + status = ares_dns_write_buf(dnsrec, b); if (status != ARES_SUCCESS) { ares__buf_destroy(b); diff --git a/lib/c-ares-1.32.3/src/lib/ares__buf.c b/lib/c-ares-1.33.0/src/lib/str/ares__buf.c similarity index 99% rename from lib/c-ares-1.32.3/src/lib/ares__buf.c rename to lib/c-ares-1.33.0/src/lib/str/ares__buf.c index 320a73d6748..b855260ab37 100644 --- a/lib/c-ares-1.32.3/src/lib/ares__buf.c +++ b/lib/c-ares-1.33.0/src/lib/str/ares__buf.c @@ -204,7 +204,7 @@ ares_status_t ares__buf_set_length(ares__buf_t *buf, size_t len) return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */ } - buf->data_len = len; + buf->data_len = len + buf->offset; return ARES_SUCCESS; } diff --git a/lib/c-ares-1.32.3/src/lib/ares__buf.h b/lib/c-ares-1.33.0/src/lib/str/ares__buf.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__buf.h rename to lib/c-ares-1.33.0/src/lib/str/ares__buf.h diff --git a/lib/c-ares-1.32.3/src/lib/ares_str.c b/lib/c-ares-1.33.0/src/lib/str/ares_str.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_str.c rename to lib/c-ares-1.33.0/src/lib/str/ares_str.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_str.h b/lib/c-ares-1.33.0/src/lib/str/ares_str.h similarity index 82% rename from lib/c-ares-1.32.3/src/lib/ares_str.h rename to lib/c-ares-1.33.0/src/lib/str/ares_str.h index 81353221407..440758c21be 100644 --- a/lib/c-ares-1.32.3/src/lib/ares_str.h +++ b/lib/c-ares-1.33.0/src/lib/str/ares_str.h @@ -72,5 +72,18 @@ ares_bool_t ares__is_hostname(const char *str); */ ares_bool_t ares__str_isprint(const char *str, size_t len); +/* We only care about ASCII rules */ +#define ares__isascii(x) (((unsigned char)x) <= 127) +#define ares__isdigit(x) \ + (((unsigned char)x) >= '0' && ((unsigned char)x) <= '9') +#define ares__isxdigit(x) \ + (ares__isdigit(x) || \ + (((unsigned char)x) >= 'a' && ((unsigned char)x) <= 'f') || \ + (((unsigned char)x) >= 'A' && ((unsigned char)x) <= 'F')) +#define ares__isupper(x) \ + (((unsigned char)x) >= 'A' && ((unsigned char)x) <= 'Z') +#define ares__islower(x) \ + (((unsigned char)x) >= 'a' && ((unsigned char)x) <= 'z') +#define ares__isalpha(x) (ares__islower(x) || ares__isupper(x)) #endif /* __ARES_STR_H */ diff --git a/lib/c-ares-1.32.3/src/lib/ares_strcasecmp.c b/lib/c-ares-1.33.0/src/lib/str/ares_strcasecmp.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_strcasecmp.c rename to lib/c-ares-1.33.0/src/lib/str/ares_strcasecmp.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_strcasecmp.h b/lib/c-ares-1.33.0/src/lib/str/ares_strcasecmp.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_strcasecmp.h rename to lib/c-ares-1.33.0/src/lib/str/ares_strcasecmp.h diff --git a/lib/c-ares-1.32.3/src/lib/ares_strsplit.c b/lib/c-ares-1.33.0/src/lib/str/ares_strsplit.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_strsplit.c rename to lib/c-ares-1.33.0/src/lib/str/ares_strsplit.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_strsplit.h b/lib/c-ares-1.33.0/src/lib/str/ares_strsplit.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_strsplit.h rename to lib/c-ares-1.33.0/src/lib/str/ares_strsplit.h diff --git a/lib/c-ares-1.32.3/src/lib/thirdparty/apple/dnsinfo.h b/lib/c-ares-1.33.0/src/lib/thirdparty/apple/dnsinfo.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/thirdparty/apple/dnsinfo.h rename to lib/c-ares-1.33.0/src/lib/thirdparty/apple/dnsinfo.h diff --git a/lib/c-ares-1.32.3/src/lib/ares__iface_ips.c b/lib/c-ares-1.33.0/src/lib/util/ares__iface_ips.c similarity index 90% rename from lib/c-ares-1.32.3/src/lib/ares__iface_ips.c rename to lib/c-ares-1.33.0/src/lib/util/ares__iface_ips.c index 6c983cabb1c..56dc2579041 100644 --- a/lib/c-ares-1.32.3/src/lib/ares__iface_ips.c +++ b/lib/c-ares-1.33.0/src/lib/util/ares__iface_ips.c @@ -71,12 +71,19 @@ typedef struct { } ares__iface_ip_t; struct ares__iface_ips { - ares__iface_ip_t *ips; - size_t cnt; - size_t alloc_size; + ares__array_t *ips; /*!< Type is ares__iface_ip_t */ ares__iface_ip_flags_t enum_flags; }; +static void ares__iface_ip_free_cb(void *arg) +{ + ares__iface_ip_t *ip = arg; + if (ip == NULL) { + return; + } + ares_free(ip->name); +} + static ares__iface_ips_t *ares__iface_ips_alloc(ares__iface_ip_flags_t flags) { ares__iface_ips_t *ips = ares_malloc_zero(sizeof(*ips)); @@ -84,38 +91,23 @@ static ares__iface_ips_t *ares__iface_ips_alloc(ares__iface_ip_flags_t flags) return NULL; /* LCOV_EXCL_LINE: OutOfMemory */ } - /* Prealloc 4 entries */ - ips->alloc_size = 4; - ips->ips = ares_malloc_zero(ips->alloc_size * sizeof(*ips->ips)); + ips->enum_flags = flags; + ips->ips = + ares__array_create(sizeof(ares__iface_ip_t), ares__iface_ip_free_cb); if (ips->ips == NULL) { ares_free(ips); /* LCOV_EXCL_LINE: OutOfMemory */ return NULL; /* LCOV_EXCL_LINE: OutOfMemory */ } - ips->enum_flags = flags; return ips; } -static void ares__iface_ip_destroy(ares__iface_ip_t *ip) -{ - if (ip == NULL) { - return; /* LCOV_EXCL_LINE: DefensiveCoding */ - } - ares_free(ip->name); - memset(ip, 0, sizeof(*ip)); -} - void ares__iface_ips_destroy(ares__iface_ips_t *ips) { - size_t i; - if (ips == NULL) { return; } - for (i = 0; i < ips->cnt; i++) { - ares__iface_ip_destroy(&ips->ips[i]); - } - ares_free(ips->ips); + ares__array_destroy(ips->ips); ares_free(ips); } @@ -150,7 +142,8 @@ static ares_status_t const char *name, const struct ares_addr *addr, unsigned char netmask, unsigned int ll_scope) { - size_t idx; + ares__iface_ip_t *ip; + ares_status_t status; if (ips == NULL || name == NULL || addr == NULL) { return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */ @@ -197,32 +190,20 @@ static ares_status_t } } - /* Allocate more ips */ - if (ips->cnt + 1 > ips->alloc_size) { - void *temp; - size_t alloc_size; - - alloc_size = ares__round_up_pow2(ips->alloc_size + 1); - temp = ares_realloc_zero(ips->ips, ips->alloc_size * sizeof(*ips->ips), - alloc_size * sizeof(*ips->ips)); - if (temp == NULL) { - return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ - } - ips->ips = temp; - ips->alloc_size = alloc_size; + status = ares__array_insert_last((void **)&ip, ips->ips); + if (status != ARES_SUCCESS) { + return status; } - /* Add */ - idx = ips->cnt++; - - ips->ips[idx].flags = flags; - ips->ips[idx].netmask = netmask; + ip->flags = flags; + ip->netmask = netmask; if (flags & ARES_IFACE_IP_LINKLOCAL) { - ips->ips[idx].ll_scope = ll_scope; + ip->ll_scope = ll_scope; } - memcpy(&ips->ips[idx].addr, addr, sizeof(*addr)); - ips->ips[idx].name = ares_strdup(name); - if (ips->ips[idx].name == NULL) { + memcpy(&ip->addr, addr, sizeof(*addr)); + ip->name = ares_strdup(name); + if (ip->name == NULL) { + ares__array_remove_last(ips->ips); return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ } @@ -234,51 +215,91 @@ size_t ares__iface_ips_cnt(const ares__iface_ips_t *ips) if (ips == NULL) { return 0; } - return ips->cnt; + return ares__array_len(ips->ips); } const char *ares__iface_ips_get_name(const ares__iface_ips_t *ips, size_t idx) { - if (ips == NULL || idx >= ips->cnt) { + const ares__iface_ip_t *ip; + + if (ips == NULL) { return NULL; } - return ips->ips[idx].name; + + ip = ares__array_at_const(ips->ips, idx); + if (ip == NULL) { + return NULL; + } + + return ip->name; } const struct ares_addr *ares__iface_ips_get_addr(const ares__iface_ips_t *ips, size_t idx) { - if (ips == NULL || idx >= ips->cnt) { + const ares__iface_ip_t *ip; + + if (ips == NULL) { return NULL; } - return &ips->ips[idx].addr; + + ip = ares__array_at_const(ips->ips, idx); + if (ip == NULL) { + return NULL; + } + + return &ip->addr; } ares__iface_ip_flags_t ares__iface_ips_get_flags(const ares__iface_ips_t *ips, size_t idx) { - if (ips == NULL || idx >= ips->cnt) { + const ares__iface_ip_t *ip; + + if (ips == NULL) { return 0; } - return ips->ips[idx].flags; + + ip = ares__array_at_const(ips->ips, idx); + if (ip == NULL) { + return 0; + } + + return ip->flags; } unsigned char ares__iface_ips_get_netmask(const ares__iface_ips_t *ips, size_t idx) { - if (ips == NULL || idx >= ips->cnt) { + const ares__iface_ip_t *ip; + + if (ips == NULL) { return 0; } - return ips->ips[idx].netmask; + + ip = ares__array_at_const(ips->ips, idx); + if (ip == NULL) { + return 0; + } + + return ip->netmask; } unsigned int ares__iface_ips_get_ll_scope(const ares__iface_ips_t *ips, size_t idx) { - if (ips == NULL || idx >= ips->cnt) { + const ares__iface_ip_t *ip; + + if (ips == NULL) { return 0; } - return ips->ips[idx].ll_scope; + + ip = ares__array_at_const(ips->ips, idx); + if (ip == NULL) { + return 0; + } + + return ip->ll_scope; } diff --git a/lib/c-ares-1.32.3/src/lib/ares__iface_ips.h b/lib/c-ares-1.33.0/src/lib/util/ares__iface_ips.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__iface_ips.h rename to lib/c-ares-1.33.0/src/lib/util/ares__iface_ips.h diff --git a/lib/c-ares-1.32.3/src/lib/ares__threads.c b/lib/c-ares-1.33.0/src/lib/util/ares__threads.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__threads.c rename to lib/c-ares-1.33.0/src/lib/util/ares__threads.c diff --git a/lib/c-ares-1.32.3/src/lib/ares__threads.h b/lib/c-ares-1.33.0/src/lib/util/ares__threads.h similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares__threads.h rename to lib/c-ares-1.33.0/src/lib/util/ares__threads.h diff --git a/lib/c-ares-1.32.3/src/lib/ares__timeval.c b/lib/c-ares-1.33.0/src/lib/util/ares__timeval.c similarity index 98% rename from lib/c-ares-1.32.3/src/lib/ares__timeval.c rename to lib/c-ares-1.33.0/src/lib/util/ares__timeval.c index 66d07441c80..e3a989dca87 100644 --- a/lib/c-ares-1.32.3/src/lib/ares__timeval.c +++ b/lib/c-ares-1.33.0/src/lib/util/ares__timeval.c @@ -47,7 +47,7 @@ void ares__tvnow(ares_timeval_t *now) /* We want to prevent overflows so we get the remainder, then multiply to * microseconds before dividing */ now->usec = (unsigned int)(((current.QuadPart % freq.QuadPart) * 1000000) / - freq.QuadPart); + freq.QuadPart); } #elif defined(HAVE_CLOCK_GETTIME_MONOTONIC) diff --git a/lib/c-ares-1.32.3/src/lib/ares_math.c b/lib/c-ares-1.33.0/src/lib/util/ares_math.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_math.c rename to lib/c-ares-1.33.0/src/lib/util/ares_math.c diff --git a/lib/c-ares-1.32.3/src/lib/ares_rand.c b/lib/c-ares-1.33.0/src/lib/util/ares_rand.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/ares_rand.c rename to lib/c-ares-1.33.0/src/lib/util/ares_rand.c diff --git a/lib/c-ares-1.32.3/src/lib/windows_port.c b/lib/c-ares-1.33.0/src/lib/windows_port.c similarity index 100% rename from lib/c-ares-1.32.3/src/lib/windows_port.c rename to lib/c-ares-1.33.0/src/lib/windows_port.c diff --git a/lib/c-ares-1.32.3/src/tools/CMakeLists.txt b/lib/c-ares-1.33.0/src/tools/CMakeLists.txt similarity index 100% rename from lib/c-ares-1.32.3/src/tools/CMakeLists.txt rename to lib/c-ares-1.33.0/src/tools/CMakeLists.txt diff --git a/lib/c-ares-1.32.3/src/tools/Makefile.am b/lib/c-ares-1.33.0/src/tools/Makefile.am similarity index 100% rename from lib/c-ares-1.32.3/src/tools/Makefile.am rename to lib/c-ares-1.33.0/src/tools/Makefile.am diff --git a/lib/c-ares-1.32.3/src/tools/Makefile.in b/lib/c-ares-1.33.0/src/tools/Makefile.in similarity index 85% rename from lib/c-ares-1.32.3/src/tools/Makefile.in rename to lib/c-ares-1.33.0/src/tools/Makefile.in index 0b7a310baaa..9c896092b1e 100644 --- a/lib/c-ares-1.32.3/src/tools/Makefile.in +++ b/lib/c-ares-1.33.0/src/tools/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. +# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2021 Free Software Foundation, Inc. +# Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -70,6 +70,8 @@ am__make_running_with_option = \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -126,7 +128,7 @@ am__EXEEXT_1 = ahost$(EXEEXT) adig$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) am__dirstamp = $(am__leading_dot)dirstamp am__objects_1 = adig-ares_getopt.$(OBJEXT) \ - ../lib/adig-ares_strcasecmp.$(OBJEXT) + ../lib/str/adig-ares_strcasecmp.$(OBJEXT) am__objects_2 = am_adig_OBJECTS = adig-adig.$(OBJEXT) $(am__objects_1) \ $(am__objects_2) @@ -143,7 +145,7 @@ adig_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(adig_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__objects_3 = ahost-ares_getopt.$(OBJEXT) \ - ../lib/ahost-ares_strcasecmp.$(OBJEXT) + ../lib/str/ahost-ares_strcasecmp.$(OBJEXT) am_ahost_OBJECTS = ahost-ahost.$(OBJEXT) $(am__objects_3) \ $(am__objects_2) ahost_OBJECTS = $(am_ahost_OBJECTS) @@ -168,8 +170,8 @@ am__v_at_1 = DEFAULT_INCLUDES = depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ../lib/$(DEPDIR)/adig-ares_strcasecmp.Po \ - ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Po \ +am__depfiles_remade = ../lib/str/$(DEPDIR)/adig-ares_strcasecmp.Po \ + ../lib/str/$(DEPDIR)/ahost-ares_strcasecmp.Po \ ./$(DEPDIR)/adig-adig.Po ./$(DEPDIR)/adig-ares_getopt.Po \ ./$(DEPDIR)/ahost-ahost.Po ./$(DEPDIR)/ahost-ares_getopt.Po am__mv = mv -f @@ -335,8 +337,10 @@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ @@ -391,10 +395,10 @@ EXTRA_DIST = CMakeLists.txt Makefile.inc # Copyright (C) The c-ares project and its contributors # SPDX-License-Identifier: MIT SAMPLESOURCES = ares_getopt.c \ - ../lib/ares_strcasecmp.c + ../lib/str/ares_strcasecmp.c SAMPLEHEADERS = ares_getopt.h \ - ../lib/ares_strcasecmp.h + ../lib/str/ares_strcasecmp.h # We're not interested in code coverage of the test apps themselves, but need @@ -442,27 +446,23 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -../lib/$(am__dirstamp): - @$(MKDIR_P) ../lib - @: > ../lib/$(am__dirstamp) -../lib/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) ../lib/$(DEPDIR) - @: > ../lib/$(DEPDIR)/$(am__dirstamp) -../lib/adig-ares_strcasecmp.$(OBJEXT): ../lib/$(am__dirstamp) \ - ../lib/$(DEPDIR)/$(am__dirstamp) + $(am__rm_f) $(noinst_PROGRAMS) + test -z "$(EXEEXT)" || $(am__rm_f) $(noinst_PROGRAMS:$(EXEEXT)=) +../lib/str/$(am__dirstamp): + @$(MKDIR_P) ../lib/str + @: >>../lib/str/$(am__dirstamp) +../lib/str/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) ../lib/str/$(DEPDIR) + @: >>../lib/str/$(DEPDIR)/$(am__dirstamp) +../lib/str/adig-ares_strcasecmp.$(OBJEXT): ../lib/str/$(am__dirstamp) \ + ../lib/str/$(DEPDIR)/$(am__dirstamp) adig$(EXEEXT): $(adig_OBJECTS) $(adig_DEPENDENCIES) $(EXTRA_adig_DEPENDENCIES) @rm -f adig$(EXEEXT) $(AM_V_CCLD)$(adig_LINK) $(adig_OBJECTS) $(adig_LDADD) $(LIBS) -../lib/ahost-ares_strcasecmp.$(OBJEXT): ../lib/$(am__dirstamp) \ - ../lib/$(DEPDIR)/$(am__dirstamp) +../lib/str/ahost-ares_strcasecmp.$(OBJEXT): \ + ../lib/str/$(am__dirstamp) \ + ../lib/str/$(DEPDIR)/$(am__dirstamp) ahost$(EXEEXT): $(ahost_OBJECTS) $(ahost_DEPENDENCIES) $(EXTRA_ahost_DEPENDENCIES) @rm -f ahost$(EXEEXT) @@ -470,13 +470,13 @@ ahost$(EXEEXT): $(ahost_OBJECTS) $(ahost_DEPENDENCIES) $(EXTRA_ahost_DEPENDENCIE mostlyclean-compile: -rm -f *.$(OBJEXT) - -rm -f ../lib/*.$(OBJEXT) + -rm -f ../lib/str/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/adig-ares_strcasecmp.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/ahost-ares_strcasecmp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@../lib/str/$(DEPDIR)/adig-ares_strcasecmp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@../lib/str/$(DEPDIR)/ahost-ares_strcasecmp.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adig-adig.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adig-ares_getopt.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ahost-ahost.Po@am__quote@ # am--include-marker @@ -484,7 +484,7 @@ distclean-compile: $(am__depfiles_remade): @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + @: >>$@ am--depfiles: $(am__depfiles_remade) @@ -540,19 +540,19 @@ adig-ares_getopt.obj: ares_getopt.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -c -o adig-ares_getopt.obj `if test -f 'ares_getopt.c'; then $(CYGPATH_W) 'ares_getopt.c'; else $(CYGPATH_W) '$(srcdir)/ares_getopt.c'; fi` -../lib/adig-ares_strcasecmp.o: ../lib/ares_strcasecmp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -MT ../lib/adig-ares_strcasecmp.o -MD -MP -MF ../lib/$(DEPDIR)/adig-ares_strcasecmp.Tpo -c -o ../lib/adig-ares_strcasecmp.o `test -f '../lib/ares_strcasecmp.c' || echo '$(srcdir)/'`../lib/ares_strcasecmp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/adig-ares_strcasecmp.Tpo ../lib/$(DEPDIR)/adig-ares_strcasecmp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/ares_strcasecmp.c' object='../lib/adig-ares_strcasecmp.o' libtool=no @AMDEPBACKSLASH@ +../lib/str/adig-ares_strcasecmp.o: ../lib/str/ares_strcasecmp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -MT ../lib/str/adig-ares_strcasecmp.o -MD -MP -MF ../lib/str/$(DEPDIR)/adig-ares_strcasecmp.Tpo -c -o ../lib/str/adig-ares_strcasecmp.o `test -f '../lib/str/ares_strcasecmp.c' || echo '$(srcdir)/'`../lib/str/ares_strcasecmp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/str/$(DEPDIR)/adig-ares_strcasecmp.Tpo ../lib/str/$(DEPDIR)/adig-ares_strcasecmp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/str/ares_strcasecmp.c' object='../lib/str/adig-ares_strcasecmp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -c -o ../lib/adig-ares_strcasecmp.o `test -f '../lib/ares_strcasecmp.c' || echo '$(srcdir)/'`../lib/ares_strcasecmp.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -c -o ../lib/str/adig-ares_strcasecmp.o `test -f '../lib/str/ares_strcasecmp.c' || echo '$(srcdir)/'`../lib/str/ares_strcasecmp.c -../lib/adig-ares_strcasecmp.obj: ../lib/ares_strcasecmp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -MT ../lib/adig-ares_strcasecmp.obj -MD -MP -MF ../lib/$(DEPDIR)/adig-ares_strcasecmp.Tpo -c -o ../lib/adig-ares_strcasecmp.obj `if test -f '../lib/ares_strcasecmp.c'; then $(CYGPATH_W) '../lib/ares_strcasecmp.c'; else $(CYGPATH_W) '$(srcdir)/../lib/ares_strcasecmp.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/adig-ares_strcasecmp.Tpo ../lib/$(DEPDIR)/adig-ares_strcasecmp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/ares_strcasecmp.c' object='../lib/adig-ares_strcasecmp.obj' libtool=no @AMDEPBACKSLASH@ +../lib/str/adig-ares_strcasecmp.obj: ../lib/str/ares_strcasecmp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -MT ../lib/str/adig-ares_strcasecmp.obj -MD -MP -MF ../lib/str/$(DEPDIR)/adig-ares_strcasecmp.Tpo -c -o ../lib/str/adig-ares_strcasecmp.obj `if test -f '../lib/str/ares_strcasecmp.c'; then $(CYGPATH_W) '../lib/str/ares_strcasecmp.c'; else $(CYGPATH_W) '$(srcdir)/../lib/str/ares_strcasecmp.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/str/$(DEPDIR)/adig-ares_strcasecmp.Tpo ../lib/str/$(DEPDIR)/adig-ares_strcasecmp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/str/ares_strcasecmp.c' object='../lib/str/adig-ares_strcasecmp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -c -o ../lib/adig-ares_strcasecmp.obj `if test -f '../lib/ares_strcasecmp.c'; then $(CYGPATH_W) '../lib/ares_strcasecmp.c'; else $(CYGPATH_W) '$(srcdir)/../lib/ares_strcasecmp.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -c -o ../lib/str/adig-ares_strcasecmp.obj `if test -f '../lib/str/ares_strcasecmp.c'; then $(CYGPATH_W) '../lib/str/ares_strcasecmp.c'; else $(CYGPATH_W) '$(srcdir)/../lib/str/ares_strcasecmp.c'; fi` ahost-ahost.o: ahost.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -MT ahost-ahost.o -MD -MP -MF $(DEPDIR)/ahost-ahost.Tpo -c -o ahost-ahost.o `test -f 'ahost.c' || echo '$(srcdir)/'`ahost.c @@ -582,19 +582,19 @@ ahost-ares_getopt.obj: ares_getopt.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -c -o ahost-ares_getopt.obj `if test -f 'ares_getopt.c'; then $(CYGPATH_W) 'ares_getopt.c'; else $(CYGPATH_W) '$(srcdir)/ares_getopt.c'; fi` -../lib/ahost-ares_strcasecmp.o: ../lib/ares_strcasecmp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -MT ../lib/ahost-ares_strcasecmp.o -MD -MP -MF ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Tpo -c -o ../lib/ahost-ares_strcasecmp.o `test -f '../lib/ares_strcasecmp.c' || echo '$(srcdir)/'`../lib/ares_strcasecmp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Tpo ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/ares_strcasecmp.c' object='../lib/ahost-ares_strcasecmp.o' libtool=no @AMDEPBACKSLASH@ +../lib/str/ahost-ares_strcasecmp.o: ../lib/str/ares_strcasecmp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -MT ../lib/str/ahost-ares_strcasecmp.o -MD -MP -MF ../lib/str/$(DEPDIR)/ahost-ares_strcasecmp.Tpo -c -o ../lib/str/ahost-ares_strcasecmp.o `test -f '../lib/str/ares_strcasecmp.c' || echo '$(srcdir)/'`../lib/str/ares_strcasecmp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/str/$(DEPDIR)/ahost-ares_strcasecmp.Tpo ../lib/str/$(DEPDIR)/ahost-ares_strcasecmp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/str/ares_strcasecmp.c' object='../lib/str/ahost-ares_strcasecmp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -c -o ../lib/ahost-ares_strcasecmp.o `test -f '../lib/ares_strcasecmp.c' || echo '$(srcdir)/'`../lib/ares_strcasecmp.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -c -o ../lib/str/ahost-ares_strcasecmp.o `test -f '../lib/str/ares_strcasecmp.c' || echo '$(srcdir)/'`../lib/str/ares_strcasecmp.c -../lib/ahost-ares_strcasecmp.obj: ../lib/ares_strcasecmp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -MT ../lib/ahost-ares_strcasecmp.obj -MD -MP -MF ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Tpo -c -o ../lib/ahost-ares_strcasecmp.obj `if test -f '../lib/ares_strcasecmp.c'; then $(CYGPATH_W) '../lib/ares_strcasecmp.c'; else $(CYGPATH_W) '$(srcdir)/../lib/ares_strcasecmp.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Tpo ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/ares_strcasecmp.c' object='../lib/ahost-ares_strcasecmp.obj' libtool=no @AMDEPBACKSLASH@ +../lib/str/ahost-ares_strcasecmp.obj: ../lib/str/ares_strcasecmp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -MT ../lib/str/ahost-ares_strcasecmp.obj -MD -MP -MF ../lib/str/$(DEPDIR)/ahost-ares_strcasecmp.Tpo -c -o ../lib/str/ahost-ares_strcasecmp.obj `if test -f '../lib/str/ares_strcasecmp.c'; then $(CYGPATH_W) '../lib/str/ares_strcasecmp.c'; else $(CYGPATH_W) '$(srcdir)/../lib/str/ares_strcasecmp.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/str/$(DEPDIR)/ahost-ares_strcasecmp.Tpo ../lib/str/$(DEPDIR)/ahost-ares_strcasecmp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/str/ares_strcasecmp.c' object='../lib/str/ahost-ares_strcasecmp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -c -o ../lib/ahost-ares_strcasecmp.obj `if test -f '../lib/ares_strcasecmp.c'; then $(CYGPATH_W) '../lib/ares_strcasecmp.c'; else $(CYGPATH_W) '$(srcdir)/../lib/ares_strcasecmp.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -c -o ../lib/str/ahost-ares_strcasecmp.obj `if test -f '../lib/str/ares_strcasecmp.c'; then $(CYGPATH_W) '../lib/str/ares_strcasecmp.c'; else $(CYGPATH_W) '$(srcdir)/../lib/str/ares_strcasecmp.c'; fi` mostlyclean-libtool: -rm -f *.lo @@ -714,10 +714,10 @@ mostlyclean-generic: clean-generic: distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -rm -f ../lib/$(DEPDIR)/$(am__dirstamp) - -rm -f ../lib/$(am__dirstamp) + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + -$(am__rm_f) ../lib/str/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) ../lib/str/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -728,8 +728,8 @@ clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am - -rm -f ../lib/$(DEPDIR)/adig-ares_strcasecmp.Po - -rm -f ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Po + -rm -f ../lib/str/$(DEPDIR)/adig-ares_strcasecmp.Po + -rm -f ../lib/str/$(DEPDIR)/ahost-ares_strcasecmp.Po -rm -f ./$(DEPDIR)/adig-adig.Po -rm -f ./$(DEPDIR)/adig-ares_getopt.Po -rm -f ./$(DEPDIR)/ahost-ahost.Po @@ -779,8 +779,8 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -f ../lib/$(DEPDIR)/adig-ares_strcasecmp.Po - -rm -f ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Po + -rm -f ../lib/str/$(DEPDIR)/adig-ares_strcasecmp.Po + -rm -f ../lib/str/$(DEPDIR)/ahost-ares_strcasecmp.Po -rm -f ./$(DEPDIR)/adig-adig.Po -rm -f ./$(DEPDIR)/adig-ares_getopt.Po -rm -f ./$(DEPDIR)/ahost-ahost.Po @@ -825,3 +825,10 @@ uninstall-am: # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/lib/c-ares-1.32.3/src/tools/Makefile.inc b/lib/c-ares-1.33.0/src/tools/Makefile.inc similarity index 71% rename from lib/c-ares-1.32.3/src/tools/Makefile.inc rename to lib/c-ares-1.33.0/src/tools/Makefile.inc index dd081b3005d..4c6b6aaa978 100644 --- a/lib/c-ares-1.32.3/src/tools/Makefile.inc +++ b/lib/c-ares-1.33.0/src/tools/Makefile.inc @@ -1,7 +1,7 @@ # Copyright (C) The c-ares project and its contributors # SPDX-License-Identifier: MIT SAMPLESOURCES = ares_getopt.c \ - ../lib/ares_strcasecmp.c + ../lib/str/ares_strcasecmp.c SAMPLEHEADERS = ares_getopt.h \ - ../lib/ares_strcasecmp.h + ../lib/str/ares_strcasecmp.h diff --git a/lib/c-ares-1.32.3/src/tools/adig.c b/lib/c-ares-1.33.0/src/tools/adig.c similarity index 90% rename from lib/c-ares-1.32.3/src/tools/adig.c rename to lib/c-ares-1.33.0/src/tools/adig.c index 026340c72bf..8b2ad2e96a6 100644 --- a/lib/c-ares-1.32.3/src/tools/adig.c +++ b/lib/c-ares-1.33.0/src/tools/adig.c @@ -46,17 +46,17 @@ #include "ares_dns.h" #ifndef HAVE_STRDUP -# include "ares_str.h" +# include "str/ares_str.h" # define strdup(ptr) ares_strdup(ptr) #endif #ifndef HAVE_STRCASECMP -# include "ares_strcasecmp.h" +# include "str/ares_strcasecmp.h" # define strcasecmp(p1, p2) ares_strcasecmp(p1, p2) #endif #ifndef HAVE_STRNCASECMP -# include "ares_strcasecmp.h" +# include "str/ares_strcasecmp.h" # define strncasecmp(p1, p2, n) ares_strncasecmp(p1, p2, n) #endif @@ -120,35 +120,30 @@ static void print_help(void) printf( "usage: adig [-h] [-d] [-f flag] [[-s server] ...] [-T|U port] [-c class]\n" " [-t type] name ...\n\n"); + printf(" -h : Display this help and exit.\n"); + printf(" -d : Print some extra debugging output.\n"); printf( - " -h : Display this help and exit.\n"); - printf( - " -d : Print some extra debugging output.\n"); - printf( - " -f flag : Add a behavior control flag. May be specified more than once\n" + " -f flag : Add a behavior control flag. May be specified more than " + "once\n" " to add additional flags. Possible values are:\n" " igntc - do not retry a truncated query as TCP, just\n" " return the truncated answer\n" " noaliases - don't honor the HOSTALIASES environment\n" " variable\n"); - printf( - " norecurse - don't query upstream servers recursively\n" - " primary - use the first server\n" - " stayopen - don't close the communication sockets\n" - " usevc - use TCP only\n" - " edns - use EDNS\n" - " dns0x20 - enable DNS 0x20 support\n"); + printf(" norecurse - don't query upstream servers recursively\n" + " primary - use the first server\n" + " stayopen - don't close the communication sockets\n" + " usevc - use TCP only\n" + " edns - use EDNS\n" + " dns0x20 - enable DNS 0x20 support\n"); printf( " -s server : Connect to the specified DNS server, instead of the\n" " system's default one(s). Servers are tried in round-robin,\n" " if the previous one failed.\n"); - printf( - " -T port : Connect to the specified TCP port of DNS server.\n"); - printf( - " -U port : Connect to the specified UDP port of DNS server.\n"); - printf( - " -c class : Set the query class. Possible values for class are:\n" - " ANY, CHAOS, HS and IN (default)\n"); + printf(" -T port : Connect to the specified TCP port of DNS server.\n"); + printf(" -U port : Connect to the specified UDP port of DNS server.\n"); + printf(" -c class : Set the query class. Possible values for class are:\n" + " ANY, CHAOS, HS and IN (default)\n"); printf( " -t type : Query records of the specified type. Possible values for\n" " type are:\n" @@ -156,7 +151,7 @@ static void print_help(void) " SOA, SRV, TXT, TLSA, URI, CAA, SVCB, HTTPS\n\n"); } -static ares_bool_t read_cmdline(int argc, const char * const * argv, +static ares_bool_t read_cmdline(int argc, const char * const *argv, adig_config_t *config) { ares_getopt_state_t state; @@ -219,26 +214,35 @@ static ares_bool_t read_cmdline(int argc, const char * const * argv, break; case 'T': - /* Set the TCP port number. */ - if (!isdigit(*state.optarg)) { - snprintf(config->error, sizeof(config->error), "invalid port number"); - return ARES_FALSE; + { + /* Set the TCP port number. */ + long port = strtol(state.optarg, NULL, 0); + + if (port <= 0 || port > 65535) { + snprintf(config->error, sizeof(config->error), + "invalid port number"); + return ARES_FALSE; + } + config->options.tcp_port = (unsigned short)port; + config->options.flags |= ARES_FLAG_USEVC; + config->optmask |= ARES_OPT_TCP_PORT; } - config->options.tcp_port = - (unsigned short)strtol(state.optarg, NULL, 0); - config->options.flags |= ARES_FLAG_USEVC; - config->optmask |= ARES_OPT_TCP_PORT; break; case 'U': - /* Set the UDP port number. */ - if (!isdigit(*state.optarg)) { - snprintf(config->error, sizeof(config->error), "invalid port number"); - return ARES_FALSE; + { + /* Set the TCP port number. */ + long port = strtol(state.optarg, NULL, 0); + + if (port <= 0 || port > 65535) { + snprintf(config->error, sizeof(config->error), + "invalid port number"); + return ARES_FALSE; + } + config->options.udp_port = (unsigned short)port; + config->options.flags |= ARES_FLAG_USEVC; + config->optmask |= ARES_OPT_UDP_PORT; } - config->options.udp_port = - (unsigned short)strtol(state.optarg, NULL, 0); - config->optmask |= ARES_OPT_UDP_PORT; break; case ':': @@ -630,10 +634,10 @@ static void print_binp(const ares_dns_rr_t *rr, ares_dns_rr_key_t key) static void print_abinp(const ares_dns_rr_t *rr, ares_dns_rr_key_t key) { - size_t i; - size_t cnt = ares_dns_rr_get_abin_cnt(rr, key); + size_t i; + size_t cnt = ares_dns_rr_get_abin_cnt(rr, key); - for (i=0; iopterr = 1; diff --git a/lib/c-ares-1.32.3/src/tools/ares_getopt.h b/lib/c-ares-1.33.0/src/tools/ares_getopt.h similarity index 80% rename from lib/c-ares-1.32.3/src/tools/ares_getopt.h rename to lib/c-ares-1.33.0/src/tools/ares_getopt.h index 7ff1fdeeb28..a8007b2dee0 100644 --- a/lib/c-ares-1.32.3/src/tools/ares_getopt.h +++ b/lib/c-ares-1.33.0/src/tools/ares_getopt.h @@ -34,16 +34,17 @@ typedef struct { - const char *optarg; /* argument associated with option */ - int optind; /* index into parent argv vector */ - int opterr; /* if error message should be printed */ - int optopt; /* character checked for validity */ - const char *place; - int argc; + const char *optarg; /* argument associated with option */ + int optind; /* index into parent argv vector */ + int opterr; /* if error message should be printed */ + int optopt; /* character checked for validity */ + const char *place; + int argc; const char * const *argv; } ares_getopt_state_t; -void ares_getopt_init(ares_getopt_state_t *state, int argc, const char * const * argv); +void ares_getopt_init(ares_getopt_state_t *state, int argc, + const char * const *argv); int ares_getopt(ares_getopt_state_t *state, const char *ostr); #endif /* ARES_GETOPT_H */ diff --git a/lib/c-ares-1.32.3/test/CMakeLists.txt b/lib/c-ares-1.33.0/test/CMakeLists.txt similarity index 80% rename from lib/c-ares-1.32.3/test/CMakeLists.txt rename to lib/c-ares-1.33.0/test/CMakeLists.txt index e397d6e1b9e..8bed6018442 100644 --- a/lib/c-ares-1.32.3/test/CMakeLists.txt +++ b/lib/c-ares-1.33.0/test/CMakeLists.txt @@ -9,8 +9,12 @@ ENDIF () find_package(Threads) find_package(GTest REQUIRED) -IF (NOT TARGET GTest::gmock) - Message(FATAL_ERROR "GoogleTest found but the GMock component was not found") +IF (CMAKE_VERSION VERSION_LESS "3.23.0") + Message("GoogleTest found, cmake version too old to verify GMock, look for errors...") +ELSE () + IF (NOT TARGET GTest::gmock) + Message(FATAL_ERROR "GoogleTest found but the GMock component was not found") + ENDIF() ENDIF() # create target to access and use internal cares library @@ -36,8 +40,15 @@ include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake) add_executable(arestest ${TESTSOURCES} ${TESTHEADERS}) target_include_directories(arestest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) -target_link_libraries(arestest PRIVATE caresinternal GTest::gmock) - +IF (CMAKE_VERSION VERSION_LESS "3.23.0") + FIND_LIBRARY(LIBGMOCK NAMES gmock PATHS ${GTEST_ROOT} PATH_SUFFIXES lib) + IF (LIBGMOCK-NOTFOUND) + MESSAGE(FATAL_ERROR "Could not find Gmock") + ENDIF () + target_link_libraries(arestest PRIVATE caresinternal GTest::GTest ${LIBGMOCK}) +ELSE () + target_link_libraries(arestest PRIVATE caresinternal GTest::gmock) +ENDIF() target_compile_definitions(arestest PRIVATE CARES_NO_DEPRECATED) IF (CARES_BUILD_CONTAINER_TESTS) diff --git a/lib/c-ares-1.32.3/test/Makefile.am b/lib/c-ares-1.33.0/test/Makefile.am similarity index 100% rename from lib/c-ares-1.32.3/test/Makefile.am rename to lib/c-ares-1.33.0/test/Makefile.am diff --git a/lib/c-ares-1.32.3/test/Makefile.in b/lib/c-ares-1.33.0/test/Makefile.in similarity index 97% rename from lib/c-ares-1.32.3/test/Makefile.in rename to lib/c-ares-1.33.0/test/Makefile.in index d04094a43b1..2a2c05efaed 100644 --- a/lib/c-ares-1.32.3/test/Makefile.in +++ b/lib/c-ares-1.33.0/test/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. +# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2021 Free Software Foundation, Inc. +# Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -70,6 +70,8 @@ am__make_running_with_option = \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -333,10 +335,9 @@ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ + { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* @@ -424,6 +425,7 @@ am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ + $$am__collect_skipped_logs \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the @@ -448,6 +450,11 @@ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ +if test -n '$(IGNORE_SKIPPED_LOGS)'; then \ + am__collect_skipped_logs='--collect-skipped-logs no'; \ +else \ + am__collect_skipped_logs=''; \ +fi; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ @@ -611,8 +618,10 @@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ @@ -755,13 +764,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list + $(am__rm_f) $(noinst_PROGRAMS) + test -z "$(EXEEXT)" || $(am__rm_f) $(noinst_PROGRAMS:$(EXEEXT)=) ares_queryloop$(EXEEXT): $(ares_queryloop_OBJECTS) $(ares_queryloop_DEPENDENCIES) $(EXTRA_ares_queryloop_DEPENDENCIES) @rm -f ares_queryloop$(EXEEXT) @@ -823,7 +827,7 @@ distclean-compile: $(am__depfiles_remade): @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + @: >>$@ am--depfiles: $(am__depfiles_remade) @@ -1296,7 +1300,6 @@ distclean-tags: am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: - $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ @@ -1372,10 +1375,37 @@ $(TEST_SUITE_LOG): $(TEST_LOGS) result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ + output_system_information () \ + { \ + echo; \ + { uname -a | $(AWK) '{ \ + printf "System information (uname -a):"; \ + for (i = 1; i < NF; ++i) \ + { \ + if (i != 2) \ + printf " %s", $$i; \ + } \ + printf "\n"; \ +}'; } 2>&1; \ + if test -r /etc/os-release; then \ + echo "Distribution information (/etc/os-release):"; \ + sed 8q /etc/os-release; \ + elif test -r /etc/issue; then \ + echo "Distribution information (/etc/issue):"; \ + cat /etc/issue; \ + fi; \ + }; \ + please_report () \ + { \ +echo "Some test(s) failed. Please report this to $(PACKAGE_BUGREPORT),"; \ +echo "together with the test-suite.log file (gzipped) and your system"; \ +echo "information. Thanks."; \ + }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ + output_system_information; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ @@ -1395,26 +1425,25 @@ $(TEST_SUITE_LOG): $(TEST_LOGS) create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ - echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG) for debugging.$${std}";\ if test -n "$(PACKAGE_BUGREPORT)"; then \ - echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + please_report | sed -e "s/^/$${col}/" -e s/'$$'/"$${std}"/; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: - @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list - @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list - @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @$(am__rm_f) $(RECHECK_LOGS) + @$(am__rm_f) $(RECHECK_LOGS:.log=.trs) + @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ - trs_list=`for i in $$bases; do echo $$i.trs; done`; \ - log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all - @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ @@ -1510,15 +1539,15 @@ install-strip: "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: - -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) - -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) - -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + -$(am__rm_f) $(TEST_LOGS) + -$(am__rm_f) $(TEST_LOGS:.log=.trs) + -$(am__rm_f) $(TEST_SUITE_LOG) clean-generic: distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -1529,7 +1558,7 @@ clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am - -rm -f ./$(DEPDIR)/ares-fuzz.Po + -rm -f ./$(DEPDIR)/ares-fuzz.Po -rm -f ./$(DEPDIR)/ares-test-fuzz-name.Po -rm -f ./$(DEPDIR)/ares-test-fuzz.Po -rm -f ./$(DEPDIR)/ares_queryloop.Po @@ -1605,7 +1634,7 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/ares-fuzz.Po + -rm -f ./$(DEPDIR)/ares-fuzz.Po -rm -f ./$(DEPDIR)/ares-test-fuzz-name.Po -rm -f ./$(DEPDIR)/ares-test-fuzz.Po -rm -f ./$(DEPDIR)/ares_queryloop.Po @@ -1679,3 +1708,10 @@ test: check # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/lib/c-ares-1.32.3/test/Makefile.inc b/lib/c-ares-1.33.0/test/Makefile.inc similarity index 100% rename from lib/c-ares-1.32.3/test/Makefile.inc rename to lib/c-ares-1.33.0/test/Makefile.inc diff --git a/lib/c-ares-1.32.3/test/Makefile.m32 b/lib/c-ares-1.33.0/test/Makefile.m32 similarity index 100% rename from lib/c-ares-1.32.3/test/Makefile.m32 rename to lib/c-ares-1.33.0/test/Makefile.m32 diff --git a/lib/c-ares-1.32.3/test/Makefile.msvc b/lib/c-ares-1.33.0/test/Makefile.msvc similarity index 92% rename from lib/c-ares-1.32.3/test/Makefile.msvc rename to lib/c-ares-1.33.0/test/Makefile.msvc index bb2648c246a..9c81b6c17b1 100644 --- a/lib/c-ares-1.32.3/test/Makefile.msvc +++ b/lib/c-ares-1.33.0/test/Makefile.msvc @@ -62,11 +62,6 @@ RTLIB = /MT RTLIBD = /MTd !ENDIF -# -------------------------------------------------------- -# Detect compiler version. -# -------------------------------------------------------- -!INCLUDE ..\msvc_ver.inc - # --------------------------------------------------------- # Verify that current subdir is below the c-ares source one # --------------------------------------------------------- @@ -148,30 +143,13 @@ CFLAGS = /DWIN32 EX_LIBS_REL = ws2_32.lib advapi32.lib kernel32.lib iphlpapi.lib EX_LIBS_DBG = ws2_32.lib advapi32.lib kernel32.lib iphlpapi.lib -# ------------------------------------------------- -# Switches that depend on ancient compiler versions -# ------------------------------------------------- - -!IF $(CC_VERS_NUM) == 60 -PDB_NONE = /pdb:none -PDBTYPE_CONSOLIDATE = /pdbtype:consolidate -!ELSE -!UNDEF PDB_NONE -!UNDEF PDBTYPE_CONSOLIDATE -!ENDIF - -!IF $(CC_VERS_NUM) <= 70 -RT_ERROR_CHECKING = /GZ -!ELSE -RT_ERROR_CHECKING = /RTCsu -!ENDIF # ---------------------------- # Assorted commands and flags # ---------------------------- CC_CMD_REL = cl.exe /nologo $(RTLIB) /DNDEBUG /O2 /D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS -CC_CMD_DBG = cl.exe /nologo $(RTLIBD) /D_DEBUG /Od /Zi /D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS $(RT_ERROR_CHECKING) +CC_CMD_DBG = cl.exe /nologo $(RTLIBD) /D_DEBUG /Od /Zi /D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS /RTCsu CC_CFLAGS = $(CFLAGS) /I. /I../src/lib /I../include /I $(GTEST_ROOT)/include /W3 /EHsc /FD RC_CMD_REL = rc.exe /l 0x409 /d "NDEBUG" @@ -181,8 +159,8 @@ LINK_CMD_LIB = link.exe /lib /nologo LINK_CMD_DLL = link.exe /dll /nologo /incremental:no /fixed:no LINK_CMD_EXE = link.exe /nologo /incremental:no /fixed:no /subsystem:console -LINK_CMD_EXE_REL = $(LINK_CMD_EXE) /release $(PDB_NONE) -LINK_CMD_EXE_DBG = $(LINK_CMD_EXE) /debug $(PDBTYPE_CONSOLIDATE) +LINK_CMD_EXE_REL = $(LINK_CMD_EXE) /release +LINK_CMD_EXE_DBG = $(LINK_CMD_EXE) /debug # --------------------------------- # Configuration dependent settings @@ -213,7 +191,7 @@ CC_CMD = $(CC_CMD_DBG) !IF "$(CFG)" == "dll-release" CARES_TARGET = $(DYN_LIB_REL).dll CARES_CFLAGS = /DCARES_BUILDING_LIBRARY -CARES_LFLAGS = /release $(EX_LIBS_REL) /implib:$(PROG_OUTDIR)\$(IMP_LIB_REL).lib $(PDB_NONE) +CARES_LFLAGS = /release $(EX_LIBS_REL) /implib:$(PROG_OUTDIR)\$(IMP_LIB_REL).lib SPROG_CFLAGS = /DCARES_NO_DEPRECATED SPROG_LFLAGS = /libpath:$(LIB_OUTDIR) $(EX_LIBS_REL) $(IMP_LIB_REL).lib CARES_LINK = $(LINK_CMD_DLL) @@ -226,7 +204,7 @@ RC_CMD = $(RC_CMD_REL) !IF "$(CFG)" == "dll-debug" CARES_TARGET = $(DYN_LIB_DBG).dll CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DDEBUGBUILD -CARES_LFLAGS = /debug $(EX_LIBS_DBG) /implib:$(PROG_OUTDIR)\$(IMP_LIB_DBG).lib /pdb:$(PROG_OUTDIR)\$(DYN_LIB_DBG).pdb $(PDBTYPE_CONSOLIDATE) +CARES_LFLAGS = /debug $(EX_LIBS_DBG) /implib:$(PROG_OUTDIR)\$(IMP_LIB_DBG).lib /pdb:$(PROG_OUTDIR)\$(DYN_LIB_DBG).pdb SPROG_CFLAGS = /DCARES_NO_DEPRECATED SPROG_LFLAGS = /libpath:$(LIB_OUTDIR) $(EX_LIBS_DBG) $(IMP_LIB_DBG).lib CARES_LINK = $(LINK_CMD_DLL) diff --git a/lib/c-ares-1.32.3/test/README.md b/lib/c-ares-1.33.0/test/README.md similarity index 100% rename from lib/c-ares-1.32.3/test/README.md rename to lib/c-ares-1.33.0/test/README.md diff --git a/lib/c-ares-1.32.3/test/ares-fuzz.c b/lib/c-ares-1.33.0/test/ares-fuzz.c similarity index 100% rename from lib/c-ares-1.32.3/test/ares-fuzz.c rename to lib/c-ares-1.33.0/test/ares-fuzz.c diff --git a/lib/c-ares-1.32.3/test/ares-test-ai.h b/lib/c-ares-1.33.0/test/ares-test-ai.h similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-ai.h rename to lib/c-ares-1.33.0/test/ares-test-ai.h diff --git a/lib/c-ares-1.32.3/test/ares-test-fuzz-name.c b/lib/c-ares-1.33.0/test/ares-test-fuzz-name.c similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-fuzz-name.c rename to lib/c-ares-1.33.0/test/ares-test-fuzz-name.c diff --git a/lib/c-ares-1.32.3/test/ares-test-fuzz.c b/lib/c-ares-1.33.0/test/ares-test-fuzz.c similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-fuzz.c rename to lib/c-ares-1.33.0/test/ares-test-fuzz.c diff --git a/lib/c-ares-1.32.3/test/ares-test-init.cc b/lib/c-ares-1.33.0/test/ares-test-init.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-init.cc rename to lib/c-ares-1.33.0/test/ares-test-init.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-internal.cc b/lib/c-ares-1.33.0/test/ares-test-internal.cc similarity index 91% rename from lib/c-ares-1.32.3/test/ares-test-internal.cc rename to lib/c-ares-1.33.0/test/ares-test-internal.cc index 74b10d92c07..8125653d314 100644 --- a/lib/c-ares-1.32.3/test/ares-test-internal.cc +++ b/lib/c-ares-1.33.0/test/ares-test-internal.cc @@ -45,8 +45,8 @@ extern "C" { #include "ares_private.h" #include "ares_inet_net_pton.h" #include "ares_data.h" -#include "ares_strsplit.h" -#include "ares__htable.h" +#include "str/ares_strsplit.h" +#include "dsa/ares__htable.h" #ifdef HAVE_ARPA_INET_H #include @@ -783,10 +783,12 @@ TEST_F(LibraryTest, DNSRecord) { /* TODO */ break; case ARES_DATATYPE_BINP: - ares__buf_append_byte(printmsg, '"'); - size_t templen; - ares__buf_append_str(printmsg, (const char *)ares_dns_rr_get_bin(rr, keys[k], &templen)); - ares__buf_append_byte(printmsg, '"'); + { + ares__buf_append_byte(printmsg, '"'); + size_t templen; + ares__buf_append_str(printmsg, (const char *)ares_dns_rr_get_bin(rr, keys[k], &templen)); + ares__buf_append_byte(printmsg, '"'); + } break; case ARES_DATATYPE_ABINP: for (size_t a=0; aid = id; + m->buf = ares__buf_create(); + ares__buf_append_be32(m->buf, id); +} + +static void array_member_destroy(void *mb) +{ + array_member_t *m = (array_member_t *)mb; + ares__buf_destroy(m->buf); +} + +static int array_sort_cmp(const void *data1, const void *data2) +{ + const array_member_t *m1 = (const array_member_t *)data1; + const array_member_t *m2 = (const array_member_t *)data2; + if (m1->id > m2->id) + return 1; + if (m1->id < m2->id) + return -1; + return 0; +} + +TEST_F(LibraryTest, Array) { + ares__array_t *a = NULL; + array_member_t *m = NULL; + array_member_t mbuf; + unsigned int cnt = 0; + unsigned int removed = 0; + void *ptr = NULL; + size_t i; + + a = ares__array_create(sizeof(array_member_t), array_member_destroy); + EXPECT_NE(nullptr, a); + + /* Add 8 elements */ + for ( ; cnt < 8 ; cnt++) { + EXPECT_EQ(ARES_SUCCESS, ares__array_insert_last(&ptr, a)); + array_member_init(ptr, cnt+1); + } + + /* Verify count */ + EXPECT_EQ(cnt, ares__array_len(a)); + + /* Remove the first 2 elements */ + EXPECT_EQ(ARES_SUCCESS, ares__array_remove_first(a)); + EXPECT_EQ(ARES_SUCCESS, ares__array_remove_first(a)); + removed += 2; + + /* Verify count */ + EXPECT_EQ(cnt-removed, ares__array_len(a)); + + /* Verify id of first element */ + m = (array_member_t *)ares__array_first(a); + EXPECT_NE(nullptr, m); + EXPECT_EQ(3, m->id); + + + /* Add 100 total elements, this should force a shift of memory at some + * to make sure moves are working */ + for ( ; cnt < 100 ; cnt++) { + EXPECT_EQ(ARES_SUCCESS, ares__array_insert_last(&ptr, a)); + array_member_init(ptr, cnt+1); + } + + /* Verify count */ + EXPECT_EQ(cnt-removed, ares__array_len(a)); + + /* Remove 2 from the end */ + EXPECT_EQ(ARES_SUCCESS, ares__array_remove_last(a)); + EXPECT_EQ(ARES_SUCCESS, ares__array_remove_last(a)); + removed += 2; + + /* Verify count */ + EXPECT_EQ(cnt-removed, ares__array_len(a)); + + /* Verify expected id of last member */ + m = (array_member_t *)ares__array_last(a); + EXPECT_NE(nullptr, m); + EXPECT_EQ(cnt-2, m->id); + + /* Remove 3 middle members */ + EXPECT_EQ(ARES_SUCCESS, ares__array_remove_at(a, ares__array_len(a)/2)); + EXPECT_EQ(ARES_SUCCESS, ares__array_remove_at(a, ares__array_len(a)/2)); + EXPECT_EQ(ARES_SUCCESS, ares__array_remove_at(a, ares__array_len(a)/2)); + removed += 3; + + /* Verify count */ + EXPECT_EQ(cnt-removed, ares__array_len(a)); + + /* Claim a middle member then re-add it at the same position */ + i = ares__array_len(a) / 2; + EXPECT_EQ(ARES_SUCCESS, ares__array_claim_at(&mbuf, sizeof(mbuf), a, i)); + EXPECT_EQ(ARES_SUCCESS, ares__array_insert_at(&ptr, a, i)); + array_member_init(ptr, mbuf.id); + array_member_destroy((void *)&mbuf); + /* Verify count */ + EXPECT_EQ(cnt-removed, ares__array_len(a)); + + /* Iterate across the array, make sure each entry is greater than the last and + * the data in the buffer matches the id in the array */ + unsigned int last_id = 0; + for (i=0; iid, last_id); + last_id = m->id; + + unsigned int bufval = 0; + ares__buf_tag(m->buf); + EXPECT_EQ(ARES_SUCCESS, ares__buf_fetch_be32(m->buf, &bufval)); + ares__buf_tag_rollback(m->buf); + EXPECT_EQ(bufval, m->id); + } + + /* add a new element in the middle to the beginning with a high id */ + EXPECT_EQ(ARES_SUCCESS, ares__array_insert_at(&ptr, a, ares__array_len(a)/2)); + array_member_init(ptr, 100000); + + /* Sort the array */ + EXPECT_EQ(ARES_SUCCESS, ares__array_sort(a, array_sort_cmp)); + + /* Iterate across the array, make sure each entry is greater than the last and + * the data in the buffer matches the id in the array */ + last_id = 0; + for (i=0; iid, last_id); + last_id = m->id; + + unsigned int bufval = 0; + ares__buf_tag(m->buf); + EXPECT_EQ(ARES_SUCCESS, ares__buf_fetch_be32(m->buf, &bufval)); + ares__buf_tag_rollback(m->buf); + EXPECT_EQ(bufval, m->id); + } + + ares__array_destroy(a); +} TEST_F(LibraryTest, HtableVpvp) { ares__llist_t *l = NULL; diff --git a/lib/c-ares-1.32.3/test/ares-test-live.cc b/lib/c-ares-1.33.0/test/ares-test-live.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-live.cc rename to lib/c-ares-1.33.0/test/ares-test-live.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-main.cc b/lib/c-ares-1.33.0/test/ares-test-main.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-main.cc rename to lib/c-ares-1.33.0/test/ares-test-main.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-misc.cc b/lib/c-ares-1.33.0/test/ares-test-misc.cc similarity index 99% rename from lib/c-ares-1.32.3/test/ares-test-misc.cc rename to lib/c-ares-1.33.0/test/ares-test-misc.cc index 5d5641a90a3..5e912aa72c4 100644 --- a/lib/c-ares-1.32.3/test/ares-test-misc.cc +++ b/lib/c-ares-1.33.0/test/ares-test-misc.cc @@ -519,7 +519,7 @@ TEST_F(LibraryTest, CreateEDNSQuery) { std::string actual = PacketToString(data); DNSPacket pkt; pkt.set_qid(0x1234).add_question(new DNSQuestion("example.com", T_A)) - .add_additional(new DNSOptRR(0, 1280)); + .add_additional(new DNSOptRR(0, 0, 0, 1280, { }, { } /* No server cookie */, false)); std::string expected = PacketToString(pkt.data()); EXPECT_EQ(expected, actual); } diff --git a/lib/c-ares-1.32.3/test/ares-test-mock-ai.cc b/lib/c-ares-1.33.0/test/ares-test-mock-ai.cc similarity index 78% rename from lib/c-ares-1.32.3/test/ares-test-mock-ai.cc rename to lib/c-ares-1.33.0/test/ares-test-mock-ai.cc index c766d4a9017..6bd6933e8e0 100644 --- a/lib/c-ares-1.32.3/test/ares-test-mock-ai.cc +++ b/lib/c-ares-1.33.0/test/ares-test-mock-ai.cc @@ -776,147 +776,6 @@ TEST_P(NoRotateMultiMockTestAI, ThirdServer) { CheckExample(); } -#define SERVER_FAILOVER_RETRY_DELAY 750 -class ServerFailoverOptsMockTestAI : public MockMultiServerChannelTestAI { - public: - ServerFailoverOptsMockTestAI() - : MockMultiServerChannelTestAI(FillOptions(&opts_), - ARES_OPT_SERVER_FAILOVER | ARES_OPT_NOROTATE) {} - static struct ares_options* FillOptions(struct ares_options *opts) { - memset(opts, 0, sizeof(struct ares_options)); - opts->server_failover_opts.retry_chance = 1; - opts->server_failover_opts.retry_delay = SERVER_FAILOVER_RETRY_DELAY; - return opts; - } - private: - struct ares_options opts_; -}; - -// Test case to trigger server failover behavior. We use a retry chance of -// 100% and a retry delay so that we can test behavior reliably. -TEST_P(ServerFailoverOptsMockTestAI, ServerFailoverOpts) { - DNSPacket servfailrsp; - servfailrsp.set_response().set_aa().set_rcode(SERVFAIL) - .add_question(new DNSQuestion("www.example.com", T_A)); - DNSPacket okrsp; - okrsp.set_response().set_aa() - .add_question(new DNSQuestion("www.example.com", T_A)) - .add_answer(new DNSARR("www.example.com", 100, {2,3,4,5})); - - auto tv_begin = std::chrono::high_resolution_clock::now(); - auto tv_now = std::chrono::high_resolution_clock::now(); - unsigned int delay_ms; - - // 1. If all servers are healthy, then the first server should be selected. - if (verbose) std::cerr << std::chrono::duration_cast(tv_now - tv_begin).count() << "ms: First server should be selected" << std::endl; - EXPECT_CALL(*servers_[0], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[0].get(), &okrsp)); - CheckExample(); - - // 2. Failed servers should be retried after the retry delay. - // - // Fail server #0 but leave server #1 as healthy. - tv_now = std::chrono::high_resolution_clock::now(); - if (verbose) std::cerr << std::chrono::duration_cast(tv_now - tv_begin).count() << "ms: Server0 will fail but leave Server1 as healthy" << std::endl; - EXPECT_CALL(*servers_[0], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[0].get(), &servfailrsp)); - EXPECT_CALL(*servers_[1], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[1].get(), &okrsp)); - CheckExample(); - - // Sleep for the retry delay (actually a little more than the retry delay to account - // for unreliable timing, e.g. NTP slew) and send in another query. Server #0 - // should be retried. - tv_now = std::chrono::high_resolution_clock::now(); - delay_ms = SERVER_FAILOVER_RETRY_DELAY + (SERVER_FAILOVER_RETRY_DELAY / 10); - if (verbose) std::cerr << std::chrono::duration_cast(tv_now - tv_begin).count() << "ms: sleep " << delay_ms << "ms" << std::endl; - ares_sleep_time(delay_ms); - tv_now = std::chrono::high_resolution_clock::now(); - if (verbose) std::cerr << std::chrono::duration_cast(tv_now - tv_begin).count() << "ms: Server0 should be past retry delay and should be tried again successfully" << std::endl; - EXPECT_CALL(*servers_[0], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[0].get(), &okrsp)); - CheckExample(); - - // 3. If there are multiple failed servers, then the servers should be - // retried in sorted order. - // - // Fail all servers for the first round of tries. On the second round server - // #1 responds successfully. - tv_now = std::chrono::high_resolution_clock::now(); - if (verbose) std::cerr << std::chrono::duration_cast(tv_now - tv_begin).count() << "ms: All 3 servers will fail on the first attempt. On second attempt, Server0 will fail, but Server1 will answer correctly." << std::endl; - EXPECT_CALL(*servers_[0], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[0].get(), &servfailrsp)) - .WillOnce(SetReply(servers_[0].get(), &servfailrsp)); - EXPECT_CALL(*servers_[1], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[1].get(), &servfailrsp)) - .WillOnce(SetReply(servers_[1].get(), &okrsp)); - EXPECT_CALL(*servers_[2], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[2].get(), &servfailrsp)); - CheckExample(); - - // At this point the sorted servers look like [1] (f0) [2] (f1) [0] (f2). - // Sleep for the retry delay and send in another query. Server #2 should be - // retried first, and then server #0. - tv_now = std::chrono::high_resolution_clock::now(); - delay_ms = SERVER_FAILOVER_RETRY_DELAY + (SERVER_FAILOVER_RETRY_DELAY / 10); - if (verbose) std::cerr << std::chrono::duration_cast(tv_now - tv_begin).count() << "ms: sleep " << delay_ms << "ms" << std::endl; - ares_sleep_time(delay_ms); - tv_now = std::chrono::high_resolution_clock::now(); - if (verbose) std::cerr << std::chrono::duration_cast(tv_now - tv_begin).count() << "ms: Past retry delay, so will choose Server2 and Server0 that are down. Server2 will fail but Server0 will succeed." << std::endl; - EXPECT_CALL(*servers_[2], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[2].get(), &servfailrsp)); - EXPECT_CALL(*servers_[0], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[0].get(), &okrsp)); - CheckExample(); - - // Test might take a while to run and the sleep may not be accurate, so we - // want to track this interval otherwise we may not pass the last test case - // on slow systems. - auto elapse_start = tv_now; - - // 4. If there are multiple failed servers, then servers which have not yet - // met the retry delay should be skipped. - // - // The sorted servers currently look like [0] (f0) [1] (f0) [2] (f2) and - // server #2 has just been retried. - // Sleep for 1/2 the retry delay and trigger a failure on server #0. - tv_now = std::chrono::high_resolution_clock::now(); - delay_ms = (SERVER_FAILOVER_RETRY_DELAY/2); - if (verbose) std::cerr << std::chrono::duration_cast(tv_now - tv_begin).count() << "ms: sleep " << delay_ms << "ms" << std::endl; - ares_sleep_time(delay_ms); - tv_now = std::chrono::high_resolution_clock::now(); - - if (verbose) std::cerr << std::chrono::duration_cast(tv_now - tv_begin).count() << "ms: Retry delay has not been hit yet. Server0 was last successful, so should be tried first (and will fail), Server1 is also healthy so will respond." << std::endl; - EXPECT_CALL(*servers_[0], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[0].get(), &servfailrsp)); - EXPECT_CALL(*servers_[1], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[1].get(), &okrsp)); - CheckExample(); - - // The sorted servers now look like [1] (f0) [0] (f1) [2] (f2). Server #0 - // has just failed whilst server #2 is somewhere in its retry delay. - // Sleep until we know server #2s retry delay has elapsed but Server #0 has - // not. - tv_now = std::chrono::high_resolution_clock::now(); - - unsigned int elapsed_time = (unsigned int)std::chrono::duration_cast(tv_now - elapse_start).count(); - delay_ms = (SERVER_FAILOVER_RETRY_DELAY) + (SERVER_FAILOVER_RETRY_DELAY / 10); - if (elapsed_time > delay_ms) { - if (verbose) std::cerr << "elapsed duration " << elapsed_time << "ms greater than desired delay of " << delay_ms << "ms, not sleeping" << std::endl; - } else { - delay_ms -= elapsed_time; // subtract already elapsed time - if (verbose) std::cerr << std::chrono::duration_cast(tv_now - tv_begin).count() << "ms: sleep " << delay_ms << "ms" << std::endl; - ares_sleep_time(delay_ms); - } - tv_now = std::chrono::high_resolution_clock::now(); - if (verbose) std::cerr << std::chrono::duration_cast(tv_now - tv_begin).count() << "ms: Retry delay has expired on Server2 but not Server0, will try on Server2 and fail, then Server1 will answer" << std::endl; - EXPECT_CALL(*servers_[2], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[2].get(), &servfailrsp)); - EXPECT_CALL(*servers_[1], OnRequest("www.example.com", T_A)) - .WillOnce(SetReply(servers_[1].get(), &okrsp)); - CheckExample(); -} - TEST_P(MockChannelTestAI, FamilyV4ServiceName) { DNSPacket rsp4; rsp4.set_response().set_aa() @@ -964,8 +823,5 @@ INSTANTIATE_TEST_SUITE_P(AddressFamiliesAI, MockEDNSChannelTestAI, INSTANTIATE_TEST_SUITE_P(TransportModesAI, NoRotateMultiMockTestAI, ::testing::ValuesIn(ares::test::families_modes), PrintFamilyMode); -INSTANTIATE_TEST_SUITE_P(TransportModesAI, ServerFailoverOptsMockTestAI, - ::testing::ValuesIn(ares::test::families_modes), PrintFamilyMode); - } // namespace test } // namespace ares diff --git a/lib/c-ares-1.32.3/test/ares-test-mock-et.cc b/lib/c-ares-1.33.0/test/ares-test-mock-et.cc similarity index 99% rename from lib/c-ares-1.32.3/test/ares-test-mock-et.cc rename to lib/c-ares-1.33.0/test/ares-test-mock-et.cc index b32dc8e69e4..1ee15c43791 100644 --- a/lib/c-ares-1.32.3/test/ares-test-mock-et.cc +++ b/lib/c-ares-1.33.0/test/ares-test-mock-et.cc @@ -249,6 +249,9 @@ TEST_P(MockUDPEventThreadMaxQueriesTest, GetHostByNameParallelLookups) { } } +/* This test case is likely to fail in heavily loaded environments, it was + * there to stress the windows event system. Not needed to be on normally */ +#if 0 class MockUDPEventThreadSingleQueryPerConnTest : public MockEventThreadOptsTest, public ::testing::WithParamInterface> { @@ -296,7 +299,7 @@ TEST_P(MockUDPEventThreadSingleQueryPerConnTest, LotsOfConnections) { EXPECT_EQ("{'www.google.com' aliases=[] addrs=[2.3.4.5]}", ss.str()); } } - +#endif class CacheQueriesEventThreadTest : public MockEventThreadOptsTest, @@ -1413,7 +1416,14 @@ TEST_P(NoRotateMultiMockEventThreadTest, ServerNoResponseFailover) { EXPECT_EQ("{'www.example.com' aliases=[] addrs=[2.3.4.5]}", ss4.str()); } -#define SERVER_FAILOVER_RETRY_DELAY 750 +#ifdef __APPLE__ +/* Apple's sleep is no where near accurate, especially on a heavily loaded + * system. Its possible we could set a realtime priority on a thread to + * help with this, but for now, just increase the delay */ +# define SERVER_FAILOVER_RETRY_DELAY 750 +#else +# define SERVER_FAILOVER_RETRY_DELAY 500 +#endif class ServerFailoverOptsMockEventThreadTest : public MockMultiServerEventThreadTest { public: ServerFailoverOptsMockEventThreadTest() @@ -1618,8 +1628,9 @@ INSTANTIATE_TEST_SUITE_P(TransportModes, NoRotateMultiMockEventThreadTest, ::tes INSTANTIATE_TEST_SUITE_P(TransportModes, ServerFailoverOptsMockEventThreadTest, ::testing::ValuesIn(ares::test::evsys_families_modes), ares::test::PrintEvsysFamilyMode); +#if 0 INSTANTIATE_TEST_SUITE_P(AddressFamilies, MockUDPEventThreadSingleQueryPerConnTest, ::testing::ValuesIn(ares::test::evsys_families), ares::test::PrintEvsysFamily); - +#endif } // namespace test } // namespace ares diff --git a/lib/c-ares-1.32.3/test/ares-test-mock.cc b/lib/c-ares-1.33.0/test/ares-test-mock.cc similarity index 86% rename from lib/c-ares-1.32.3/test/ares-test-mock.cc rename to lib/c-ares-1.33.0/test/ares-test-mock.cc index 4c0067131b7..dfa5179404d 100644 --- a/lib/c-ares-1.32.3/test/ares-test-mock.cc +++ b/lib/c-ares-1.33.0/test/ares-test-mock.cc @@ -876,6 +876,8 @@ TEST_P(MockChannelTest, SearchDomainsBare) { ares_gethostbyname(channel_, "www", AF_INET, HostCallback, &result); Process(); EXPECT_TRUE(result.done_); + EXPECT_EQ(0, result.timeouts_); + std::stringstream ss; ss << result.host_; EXPECT_EQ("{'www' aliases=[] addrs=[2.3.4.5]}", ss.str()); @@ -1005,7 +1007,9 @@ TEST_P(MockChannelTest, SearchHighNdots) { // Test that performing an EDNS search with an OPT RR options value works. The // options value should be included on the requests to the mock server. -TEST_P(MockEDNSChannelTest, SearchOptVal) { +// We are going to do this only via TCP since this won't include the dynamically +// generated DNS cookie that would otherwise mess with this result. +TEST_P(MockTCPChannelTest, SearchOptVal) { /* Define the OPT RR options code and value to use. */ unsigned short opt_opt = 3; unsigned char opt_val[] = { 'c', '-', 'a', 'r', 'e', 's' }; @@ -1511,6 +1515,271 @@ TEST_P(MockChannelTest, GetHostByAddrDestroy) { EXPECT_EQ(0, result.timeouts_); } +static const unsigned char * + fetch_server_cookie(const ares_dns_record_t *dnsrec, size_t *len) +{ + const ares_dns_rr_t *rr = fetch_rr_opt(dnsrec); + const unsigned char *val = NULL; + *len = 0; + + if (rr == NULL) { + return NULL; + } + + if (!ares_dns_rr_get_opt_byid(rr, ARES_RR_OPT_OPTIONS, ARES_OPT_PARAM_COOKIE, + &val, len)) { + return NULL; + } + + if (*len <= 8) { + *len = 0; + return NULL; + } + + *len -= 8; + val += 8; + return val; +} + +static const unsigned char * + fetch_client_cookie(const ares_dns_record_t *dnsrec, size_t *len) +{ + const ares_dns_rr_t *rr = fetch_rr_opt(dnsrec); + const unsigned char *val = NULL; + *len = 0; + + if (rr == NULL) { + return NULL; + } + + if (!ares_dns_rr_get_opt_byid(rr, ARES_RR_OPT_OPTIONS, ARES_OPT_PARAM_COOKIE, + &val, len)) { + return NULL; + } + + if (*len < 8) { + *len = 0; + return NULL; + } + + *len = 8; + return val; +} + +TEST_P(MockUDPChannelTest, DNSCookieSingle) { + DNSPacket reply; + std::vector server_cookie = { 1, 2, 3, 4, 5, 6, 7, 8 }; + reply.set_response().set_aa() + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR(0, 0, 0, 1280, { }, server_cookie, false)); + EXPECT_CALL(server_, OnRequest("www.google.com", T_A)) + .WillOnce(SetReply(&server_, &reply)); + + QueryResult result; + ares_query_dnsrec(channel_, "www.google.com", ARES_CLASS_IN, ARES_REC_TYPE_A, QueryCallback, &result, NULL); + Process(); + EXPECT_TRUE(result.done_); + EXPECT_EQ(0, result.timeouts_); + + size_t len; + const unsigned char *returned_cookie = fetch_server_cookie(result.dnsrec_.dnsrec_, &len); + EXPECT_EQ(len, server_cookie.size()); + EXPECT_TRUE(memcmp(server_cookie.data(), returned_cookie, len) == 0); +} + +TEST_P(MockUDPChannelTest, DNSCookieMissingAfterGood) { + std::vector server_cookie = { 1, 2, 3, 4, 5, 6, 7, 8 }; + DNSPacket reply; + reply.set_response().set_aa() + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR(0, 0, 0, 1280, { }, server_cookie, false)); + DNSPacket reply_nocookie; + reply_nocookie.set_response().set_aa() + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR(0, 0, 0, 1280, { }, { }, false)); + DNSPacket reply_ensurecookie; + reply_ensurecookie.set_response().set_aa() + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR(0, 0, 0, 1280, { }, server_cookie, true)); + + EXPECT_CALL(server_, OnRequest("www.google.com", T_A)) + .WillOnce(SetReply(&server_, &reply)) + .WillOnce(SetReply(&server_, &reply_nocookie)) + .WillOnce(SetReply(&server_, &reply_ensurecookie)); + + /* This test will establish the server supports cookies, then the next reply + * will be missing the server cookie and therefore be rejected and timeout, then + * an internal retry will occur and the cookie will be present again and it + * will be verified a server cookie was actually present that matches the + * server cookie. */ + QueryResult result1; + ares_query_dnsrec(channel_, "www.google.com", ARES_CLASS_IN, ARES_REC_TYPE_A, QueryCallback, &result1, NULL); + Process(); + EXPECT_TRUE(result1.done_); + EXPECT_EQ(0, result1.timeouts_); + + QueryResult result2; + ares_query_dnsrec(channel_, "www.google.com", ARES_CLASS_IN, ARES_REC_TYPE_A, QueryCallback, &result2, NULL); + Process(); + EXPECT_TRUE(result2.done_); + EXPECT_EQ(1, result2.timeouts_); + + /* Client cookie should NOT have rotated */ + size_t len1; + const unsigned char *client_cookie_1 = fetch_client_cookie(result1.dnsrec_.dnsrec_, &len1); + size_t len2; + const unsigned char *client_cookie_2 = fetch_client_cookie(result2.dnsrec_.dnsrec_, &len2); + EXPECT_EQ(len1, 8); + EXPECT_EQ(len1, len2); + EXPECT_TRUE(memcmp(client_cookie_1, client_cookie_2, len1) == 0); +} + + +TEST_P(MockUDPChannelTest, DNSCookieBadLen) { + std::vector server_cookie = { 1, 2, 3, 4, 5, 6, 7, 8 }; + std::vector server_cookie_bad = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0 }; + DNSPacket reply; + reply.set_response().set_aa() + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR(0, 0, 0, 1280, { }, server_cookie, false)); + DNSPacket reply_badcookielen; + reply_badcookielen.set_response().set_aa() + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR(0, 0, 0, 1280, { }, server_cookie_bad, false)); + + EXPECT_CALL(server_, OnRequest("www.google.com", T_A)) + .WillOnce(SetReply(&server_, &reply_badcookielen)) + .WillOnce(SetReply(&server_, &reply)); + + /* This test will send back a malformed cookie len, then when it times out and retry occurs will send back a valid cookie. */ + QueryResult result1; + ares_query_dnsrec(channel_, "www.google.com", ARES_CLASS_IN, ARES_REC_TYPE_A, QueryCallback, &result1, NULL); + Process(); + EXPECT_TRUE(result1.done_); + EXPECT_EQ(1, result1.timeouts_); +} + + +TEST_P(MockUDPChannelTest, DNSCookieServerRotate) { + std::vector server_cookie = { 1, 2, 3, 4, 5, 6, 7, 8 }; + std::vector server_cookie_rotate = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF }; + + DNSPacket reply_cookie1; + reply_cookie1.set_response().set_aa() + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR(0, 0, 0, 1280, {}, server_cookie, false)); + DNSPacket reply_cookie2_badcookie; + reply_cookie2_badcookie.set_response().set_aa().set_rcode(ARES_RCODE_BADCOOKIE & 0xF) + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR((ARES_RCODE_BADCOOKIE >> 4) & 0xFF, 0, 0, 1280, { }, server_cookie_rotate, false)); + DNSPacket reply_cookie2; + reply_cookie2.set_response().set_aa() + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR(0, 0, 0, 1280, { }, server_cookie_rotate, true)); + + EXPECT_CALL(server_, OnRequest("www.google.com", T_A)) + .WillOnce(SetReply(&server_, &reply_cookie1)) + .WillOnce(SetReply(&server_, &reply_cookie2_badcookie)) + .WillOnce(SetReply(&server_, &reply_cookie2)); + + /* This test will establish the server supports cookies, then the next reply + * the server returns BADCOOKIE indicating the cookie has rotated and + * returns a new cookie. Then the query will be automatically retried with + * the newly returned cookie. No timeouts should be indicated, and the + * client cookie should not rotate. */ + QueryResult result1; + ares_query_dnsrec(channel_, "www.google.com", ARES_CLASS_IN, ARES_REC_TYPE_A, QueryCallback, &result1, NULL); + Process(); + EXPECT_TRUE(result1.done_); + EXPECT_EQ(0, result1.timeouts_); + + QueryResult result2; + ares_query_dnsrec(channel_, "www.google.com", ARES_CLASS_IN, ARES_REC_TYPE_A, QueryCallback, &result2, NULL); + Process(); + EXPECT_TRUE(result2.done_); + EXPECT_EQ(0, result2.timeouts_); + + /* Client cookie should NOT have rotated */ + size_t len1; + const unsigned char *client_cookie_1 = fetch_client_cookie(result1.dnsrec_.dnsrec_, &len1); + size_t len2; + const unsigned char *client_cookie_2 = fetch_client_cookie(result2.dnsrec_.dnsrec_, &len2); + EXPECT_EQ(len1, 8); + EXPECT_EQ(len1, len2); + EXPECT_TRUE(memcmp(client_cookie_1, client_cookie_2, len1) == 0); +} + +TEST_P(MockUDPChannelTest, DNSCookieSpoof) { + std::vector client_cookie = { 1, 2, 3, 4, 5, 6, 7, 8 }; + std::vector server_cookie = { 1, 2, 3, 4, 5, 6, 7, 8 }; + + DNSPacket reply_spoof; + reply_spoof.set_response().set_aa() + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR(0, 0, 0, 1280, client_cookie, server_cookie, false)); + DNSPacket reply; + reply.set_response().set_aa() + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR(0, 0, 0, 1280, { }, server_cookie, false)); + + EXPECT_CALL(server_, OnRequest("www.google.com", T_A)) + .WillOnce(SetReply(&server_, &reply_spoof)) + .WillOnce(SetReply(&server_, &reply)); + + /* This test will return a reply that doesn't have the same client cookie as + * was sent, this should result in a drop of the packet alltogether, then + * the library will retry and a proper result will be sent. */ + QueryResult result; + ares_query_dnsrec(channel_, "www.google.com", ARES_CLASS_IN, ARES_REC_TYPE_A, QueryCallback, &result, NULL); + Process(); + EXPECT_TRUE(result.done_); + EXPECT_EQ(1, result.timeouts_); +} + +TEST_P(MockUDPChannelTest, DNSCookieTCPUpgrade) { + std::vector server_cookie = { 1, 2, 3, 4, 5, 6, 7, 8 }; + + DNSPacket reply_badcookie; + reply_badcookie.set_response().set_aa().set_rcode(ARES_RCODE_BADCOOKIE & 0xF) + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR((ARES_RCODE_BADCOOKIE >> 4) & 0xFF, 0, 0, 1280, { }, server_cookie, false)); + DNSPacket reply; + reply.set_response().set_aa() + .add_question(new DNSQuestion("www.google.com", T_A)) + .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})) + .add_additional(new DNSOptRR(0, 0, 0, 1280, { }, { }, false)); + + EXPECT_CALL(server_, OnRequest("www.google.com", T_A)) + .WillOnce(SetReply(&server_, &reply_badcookie)) + .WillOnce(SetReply(&server_, &reply_badcookie)) + .WillOnce(SetReply(&server_, &reply_badcookie)) + .WillOnce(SetReply(&server_, &reply)); + + /* This test will establish the server supports cookies, but continuously + * returns BADCOOKIE which is an indicator that there is some form of + * AnyCast issue across servers, so it upgrades to TCP afterwards. No + * timeouts are recorded as the queries are sent back-to-back as immediate + * reattempts after the response. */ + QueryResult result; + ares_query_dnsrec(channel_, "www.google.com", ARES_CLASS_IN, ARES_REC_TYPE_A, QueryCallback, &result, NULL); + Process(); + EXPECT_TRUE(result.done_); + EXPECT_EQ(0, result.timeouts_); +} + + #ifndef WIN32 TEST_P(MockChannelTest, HostAlias) { DNSPacket reply; @@ -1739,7 +2008,16 @@ TEST_P(NoRotateMultiMockTest, ServerNoResponseFailover) { EXPECT_EQ("{'www.example.com' aliases=[] addrs=[2.3.4.5]}", ss4.str()); } -#define SERVER_FAILOVER_RETRY_DELAY 750 +#ifdef __APPLE__ +/* Apple's sleep is no where near accurate, especially on a heavily loaded + * system. Its possible we could set a realtime priority on a thread to + * help with this, but for now, just increase the delay */ +# define SERVER_FAILOVER_RETRY_DELAY 750 +#elif defined(_WIN32) +# define SERVER_FAILOVER_RETRY_DELAY 500 +#else +# define SERVER_FAILOVER_RETRY_DELAY 250 +#endif class ServerFailoverOptsMultiMockTest : public MockMultiServerChannelTest { public: ServerFailoverOptsMultiMockTest() diff --git a/lib/c-ares-1.32.3/test/ares-test-ns.cc b/lib/c-ares-1.33.0/test/ares-test-ns.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-ns.cc rename to lib/c-ares-1.33.0/test/ares-test-ns.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-parse-a.cc b/lib/c-ares-1.33.0/test/ares-test-parse-a.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-parse-a.cc rename to lib/c-ares-1.33.0/test/ares-test-parse-a.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-parse-aaaa.cc b/lib/c-ares-1.33.0/test/ares-test-parse-aaaa.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-parse-aaaa.cc rename to lib/c-ares-1.33.0/test/ares-test-parse-aaaa.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-parse-caa.cc b/lib/c-ares-1.33.0/test/ares-test-parse-caa.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-parse-caa.cc rename to lib/c-ares-1.33.0/test/ares-test-parse-caa.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-parse-mx.cc b/lib/c-ares-1.33.0/test/ares-test-parse-mx.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-parse-mx.cc rename to lib/c-ares-1.33.0/test/ares-test-parse-mx.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-parse-naptr.cc b/lib/c-ares-1.33.0/test/ares-test-parse-naptr.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-parse-naptr.cc rename to lib/c-ares-1.33.0/test/ares-test-parse-naptr.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-parse-ns.cc b/lib/c-ares-1.33.0/test/ares-test-parse-ns.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-parse-ns.cc rename to lib/c-ares-1.33.0/test/ares-test-parse-ns.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-parse-ptr.cc b/lib/c-ares-1.33.0/test/ares-test-parse-ptr.cc similarity index 99% rename from lib/c-ares-1.32.3/test/ares-test-parse-ptr.cc rename to lib/c-ares-1.33.0/test/ares-test-parse-ptr.cc index 2ebe1b9f86b..9985ef3cd73 100644 --- a/lib/c-ares-1.32.3/test/ares-test-parse-ptr.cc +++ b/lib/c-ares-1.33.0/test/ares-test-parse-ptr.cc @@ -73,8 +73,8 @@ TEST_F(LibraryTest, ParsePtrReplyCname) { struct DNSMalformedCnameRR : public DNSCnameRR { DNSMalformedCnameRR(const std::string& name, int ttl, const std::string& other) : DNSCnameRR(name, ttl, other) {} - std::vector data() const { - std::vector data = DNSRR::data(); + std::vector data(const ares_dns_record_t *dnsrec) const { + std::vector data = DNSRR::data(dnsrec); std::vector encname = EncodeString(other_); encname[0] = encname[0] + 63; // invalid label length int len = (int)encname.size(); diff --git a/lib/c-ares-1.32.3/test/ares-test-parse-soa-any.cc b/lib/c-ares-1.33.0/test/ares-test-parse-soa-any.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-parse-soa-any.cc rename to lib/c-ares-1.33.0/test/ares-test-parse-soa-any.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-parse-soa.cc b/lib/c-ares-1.33.0/test/ares-test-parse-soa.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-parse-soa.cc rename to lib/c-ares-1.33.0/test/ares-test-parse-soa.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-parse-srv.cc b/lib/c-ares-1.33.0/test/ares-test-parse-srv.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-parse-srv.cc rename to lib/c-ares-1.33.0/test/ares-test-parse-srv.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-parse-txt.cc b/lib/c-ares-1.33.0/test/ares-test-parse-txt.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-parse-txt.cc rename to lib/c-ares-1.33.0/test/ares-test-parse-txt.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-parse-uri.cc b/lib/c-ares-1.33.0/test/ares-test-parse-uri.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-parse-uri.cc rename to lib/c-ares-1.33.0/test/ares-test-parse-uri.cc diff --git a/lib/c-ares-1.32.3/test/ares-test-parse.cc b/lib/c-ares-1.33.0/test/ares-test-parse.cc similarity index 100% rename from lib/c-ares-1.32.3/test/ares-test-parse.cc rename to lib/c-ares-1.33.0/test/ares-test-parse.cc diff --git a/lib/c-ares-1.32.3/test/ares-test.cc b/lib/c-ares-1.33.0/test/ares-test.cc similarity index 94% rename from lib/c-ares-1.32.3/test/ares-test.cc rename to lib/c-ares-1.33.0/test/ares-test.cc index d78a5ebb263..b41cc57d817 100644 --- a/lib/c-ares-1.32.3/test/ares-test.cc +++ b/lib/c-ares-1.33.0/test/ares-test.cc @@ -41,7 +41,7 @@ extern "C" { #include "ares_setup.h" #include "ares_inet_net_pton.h" #include "ares_data.h" -#include "ares_strsplit.h" +#include "str/ares_strsplit.h" #include "ares_private.h" } @@ -437,6 +437,17 @@ MockServer::MockServer(int family, unsigned short port) setsockopt(tcpfd_, SOL_SOCKET, SO_NOSIGPIPE, (void *)&optval, sizeof(optval)); #endif + /* Test system enable TCP FastOpen */ +#if defined(TCP_FASTOPEN) +# ifdef __linux__ + int qlen = 32; + setsockopt(tcpfd_, IPPROTO_TCP, TCP_FASTOPEN, &qlen, sizeof(qlen)); +# else + int on = 1; + setsockopt(tcpfd_, IPPROTO_TCP, TCP_FASTOPEN, BYTE_CAST &on, sizeof(on)); +# endif +#endif + // Create a UDP socket to receive data on. udpfd_ = socket(family, SOCK_DGRAM, 0); EXPECT_NE(ARES_SOCKET_BAD, udpfd_); @@ -596,7 +607,7 @@ void MockServer::ProcessPacket(ares_socket_t fd, struct sockaddr_storage *addr, std::cerr << "ProcessRequest(" << qid << ", '" << name << "', " << RRTypeToString(rrtype) << ")" << std::endl; } - ProcessRequest(fd, addr, addrlen, reqstr, qid, name, rrtype); + ProcessRequest(fd, addr, addrlen, req, reqstr, qid, name, rrtype); ares_free_string(name); } @@ -666,7 +677,8 @@ std::set MockServer::fds() const { } void MockServer::ProcessRequest(ares_socket_t fd, struct sockaddr_storage* addr, - ares_socklen_t addrlen, const std::string &reqstr, + ares_socklen_t addrlen, const std::vector &req, + const std::string &reqstr, int qid, const char *name, int rrtype) { /* DNS 0x20 will mix case, do case-insensitive matching of name in request */ @@ -683,7 +695,17 @@ void MockServer::ProcessRequest(ares_socket_t fd, struct sockaddr_storage* addr, } if (reply_ != nullptr) { - exact_reply_ = reply_->data(name); + ares_dns_record_t *dnsrec = NULL; + /* We will *attempt* to parse the request string. It may be malformed that + * will lead to a parse failure. If so, we just ignore it. We want to + * pass this parsed data structure to the reply generator in case it needs + * to extract metadata (such as a DNS client cookie) from the original + * request. If we can't parse it, oh well, we'll just pass NULL, most + * replies don't need anything from the request other than the name which + * is passed separately. */ + ares_dns_parse(req.data(), req.size(), 0, &dnsrec); + exact_reply_ = reply_->data(name, dnsrec); + ares_dns_record_destroy(dnsrec); } if (exact_reply_.size() == 0) { @@ -1023,6 +1045,44 @@ void HostCallback(void *data, int status, int timeouts, if (verbose) std::cerr << "HostCallback(" << *result << ")" << std::endl; } +std::ostream& operator<<(std::ostream& os, const AresDnsRecord& dnsrec) { + os << "{'"; + /* XXX: Todo */ + os << '}'; + return os; +} + +std::ostream& operator<<(std::ostream& os, const QueryResult& result) { + os << '{'; + if (result.done_) { + os << StatusToString(result.status_); + if (result.dnsrec_.dnsrec_ != nullptr) { + os << " " << result.dnsrec_; + } else { + os << ", (no dnsrec)"; + } + } else { + os << "(incomplete)"; + } + os << '}'; + return os; +} + +void QueryCallback(void *data, ares_status_t status, size_t timeouts, + const ares_dns_record_t *dnsrec) { + EXPECT_NE(nullptr, data); + if (data == nullptr) + return; + + QueryResult* result = reinterpret_cast(data); + result->done_ = true; + result->status_ = status; + result->timeouts_ = timeouts; + if (dnsrec) + result->dnsrec_.SetDnsRecord(dnsrec); + if (verbose) std::cerr << "QueryCallback(" << *result << ")" << std::endl; +} + std::ostream& operator<<(std::ostream& os, const AddrInfoResult& result) { os << '{'; if (result.done_ && result.ai_) { diff --git a/lib/c-ares-1.32.3/test/ares-test.h b/lib/c-ares-1.33.0/test/ares-test.h similarity index 94% rename from lib/c-ares-1.32.3/test/ares-test.h rename to lib/c-ares-1.33.0/test/ares-test.h index af37ab64c5c..ea25498d987 100644 --- a/lib/c-ares-1.32.3/test/ares-test.h +++ b/lib/c-ares-1.33.0/test/ares-test.h @@ -85,7 +85,7 @@ extern std::vector> families_modes; extern std::vector> evsys_families_modes; // Hopefully a more accurate sleep than sleep_for() -void ares_sleep_time(unsigned int ms); +void ares_sleep_time(unsigned int ms); // Process all pending work on ares-owned file descriptors, plus // optionally the given set-of-FDs + work function. @@ -220,7 +220,6 @@ class DefaultChannelModeTest ares_channel_t *channel_; }; - // Mock DNS server to allow responses to be scripted by tests. class MockServer { public: @@ -236,7 +235,7 @@ class MockServer { void SetReplyData(const std::vector &reply) { exact_reply_ = reply; - reply_ = nullptr; + reply_ = nullptr; } void SetReply(const DNSPacket *reply) @@ -251,7 +250,7 @@ class MockServer { void SetReplyExpRequest(const DNSPacket *reply, const std::string &request) { expected_request_ = request; - reply_ = reply; + reply_ = reply; } void SetReplyQID(int qid) @@ -291,8 +290,9 @@ class MockServer { private: void ProcessRequest(ares_socket_t fd, struct sockaddr_storage *addr, - ares_socklen_t addrlen, const std::string &reqstr, - int qid, const char *name, int rrtype); + ares_socklen_t addrlen, const std::vector &req, + const std::string &reqstr, int qid, const char *name, + int rrtype); void ProcessPacket(ares_socket_t fd, struct sockaddr_storage *addr, ares_socklen_t addrlen, byte *data, int len); unsigned short udpport_; @@ -391,6 +391,7 @@ class MockEventThreadOptsTest : public MockChannelOptsTest { } void Process(unsigned int cancel_ms = 0); + private: struct ares_options evopts_; }; @@ -496,6 +497,51 @@ struct HostResult { std::ostream &operator<<(std::ostream &os, const HostResult &result); +// C++ wrapper for ares_dns_record_t. +struct AresDnsRecord { + ~AresDnsRecord() + { + ares_dns_record_destroy(dnsrec_); + dnsrec_ = NULL; + } + + AresDnsRecord() : dnsrec_(NULL) + { + } + + void SetDnsRecord(const ares_dns_record_t *dnsrec) + { + if (dnsrec_ != NULL) { + ares_dns_record_destroy(dnsrec_); + } + if (dnsrec == NULL) { + return; + } + dnsrec_ = ares_dns_record_duplicate(dnsrec); + } + + ares_dns_record_t *dnsrec_ = NULL; +}; + +std::ostream &operator<<(std::ostream &os, const AresDnsRecord &result); + +// Structure that describes the result of an ares_host_callback invocation. +struct QueryResult { + QueryResult() : done_(false), status_(ARES_SUCCESS), timeouts_(0) + { + } + + // Whether the callback has been invoked. + bool done_; + // Explicitly provided result information. + ares_status_t status_; + size_t timeouts_; + // Contents of the ares_dns_record_t structure if provided + AresDnsRecord dnsrec_; +}; + +std::ostream &operator<<(std::ostream &os, const QueryResult &result); + // Structure that describes the result of an ares_callback invocation. struct SearchResult { // Whether the callback has been invoked. @@ -556,6 +602,8 @@ std::ostream &operator<<(std::ostream &os, const AddrInfoResult &result); // structures. void HostCallback(void *data, int status, int timeouts, struct hostent *hostent); +void QueryCallback(void *data, ares_status_t status, size_t timeouts, + const ares_dns_record_t *dnsrec); void SearchCallback(void *data, int status, int timeouts, unsigned char *abuf, int alen); void SearchCallbackDnsRec(void *data, ares_status_t status, size_t timeouts, diff --git a/lib/c-ares-1.32.3/test/ares_queryloop.c b/lib/c-ares-1.33.0/test/ares_queryloop.c similarity index 99% rename from lib/c-ares-1.32.3/test/ares_queryloop.c rename to lib/c-ares-1.33.0/test/ares_queryloop.c index 8422de8d751..031c7799400 100644 --- a/lib/c-ares-1.32.3/test/ares_queryloop.c +++ b/lib/c-ares-1.33.0/test/ares_queryloop.c @@ -156,7 +156,8 @@ int main(int argc, char *argv[]) memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; - printf("Attempt %u using server list: %s ...\n", (unsigned int)count, servers); + printf("Attempt %u using server list: %s ...\n", (unsigned int)count, + servers); ares_free_string(servers); ares_getaddrinfo(channel, argv[1], NULL, &hints, ai_callback, argv[1]); diff --git a/lib/c-ares-1.32.3/test/dns-dump.cc b/lib/c-ares-1.33.0/test/dns-dump.cc similarity index 100% rename from lib/c-ares-1.32.3/test/dns-dump.cc rename to lib/c-ares-1.33.0/test/dns-dump.cc diff --git a/lib/c-ares-1.32.3/test/dns-proto-test.cc b/lib/c-ares-1.33.0/test/dns-proto-test.cc similarity index 100% rename from lib/c-ares-1.32.3/test/dns-proto-test.cc rename to lib/c-ares-1.33.0/test/dns-proto-test.cc diff --git a/lib/c-ares-1.32.3/test/dns-proto.cc b/lib/c-ares-1.33.0/test/dns-proto.cc similarity index 84% rename from lib/c-ares-1.32.3/test/dns-proto.cc rename to lib/c-ares-1.33.0/test/dns-proto.cc index f9c7d4d56e3..e26e483a6fc 100644 --- a/lib/c-ares-1.32.3/test/dns-proto.cc +++ b/lib/c-ares-1.33.0/test/dns-proto.cc @@ -548,7 +548,7 @@ std::vector EncodeString(const std::string &name) { return data; } -std::vector DNSQuestion::data(const char *request_name) const { +std::vector DNSQuestion::data(const char *request_name, const ares_dns_record_t *dnsrec) const { std::vector data; std::vector encname; if (request_name != nullptr && strcasecmp(request_name, name_.c_str()) == 0) { @@ -562,14 +562,14 @@ std::vector DNSQuestion::data(const char *request_name) const { return data; } -std::vector DNSRR::data() const { - std::vector data = DNSQuestion::data(); +std::vector DNSRR::data(const ares_dns_record_t *dnsrec) const { + std::vector data = DNSQuestion::data(dnsrec); PushInt32(&data, ttl_); return data; } -std::vector DNSSingleNameRR::data() const { - std::vector data = DNSRR::data(); +std::vector DNSSingleNameRR::data(const ares_dns_record_t *dnsrec) const { + std::vector data = DNSRR::data(dnsrec); std::vector encname = EncodeString(other_); int len = (int)encname.size(); PushInt16(&data, len); @@ -577,8 +577,8 @@ std::vector DNSSingleNameRR::data() const { return data; } -std::vector DNSTxtRR::data() const { - std::vector data = DNSRR::data(); +std::vector DNSTxtRR::data(const ares_dns_record_t *dnsrec) const { + std::vector data = DNSRR::data(dnsrec); int len = 0; for (const std::string& txt : txt_) { len += (1 + (int)txt.size()); @@ -591,8 +591,8 @@ std::vector DNSTxtRR::data() const { return data; } -std::vector DNSMxRR::data() const { - std::vector data = DNSRR::data(); +std::vector DNSMxRR::data(const ares_dns_record_t *dnsrec) const { + std::vector data = DNSRR::data(dnsrec); std::vector encname = EncodeString(other_); int len = 2 + (int)encname.size(); PushInt16(&data, len); @@ -601,8 +601,8 @@ std::vector DNSMxRR::data() const { return data; } -std::vector DNSSrvRR::data() const { - std::vector data = DNSRR::data(); +std::vector DNSSrvRR::data(const ares_dns_record_t *dnsrec) const { + std::vector data = DNSRR::data(dnsrec); std::vector encname = EncodeString(target_); int len = 6 + (int)encname.size(); PushInt16(&data, len); @@ -613,8 +613,8 @@ std::vector DNSSrvRR::data() const { return data; } -std::vector DNSUriRR::data() const { - std::vector data = DNSRR::data(); +std::vector DNSUriRR::data(const ares_dns_record_t *dnsrec) const { + std::vector data = DNSRR::data(dnsrec); int len = 4 + (int)target_.size(); PushInt16(&data, len); PushInt16(&data, prio_); @@ -623,16 +623,16 @@ std::vector DNSUriRR::data() const { return data; } -std::vector DNSAddressRR::data() const { - std::vector data = DNSRR::data(); +std::vector DNSAddressRR::data(const ares_dns_record_t *dnsrec) const { + std::vector data = DNSRR::data(dnsrec); int len = (int)addr_.size(); PushInt16(&data, len); data.insert(data.end(), addr_.begin(), addr_.end()); return data; } -std::vector DNSSoaRR::data() const { - std::vector data = DNSRR::data(); +std::vector DNSSoaRR::data(const ares_dns_record_t *dnsrec) const { + std::vector data = DNSRR::data(dnsrec); std::vector encname1 = EncodeString(nsname_); std::vector encname2 = EncodeString(rname_); int len = (int)encname1.size() + (int)encname2.size() + 5*4; @@ -647,23 +647,81 @@ std::vector DNSSoaRR::data() const { return data; } -std::vector DNSOptRR::data() const { - std::vector data = DNSRR::data(); - int len = 0; +const ares_dns_rr_t *fetch_rr_opt(const ares_dns_record_t *rec) +{ + size_t i; + for (i = 0; i < ares_dns_record_rr_cnt(rec, ARES_SECTION_ADDITIONAL); i++) { + const ares_dns_rr_t *rr = + ares_dns_record_rr_get_const(rec, ARES_SECTION_ADDITIONAL, i); + + if (ares_dns_rr_get_type(rr) == ARES_REC_TYPE_OPT) { + return rr; + } + } + return NULL; +} + +std::vector DNSOptRR::data(const ares_dns_record_t *dnsrec) const { + std::vector data = DNSRR::data(dnsrec); + int len = 0; + std::vector cookie; + const ares_dns_rr_t *rr = fetch_rr_opt(dnsrec); + size_t passed_cookie_len = 0; + const unsigned char *passed_cookie = NULL; + + ares_dns_rr_get_opt_byid(rr, ARES_RR_OPT_OPTIONS, ARES_OPT_PARAM_COOKIE, + &passed_cookie, &passed_cookie_len); + + /* Error out if we expected a server cookie but didn't get one, or if the + * passed in server cookie doesn't match our expected value */ + if (expect_server_cookie_ && + (passed_cookie_len <= 8 || + passed_cookie_len - 8 != server_cookie_.size() || + memcmp(passed_cookie + 8, server_cookie_.data(), server_cookie_.size()) != 0 + ) + ) { + data.clear(); + return data; + } + + /* See if we should be applying a server cookie */ + if (server_cookie_.size() && passed_cookie_len >= 8) { + /* If client cookie was provided to test framework, we are overwriting + * the one received from the client. This is likely to test failure + * scenarios */ + if (client_cookie_.size()) { + cookie.insert(cookie.end(), client_cookie_.begin(), client_cookie_.end()); + } else { + cookie.insert(cookie.end(), passed_cookie, passed_cookie+8); + } + cookie.insert(cookie.end(), server_cookie_.begin(), server_cookie_.end()); + } + + if (cookie.size()) { + len += 4 + (int)cookie.size(); + } for (const DNSOption& opt : opts_) { len += (4 + (int)opt.data_.size()); } + PushInt16(&data, len); for (const DNSOption& opt : opts_) { PushInt16(&data, opt.code_); PushInt16(&data, (int)opt.data_.size()); data.insert(data.end(), opt.data_.begin(), opt.data_.end()); } + + if (cookie.size()) { + PushInt16(&data, ARES_OPT_PARAM_COOKIE); + PushInt16(&data, (int)cookie.size()); + data.insert(data.end(), cookie.begin(), cookie.end()); + } + return data; } -std::vector DNSNaptrRR::data() const { - std::vector data = DNSRR::data(); +std::vector DNSNaptrRR::data(const ares_dns_record_t *dnsrec) const { + std::vector data = DNSRR::data(dnsrec); std::vector encname = EncodeString(replacement_); int len = (4 + 1 + (int)flags_.size() + 1 + (int)service_.size() + 1 + (int)regexp_.size() + (int)encname.size()); PushInt16(&data, len); @@ -679,7 +737,7 @@ std::vector DNSNaptrRR::data() const { return data; } -std::vector DNSPacket::data(const char *request_name) const { +std::vector DNSPacket::data(const char *request_name, const ares_dns_record_t *dnsrec) const { std::vector data; PushInt16(&data, qid_); byte b = 0x00; @@ -707,19 +765,35 @@ std::vector DNSPacket::data(const char *request_name) const { PushInt16(&data, count); for (const std::unique_ptr& question : questions_) { - std::vector qdata = question->data(request_name); + std::vector qdata = question->data(request_name, dnsrec); + if (qdata.size() == 0) { + data.clear(); + return data; + } data.insert(data.end(), qdata.begin(), qdata.end()); } for (const std::unique_ptr& rr : answers_) { - std::vector rrdata = rr->data(); + std::vector rrdata = rr->data(dnsrec); + if (rrdata.size() == 0) { + data.clear(); + return data; + } data.insert(data.end(), rrdata.begin(), rrdata.end()); } for (const std::unique_ptr& rr : auths_) { - std::vector rrdata = rr->data(); + std::vector rrdata = rr->data(dnsrec); + if (rrdata.size() == 0) { + data.clear(); + return data; + } data.insert(data.end(), rrdata.begin(), rrdata.end()); } for (const std::unique_ptr& rr : adds_) { - std::vector rrdata = rr->data(); + std::vector rrdata = rr->data(dnsrec); + if (rrdata.size() == 0) { + data.clear(); + return data; + } data.insert(data.end(), rrdata.begin(), rrdata.end()); } return data; diff --git a/lib/c-ares-1.32.3/test/dns-proto.h b/lib/c-ares-1.33.0/test/dns-proto.h similarity index 83% rename from lib/c-ares-1.32.3/test/dns-proto.h rename to lib/c-ares-1.33.0/test/dns-proto.h index 88e0a23cdc1..e42600d25ca 100644 --- a/lib/c-ares-1.32.3/test/dns-proto.h +++ b/lib/c-ares-1.33.0/test/dns-proto.h @@ -36,7 +36,8 @@ #include #include -extern "C" void arestest_strtolower(char *dest, const char *src, size_t dest_size); +extern "C" void arestest_strtolower(char *dest, const char *src, + size_t dest_size); namespace ares { @@ -52,6 +53,8 @@ std::string RRTypeToString(int rrtype); std::string ClassToString(int qclass); std::string AddressToString(const void *addr, int len); +const ares_dns_rr_t *fetch_rr_opt(const ares_dns_record_t *rec); + // Convert DNS protocol data to strings. // Note that these functions are not defensive; they assume // a validly formatted input, and so should not be used on @@ -83,16 +86,22 @@ struct DNSQuestion { { } - virtual std::vector data(const char *request_name) const; + virtual std::vector data(const char *request_name, + const ares_dns_record_t *dnsrec) const; + + virtual std::vector data(const ares_dns_record_t *dnsrec) const + { + return data(nullptr, dnsrec); + } virtual std::vector data() const { - return data(nullptr); + return data(nullptr, nullptr); } - std::string name_; - int rrtype_; - int qclass_; + std::string name_; + int rrtype_; + int qclass_; }; struct DNSRR : public DNSQuestion { @@ -110,7 +119,7 @@ struct DNSRR : public DNSQuestion { { } - virtual std::vector data() const = 0; + virtual std::vector data(const ares_dns_record_t *dnsrec) const = 0; int ttl_; }; @@ -127,7 +136,7 @@ struct DNSAddressRR : public DNSRR { { } - virtual std::vector data() const; + virtual std::vector data(const ares_dns_record_t *dnsrec) const; std::vector addr_; }; @@ -162,7 +171,7 @@ struct DNSSingleNameRR : public DNSRR { { } - virtual std::vector data() const; + virtual std::vector data(const ares_dns_record_t *dnsrec) const; std::string other_; }; @@ -194,7 +203,7 @@ struct DNSTxtRR : public DNSRR { { } - virtual std::vector data() const; + virtual std::vector data(const ares_dns_record_t *dnsrec) const; std::vector txt_; }; @@ -204,7 +213,7 @@ struct DNSMxRR : public DNSRR { { } - virtual std::vector data() const; + virtual std::vector data(const ares_dns_record_t *dnsrec) const; int pref_; std::string other_; }; @@ -217,7 +226,7 @@ struct DNSSrvRR : public DNSRR { { } - virtual std::vector data() const; + virtual std::vector data(const ares_dns_record_t *dnsrec) const; int prio_; int weight_; int port_; @@ -231,7 +240,7 @@ struct DNSUriRR : public DNSRR { { } - virtual std::vector data() const; + virtual std::vector data(const ares_dns_record_t *dnsrec) const; int prio_; int weight_; std::string target_; @@ -246,7 +255,7 @@ struct DNSSoaRR : public DNSRR { { } - virtual std::vector data() const; + virtual std::vector data(const ares_dns_record_t *dnsrec) const; std::string nsname_; std::string rname_; int serial_; @@ -265,7 +274,7 @@ struct DNSNaptrRR : public DNSRR { { } - virtual std::vector data() const; + virtual std::vector data(const ares_dns_record_t *dnsrec) const; int order_; int pref_; std::string flags_; @@ -280,13 +289,23 @@ struct DNSOption { }; struct DNSOptRR : public DNSRR { - DNSOptRR(int extrcode, int udpsize) - : DNSRR("", T_OPT, static_cast(udpsize), extrcode) + DNSOptRR(unsigned char extrcode, unsigned char version, unsigned short flags, + int udpsize, std::vector client_cookie, + std::vector server_cookie, bool expect_server_cookie) + : DNSRR("", T_OPT, static_cast(udpsize), + ((int)extrcode) << 24 | ((int)version) << 16 | + ((int)flags) /* ttl */) { + client_cookie_ = client_cookie; + server_cookie_ = server_cookie; + expect_server_cookie_ = expect_server_cookie; } - virtual std::vector data() const; + virtual std::vector data(const ares_dns_record_t *dnsrec) const; std::vector opts_; + std::vector client_cookie_; + std::vector server_cookie_; + bool expect_server_cookie_; }; struct DNSPacket { @@ -383,13 +402,14 @@ struct DNSPacket { } // Return the encoded packet. - std::vector data(const char *request_name) const; - std::vector data() const + std::vector data(const char *request_name, + const ares_dns_record_t *dnsrec) const; + + std::vector data() const { - return data(nullptr); + return data(nullptr, nullptr); } - int qid_; bool response_; int opcode_; diff --git a/lib/c-ares-1.32.3/test/fuzzcheck.sh b/lib/c-ares-1.33.0/test/fuzzcheck.sh similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzcheck.sh rename to lib/c-ares-1.33.0/test/fuzzcheck.sh diff --git a/lib/c-ares-1.32.3/test/fuzzinput/004a216d3cff18b0c5c6b68b807f1529 b/lib/c-ares-1.33.0/test/fuzzinput/004a216d3cff18b0c5c6b68b807f1529 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/004a216d3cff18b0c5c6b68b807f1529 rename to lib/c-ares-1.33.0/test/fuzzinput/004a216d3cff18b0c5c6b68b807f1529 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/00539467ca159b36aea95e61f9729115 b/lib/c-ares-1.33.0/test/fuzzinput/00539467ca159b36aea95e61f9729115 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/00539467ca159b36aea95e61f9729115 rename to lib/c-ares-1.33.0/test/fuzzinput/00539467ca159b36aea95e61f9729115 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/00e846db8f43f2f507cd1666ed5a753e b/lib/c-ares-1.33.0/test/fuzzinput/00e846db8f43f2f507cd1666ed5a753e similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/00e846db8f43f2f507cd1666ed5a753e rename to lib/c-ares-1.33.0/test/fuzzinput/00e846db8f43f2f507cd1666ed5a753e diff --git a/lib/c-ares-1.32.3/test/fuzzinput/0177b7566f08c013699eaea9a77abeb3 b/lib/c-ares-1.33.0/test/fuzzinput/0177b7566f08c013699eaea9a77abeb3 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/0177b7566f08c013699eaea9a77abeb3 rename to lib/c-ares-1.33.0/test/fuzzinput/0177b7566f08c013699eaea9a77abeb3 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/020a4fa317715bfdb236ed13751e6b65 b/lib/c-ares-1.33.0/test/fuzzinput/020a4fa317715bfdb236ed13751e6b65 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/020a4fa317715bfdb236ed13751e6b65 rename to lib/c-ares-1.33.0/test/fuzzinput/020a4fa317715bfdb236ed13751e6b65 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/0310f2e81bea31f4fe3f330872a877dd b/lib/c-ares-1.33.0/test/fuzzinput/0310f2e81bea31f4fe3f330872a877dd similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/0310f2e81bea31f4fe3f330872a877dd rename to lib/c-ares-1.33.0/test/fuzzinput/0310f2e81bea31f4fe3f330872a877dd diff --git a/lib/c-ares-1.32.3/test/fuzzinput/0449be67df1730b2d0887d412a9b7cc4 b/lib/c-ares-1.33.0/test/fuzzinput/0449be67df1730b2d0887d412a9b7cc4 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/0449be67df1730b2d0887d412a9b7cc4 rename to lib/c-ares-1.33.0/test/fuzzinput/0449be67df1730b2d0887d412a9b7cc4 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/0449dd14f7aa94bf0d716bfe09b287a8 b/lib/c-ares-1.33.0/test/fuzzinput/0449dd14f7aa94bf0d716bfe09b287a8 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/0449dd14f7aa94bf0d716bfe09b287a8 rename to lib/c-ares-1.33.0/test/fuzzinput/0449dd14f7aa94bf0d716bfe09b287a8 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/04c93cdf7208979aa4df80a3a0d5a2d8 b/lib/c-ares-1.33.0/test/fuzzinput/04c93cdf7208979aa4df80a3a0d5a2d8 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/04c93cdf7208979aa4df80a3a0d5a2d8 rename to lib/c-ares-1.33.0/test/fuzzinput/04c93cdf7208979aa4df80a3a0d5a2d8 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/0567e7171e08e75f3f91c4ca74c17adc b/lib/c-ares-1.33.0/test/fuzzinput/0567e7171e08e75f3f91c4ca74c17adc similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/0567e7171e08e75f3f91c4ca74c17adc rename to lib/c-ares-1.33.0/test/fuzzinput/0567e7171e08e75f3f91c4ca74c17adc diff --git a/lib/c-ares-1.32.3/test/fuzzinput/05ba948578a397e9cbc6a7b3e78622fa b/lib/c-ares-1.33.0/test/fuzzinput/05ba948578a397e9cbc6a7b3e78622fa similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/05ba948578a397e9cbc6a7b3e78622fa rename to lib/c-ares-1.33.0/test/fuzzinput/05ba948578a397e9cbc6a7b3e78622fa diff --git a/lib/c-ares-1.32.3/test/fuzzinput/060afe5ed25f3e2e86167e545f27edca b/lib/c-ares-1.33.0/test/fuzzinput/060afe5ed25f3e2e86167e545f27edca similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/060afe5ed25f3e2e86167e545f27edca rename to lib/c-ares-1.33.0/test/fuzzinput/060afe5ed25f3e2e86167e545f27edca diff --git a/lib/c-ares-1.32.3/test/fuzzinput/06d47d3681493f1b1d41236f460d896f b/lib/c-ares-1.33.0/test/fuzzinput/06d47d3681493f1b1d41236f460d896f similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/06d47d3681493f1b1d41236f460d896f rename to lib/c-ares-1.33.0/test/fuzzinput/06d47d3681493f1b1d41236f460d896f diff --git a/lib/c-ares-1.32.3/test/fuzzinput/0724a810b0e131c2fddb6de9003b9064 b/lib/c-ares-1.33.0/test/fuzzinput/0724a810b0e131c2fddb6de9003b9064 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/0724a810b0e131c2fddb6de9003b9064 rename to lib/c-ares-1.33.0/test/fuzzinput/0724a810b0e131c2fddb6de9003b9064 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/0b5279148826f5b962bcf1896bdb4ede b/lib/c-ares-1.33.0/test/fuzzinput/0b5279148826f5b962bcf1896bdb4ede similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/0b5279148826f5b962bcf1896bdb4ede rename to lib/c-ares-1.33.0/test/fuzzinput/0b5279148826f5b962bcf1896bdb4ede diff --git a/lib/c-ares-1.32.3/test/fuzzinput/114048c0f6b10bdc67ce9166405d195e b/lib/c-ares-1.33.0/test/fuzzinput/114048c0f6b10bdc67ce9166405d195e similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/114048c0f6b10bdc67ce9166405d195e rename to lib/c-ares-1.33.0/test/fuzzinput/114048c0f6b10bdc67ce9166405d195e diff --git a/lib/c-ares-1.32.3/test/fuzzinput/11b8464a0ef8735d202955c34c36b0c7 b/lib/c-ares-1.33.0/test/fuzzinput/11b8464a0ef8735d202955c34c36b0c7 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/11b8464a0ef8735d202955c34c36b0c7 rename to lib/c-ares-1.33.0/test/fuzzinput/11b8464a0ef8735d202955c34c36b0c7 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/11cb626f1668c7b41954ce7d768fe528 b/lib/c-ares-1.33.0/test/fuzzinput/11cb626f1668c7b41954ce7d768fe528 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/11cb626f1668c7b41954ce7d768fe528 rename to lib/c-ares-1.33.0/test/fuzzinput/11cb626f1668c7b41954ce7d768fe528 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/14b133bf18125b75a1976fa63a1df6b7 b/lib/c-ares-1.33.0/test/fuzzinput/14b133bf18125b75a1976fa63a1df6b7 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/14b133bf18125b75a1976fa63a1df6b7 rename to lib/c-ares-1.33.0/test/fuzzinput/14b133bf18125b75a1976fa63a1df6b7 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/153c6b3afa8faa03c8bc28f936a6d4cf b/lib/c-ares-1.33.0/test/fuzzinput/153c6b3afa8faa03c8bc28f936a6d4cf similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/153c6b3afa8faa03c8bc28f936a6d4cf rename to lib/c-ares-1.33.0/test/fuzzinput/153c6b3afa8faa03c8bc28f936a6d4cf diff --git a/lib/c-ares-1.32.3/test/fuzzinput/182cad2a342ed7317b7c21a5d17020d1 b/lib/c-ares-1.33.0/test/fuzzinput/182cad2a342ed7317b7c21a5d17020d1 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/182cad2a342ed7317b7c21a5d17020d1 rename to lib/c-ares-1.33.0/test/fuzzinput/182cad2a342ed7317b7c21a5d17020d1 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/1c61a61bb7057b52c5b15188345a5238 b/lib/c-ares-1.33.0/test/fuzzinput/1c61a61bb7057b52c5b15188345a5238 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/1c61a61bb7057b52c5b15188345a5238 rename to lib/c-ares-1.33.0/test/fuzzinput/1c61a61bb7057b52c5b15188345a5238 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/1dbe2cf62ed2e4fa1c3cb473f08710b5 b/lib/c-ares-1.33.0/test/fuzzinput/1dbe2cf62ed2e4fa1c3cb473f08710b5 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/1dbe2cf62ed2e4fa1c3cb473f08710b5 rename to lib/c-ares-1.33.0/test/fuzzinput/1dbe2cf62ed2e4fa1c3cb473f08710b5 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/21199be504fcfece5c7096ee0dbba507 b/lib/c-ares-1.33.0/test/fuzzinput/21199be504fcfece5c7096ee0dbba507 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/21199be504fcfece5c7096ee0dbba507 rename to lib/c-ares-1.33.0/test/fuzzinput/21199be504fcfece5c7096ee0dbba507 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/21891480074b5635dbbe7137bdcabccd b/lib/c-ares-1.33.0/test/fuzzinput/21891480074b5635dbbe7137bdcabccd similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/21891480074b5635dbbe7137bdcabccd rename to lib/c-ares-1.33.0/test/fuzzinput/21891480074b5635dbbe7137bdcabccd diff --git a/lib/c-ares-1.32.3/test/fuzzinput/233aea42e15aa73e131eefabf16088c9 b/lib/c-ares-1.33.0/test/fuzzinput/233aea42e15aa73e131eefabf16088c9 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/233aea42e15aa73e131eefabf16088c9 rename to lib/c-ares-1.33.0/test/fuzzinput/233aea42e15aa73e131eefabf16088c9 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/24660d4e7ac7aa21d600ea7a3d198bbb b/lib/c-ares-1.33.0/test/fuzzinput/24660d4e7ac7aa21d600ea7a3d198bbb similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/24660d4e7ac7aa21d600ea7a3d198bbb rename to lib/c-ares-1.33.0/test/fuzzinput/24660d4e7ac7aa21d600ea7a3d198bbb diff --git a/lib/c-ares-1.32.3/test/fuzzinput/25589deb55c08429345f289d1c9b0254 b/lib/c-ares-1.33.0/test/fuzzinput/25589deb55c08429345f289d1c9b0254 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/25589deb55c08429345f289d1c9b0254 rename to lib/c-ares-1.33.0/test/fuzzinput/25589deb55c08429345f289d1c9b0254 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/2573bd823e4da11f727a17f8e1f35c26 b/lib/c-ares-1.33.0/test/fuzzinput/2573bd823e4da11f727a17f8e1f35c26 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/2573bd823e4da11f727a17f8e1f35c26 rename to lib/c-ares-1.33.0/test/fuzzinput/2573bd823e4da11f727a17f8e1f35c26 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/276f12da56866273e76059ad0e7be97e b/lib/c-ares-1.33.0/test/fuzzinput/276f12da56866273e76059ad0e7be97e similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/276f12da56866273e76059ad0e7be97e rename to lib/c-ares-1.33.0/test/fuzzinput/276f12da56866273e76059ad0e7be97e diff --git a/lib/c-ares-1.32.3/test/fuzzinput/29198a2e380cb19babec9e02116d213e b/lib/c-ares-1.33.0/test/fuzzinput/29198a2e380cb19babec9e02116d213e similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/29198a2e380cb19babec9e02116d213e rename to lib/c-ares-1.33.0/test/fuzzinput/29198a2e380cb19babec9e02116d213e diff --git a/lib/c-ares-1.32.3/test/fuzzinput/2c94ba9434b1a1b9396fc5364f101363 b/lib/c-ares-1.33.0/test/fuzzinput/2c94ba9434b1a1b9396fc5364f101363 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/2c94ba9434b1a1b9396fc5364f101363 rename to lib/c-ares-1.33.0/test/fuzzinput/2c94ba9434b1a1b9396fc5364f101363 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/2d578c357dc2f5e02dc55cddb30641d1 b/lib/c-ares-1.33.0/test/fuzzinput/2d578c357dc2f5e02dc55cddb30641d1 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/2d578c357dc2f5e02dc55cddb30641d1 rename to lib/c-ares-1.33.0/test/fuzzinput/2d578c357dc2f5e02dc55cddb30641d1 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/2dff6cc5a223e67fde9e5e79af456992 b/lib/c-ares-1.33.0/test/fuzzinput/2dff6cc5a223e67fde9e5e79af456992 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/2dff6cc5a223e67fde9e5e79af456992 rename to lib/c-ares-1.33.0/test/fuzzinput/2dff6cc5a223e67fde9e5e79af456992 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/2f103b1f9477f2d8934bd84328d51c75 b/lib/c-ares-1.33.0/test/fuzzinput/2f103b1f9477f2d8934bd84328d51c75 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/2f103b1f9477f2d8934bd84328d51c75 rename to lib/c-ares-1.33.0/test/fuzzinput/2f103b1f9477f2d8934bd84328d51c75 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/31cd3a8413de13d9624adbb1613784bf b/lib/c-ares-1.33.0/test/fuzzinput/31cd3a8413de13d9624adbb1613784bf similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/31cd3a8413de13d9624adbb1613784bf rename to lib/c-ares-1.33.0/test/fuzzinput/31cd3a8413de13d9624adbb1613784bf diff --git a/lib/c-ares-1.32.3/test/fuzzinput/36415bdf1d180098fe6234b4186e69f3 b/lib/c-ares-1.33.0/test/fuzzinput/36415bdf1d180098fe6234b4186e69f3 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/36415bdf1d180098fe6234b4186e69f3 rename to lib/c-ares-1.33.0/test/fuzzinput/36415bdf1d180098fe6234b4186e69f3 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/3a04a80f0242e8dff0cd732e7c4767da b/lib/c-ares-1.33.0/test/fuzzinput/3a04a80f0242e8dff0cd732e7c4767da similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/3a04a80f0242e8dff0cd732e7c4767da rename to lib/c-ares-1.33.0/test/fuzzinput/3a04a80f0242e8dff0cd732e7c4767da diff --git a/lib/c-ares-1.32.3/test/fuzzinput/44d0f973b7b0fb3e4a07770c943dcd5a b/lib/c-ares-1.33.0/test/fuzzinput/44d0f973b7b0fb3e4a07770c943dcd5a similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/44d0f973b7b0fb3e4a07770c943dcd5a rename to lib/c-ares-1.33.0/test/fuzzinput/44d0f973b7b0fb3e4a07770c943dcd5a diff --git a/lib/c-ares-1.32.3/test/fuzzinput/50bc00daa0ddcd6cfb2b5d9f62c81f47 b/lib/c-ares-1.33.0/test/fuzzinput/50bc00daa0ddcd6cfb2b5d9f62c81f47 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/50bc00daa0ddcd6cfb2b5d9f62c81f47 rename to lib/c-ares-1.33.0/test/fuzzinput/50bc00daa0ddcd6cfb2b5d9f62c81f47 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/51ed2d1fb77b3078b54e94e85606b7df b/lib/c-ares-1.33.0/test/fuzzinput/51ed2d1fb77b3078b54e94e85606b7df similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/51ed2d1fb77b3078b54e94e85606b7df rename to lib/c-ares-1.33.0/test/fuzzinput/51ed2d1fb77b3078b54e94e85606b7df diff --git a/lib/c-ares-1.32.3/test/fuzzinput/5c5e0e899cf2e7d053a9e45fb76f6e5a b/lib/c-ares-1.33.0/test/fuzzinput/5c5e0e899cf2e7d053a9e45fb76f6e5a similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/5c5e0e899cf2e7d053a9e45fb76f6e5a rename to lib/c-ares-1.33.0/test/fuzzinput/5c5e0e899cf2e7d053a9e45fb76f6e5a diff --git a/lib/c-ares-1.32.3/test/fuzzinput/70152ed033f139443fbfb1b858bb3b1b b/lib/c-ares-1.33.0/test/fuzzinput/70152ed033f139443fbfb1b858bb3b1b similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/70152ed033f139443fbfb1b858bb3b1b rename to lib/c-ares-1.33.0/test/fuzzinput/70152ed033f139443fbfb1b858bb3b1b diff --git a/lib/c-ares-1.32.3/test/fuzzinput/7030ca2b24e5a7f9dd8f62096a48eb33 b/lib/c-ares-1.33.0/test/fuzzinput/7030ca2b24e5a7f9dd8f62096a48eb33 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/7030ca2b24e5a7f9dd8f62096a48eb33 rename to lib/c-ares-1.33.0/test/fuzzinput/7030ca2b24e5a7f9dd8f62096a48eb33 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/71eec1a0ef2d25bb9e2ef17f23be7e9e b/lib/c-ares-1.33.0/test/fuzzinput/71eec1a0ef2d25bb9e2ef17f23be7e9e similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/71eec1a0ef2d25bb9e2ef17f23be7e9e rename to lib/c-ares-1.33.0/test/fuzzinput/71eec1a0ef2d25bb9e2ef17f23be7e9e diff --git a/lib/c-ares-1.32.3/test/fuzzinput/7a6b0177210ea4ef40b254daf99393c5 b/lib/c-ares-1.33.0/test/fuzzinput/7a6b0177210ea4ef40b254daf99393c5 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/7a6b0177210ea4ef40b254daf99393c5 rename to lib/c-ares-1.33.0/test/fuzzinput/7a6b0177210ea4ef40b254daf99393c5 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/7f1567733711ffb61839621af0cbfa33 b/lib/c-ares-1.33.0/test/fuzzinput/7f1567733711ffb61839621af0cbfa33 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/7f1567733711ffb61839621af0cbfa33 rename to lib/c-ares-1.33.0/test/fuzzinput/7f1567733711ffb61839621af0cbfa33 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/850c6d57c5bb7be8205fc2438d14d7e5 b/lib/c-ares-1.33.0/test/fuzzinput/850c6d57c5bb7be8205fc2438d14d7e5 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/850c6d57c5bb7be8205fc2438d14d7e5 rename to lib/c-ares-1.33.0/test/fuzzinput/850c6d57c5bb7be8205fc2438d14d7e5 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/a5c8cd2784a5792b9e91c2d7895b3b34 b/lib/c-ares-1.33.0/test/fuzzinput/a5c8cd2784a5792b9e91c2d7895b3b34 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/a5c8cd2784a5792b9e91c2d7895b3b34 rename to lib/c-ares-1.33.0/test/fuzzinput/a5c8cd2784a5792b9e91c2d7895b3b34 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/a9135cdc7151d023300ff194bad90af9 b/lib/c-ares-1.33.0/test/fuzzinput/a9135cdc7151d023300ff194bad90af9 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/a9135cdc7151d023300ff194bad90af9 rename to lib/c-ares-1.33.0/test/fuzzinput/a9135cdc7151d023300ff194bad90af9 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/af2597e8ac7dec1e8b4a47518312912a b/lib/c-ares-1.33.0/test/fuzzinput/af2597e8ac7dec1e8b4a47518312912a similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/af2597e8ac7dec1e8b4a47518312912a rename to lib/c-ares-1.33.0/test/fuzzinput/af2597e8ac7dec1e8b4a47518312912a diff --git a/lib/c-ares-1.32.3/test/fuzzinput/answer_a b/lib/c-ares-1.33.0/test/fuzzinput/answer_a similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/answer_a rename to lib/c-ares-1.33.0/test/fuzzinput/answer_a diff --git a/lib/c-ares-1.32.3/test/fuzzinput/answer_aaaa b/lib/c-ares-1.33.0/test/fuzzinput/answer_aaaa similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/answer_aaaa rename to lib/c-ares-1.33.0/test/fuzzinput/answer_aaaa diff --git a/lib/c-ares-1.32.3/test/fuzzinput/b3f53ef826b831bb09dd25c7f5960249 b/lib/c-ares-1.33.0/test/fuzzinput/b3f53ef826b831bb09dd25c7f5960249 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/b3f53ef826b831bb09dd25c7f5960249 rename to lib/c-ares-1.33.0/test/fuzzinput/b3f53ef826b831bb09dd25c7f5960249 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/cda0f8751f5c4993974c2b549d29bcc8 b/lib/c-ares-1.33.0/test/fuzzinput/cda0f8751f5c4993974c2b549d29bcc8 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/cda0f8751f5c4993974c2b549d29bcc8 rename to lib/c-ares-1.33.0/test/fuzzinput/cda0f8751f5c4993974c2b549d29bcc8 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/ce6c26c0e469339873d0e7f616ab0945 b/lib/c-ares-1.33.0/test/fuzzinput/ce6c26c0e469339873d0e7f616ab0945 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/ce6c26c0e469339873d0e7f616ab0945 rename to lib/c-ares-1.33.0/test/fuzzinput/ce6c26c0e469339873d0e7f616ab0945 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5637790584012800 b/lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5637790584012800 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5637790584012800 rename to lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5637790584012800 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5650695891451904 b/lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5650695891451904 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5650695891451904 rename to lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5650695891451904 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5651369832218624 b/lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5651369832218624 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5651369832218624 rename to lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5651369832218624 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5674462260756480 b/lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5674462260756480 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5674462260756480 rename to lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5674462260756480 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5680630672654336 b/lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5680630672654336 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5680630672654336 rename to lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5680630672654336 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5683497160671232 b/lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5683497160671232 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5683497160671232 rename to lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5683497160671232 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5687310655422464 b/lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5687310655422464 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5687310655422464 rename to lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5687310655422464 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5695341573177344 b/lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5695341573177344 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5695341573177344 rename to lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5695341573177344 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5697835103682560 b/lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5697835103682560 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5697835103682560 rename to lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5697835103682560 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5728518081609728 b/lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5728518081609728 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5728518081609728 rename to lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5728518081609728 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5732960017317888 b/lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5732960017317888 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/clusterfuzz-5732960017317888 rename to lib/c-ares-1.33.0/test/fuzzinput/clusterfuzz-5732960017317888 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/e4dd7e7c2dd4ed7c2e17a6af5d04f9c9 b/lib/c-ares-1.33.0/test/fuzzinput/e4dd7e7c2dd4ed7c2e17a6af5d04f9c9 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/e4dd7e7c2dd4ed7c2e17a6af5d04f9c9 rename to lib/c-ares-1.33.0/test/fuzzinput/e4dd7e7c2dd4ed7c2e17a6af5d04f9c9 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/ed50ed8ee36230a5a69746ad830437e5 b/lib/c-ares-1.33.0/test/fuzzinput/ed50ed8ee36230a5a69746ad830437e5 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/ed50ed8ee36230a5a69746ad830437e5 rename to lib/c-ares-1.33.0/test/fuzzinput/ed50ed8ee36230a5a69746ad830437e5 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/f1b900d50806021953321c3b604ee497 b/lib/c-ares-1.33.0/test/fuzzinput/f1b900d50806021953321c3b604ee497 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/f1b900d50806021953321c3b604ee497 rename to lib/c-ares-1.33.0/test/fuzzinput/f1b900d50806021953321c3b604ee497 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/f6606f624be8c628328cea01d2cd07a9 b/lib/c-ares-1.33.0/test/fuzzinput/f6606f624be8c628328cea01d2cd07a9 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/f6606f624be8c628328cea01d2cd07a9 rename to lib/c-ares-1.33.0/test/fuzzinput/f6606f624be8c628328cea01d2cd07a9 diff --git a/lib/c-ares-1.32.3/test/fuzzinput/f89f6c8176b564a7dd646f14305573ce b/lib/c-ares-1.33.0/test/fuzzinput/f89f6c8176b564a7dd646f14305573ce similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/f89f6c8176b564a7dd646f14305573ce rename to lib/c-ares-1.33.0/test/fuzzinput/f89f6c8176b564a7dd646f14305573ce diff --git a/lib/c-ares-1.32.3/test/fuzzinput/f9ad508d2dbd08d3aaaabc7d1174677d b/lib/c-ares-1.33.0/test/fuzzinput/f9ad508d2dbd08d3aaaabc7d1174677d similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/f9ad508d2dbd08d3aaaabc7d1174677d rename to lib/c-ares-1.33.0/test/fuzzinput/f9ad508d2dbd08d3aaaabc7d1174677d diff --git a/lib/c-ares-1.32.3/test/fuzzinput/multi-indir b/lib/c-ares-1.33.0/test/fuzzinput/multi-indir similarity index 100% rename from lib/c-ares-1.32.3/test/fuzzinput/multi-indir rename to lib/c-ares-1.33.0/test/fuzzinput/multi-indir diff --git a/lib/c-ares-1.32.3/test/fuzznames/name01 b/lib/c-ares-1.33.0/test/fuzznames/name01 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzznames/name01 rename to lib/c-ares-1.33.0/test/fuzznames/name01 diff --git a/lib/c-ares-1.32.3/test/fuzznames/name02 b/lib/c-ares-1.33.0/test/fuzznames/name02 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzznames/name02 rename to lib/c-ares-1.33.0/test/fuzznames/name02 diff --git a/lib/c-ares-1.32.3/test/fuzznames/name03 b/lib/c-ares-1.33.0/test/fuzznames/name03 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzznames/name03 rename to lib/c-ares-1.33.0/test/fuzznames/name03 diff --git a/lib/c-ares-1.32.3/test/fuzznames/name04 b/lib/c-ares-1.33.0/test/fuzznames/name04 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzznames/name04 rename to lib/c-ares-1.33.0/test/fuzznames/name04 diff --git a/lib/c-ares-1.32.3/test/fuzznames/name05 b/lib/c-ares-1.33.0/test/fuzznames/name05 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzznames/name05 rename to lib/c-ares-1.33.0/test/fuzznames/name05 diff --git a/lib/c-ares-1.32.3/test/fuzznames/name06 b/lib/c-ares-1.33.0/test/fuzznames/name06 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzznames/name06 rename to lib/c-ares-1.33.0/test/fuzznames/name06 diff --git a/lib/c-ares-1.32.3/test/fuzznames/name07 b/lib/c-ares-1.33.0/test/fuzznames/name07 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzznames/name07 rename to lib/c-ares-1.33.0/test/fuzznames/name07 diff --git a/lib/c-ares-1.32.3/test/fuzznames/name08 b/lib/c-ares-1.33.0/test/fuzznames/name08 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzznames/name08 rename to lib/c-ares-1.33.0/test/fuzznames/name08 diff --git a/lib/c-ares-1.32.3/test/fuzznames/name09 b/lib/c-ares-1.33.0/test/fuzznames/name09 similarity index 100% rename from lib/c-ares-1.32.3/test/fuzznames/name09 rename to lib/c-ares-1.33.0/test/fuzznames/name09