Compare commits
65 Commits
c-ares-1_7
...
rawhide
Author | SHA1 | Date |
---|---|---|
Fedora Release Engineering | 6b7a827d83 | |
Fedora Release Engineering | cce3641867 | |
Tom spot Callaway | b4df9ed533 | |
Fedora Release Engineering | b6baca863d | |
Fedora Release Engineering | 3f5ea31b1d | |
Fedora Release Engineering | 503688dbdc | |
Tom Stellard | b53e2416a7 | |
Tom spot Callaway | fcb6e5afb0 | |
Tom spot Callaway | bf057fcd81 | |
Fedora Release Engineering | ab3b24b570 | |
Tom Stellard | 147e0a6b27 | |
Igor Raits | bcd0dbcad6 | |
Tom Callaway | 28dc2c4b1f | |
Tom Callaway | 228acfd157 | |
Fedora Release Engineering | e3709186be | |
Fedora Release Engineering | e11b95a98d | |
Tom Callaway | e3d358eca4 | |
Tom Callaway | 4f75e1c62e | |
Fedora Release Engineering | a9edfcee9c | |
Igor Gnatenko | 4eb0ca36e1 | |
Igor Gnatenko | f9802fee51 | |
Jakub Hrozek | ee20716e13 | |
Jakub Hrozek | 75fce61909 | |
Fedora Release Engineering | 1b8f834b58 | |
Jason Tibbitts | 399c3163ba | |
Igor Gnatenko | 1063e02327 | |
Igor Gnatenko | d4cb80ab4c | |
Fedora Release Engineering | 9fb85b29ce | |
Fedora Release Engineering | e60fa882d9 | |
Fedora Release Engineering | d796c617d6 | |
Jakub Hrozek | 4785e5c178 | |
Fedora Release Engineering | b74febc36b | |
Tom Callaway | d76c7c5e9b | |
Jakub Hrozek | ab86701685 | |
Dennis Gilmore | 2d584fad3a | |
Dennis Gilmore | 8ec7566823 | |
Peter Robinson | b6834e2e95 | |
Dennis Gilmore | 0ca7c5ab14 | |
Dennis Gilmore | 7b14a946e8 | |
Jakub Hrozek | 1c0f743dfd | |
Jakub Hrozek | 24bbb91f60 | |
Jakub Hrozek | 6e64982dd7 | |
Jakub Hrozek | 68e2f2a3ed | |
Dennis Gilmore | 3c1ab0a7ec | |
Jakub Hrozek | ab23a40e22 | |
Dennis Gilmore | 795027f3c7 | |
Tom Callaway | 6603e0b880 | |
Tom Callaway | ab2c75f35b | |
Dennis Gilmore | dd6af9b4cb | |
Jakub Hrozek | aa9ea90b2d | |
Jakub Hrozek | e2cb3f70b1 | |
Jakub Hrozek | 7d832096ca | |
Jakub Hrozek | 41be15ef5c | |
Dennis Gilmore | c29dd4b55c | |
Tom "spot" Callaway | ee9ba88b30 | |
Jakub Hrozek | a4003969d3 | |
Jakub Hrozek | 3ae20977c9 | |
Jakub Hrozek | 2d340cecb0 | |
Fedora Release Engineering | c77a0f1527 | |
Jakub Hrozek | 1d13e8ce70 | |
Jakub Hrozek | 7a22fd9899 | |
Jakub Hrozek | d6fe1b4f2a | |
Jakub Hrozek | ac7f48ff81 | |
Jakub Hrozek | 3a3344272f | |
Jakub Hrozek | ba51447860 |
|
@ -1 +0,0 @@
|
|||
c-ares-1.7.0.tar.gz
|
|
@ -0,0 +1,16 @@
|
|||
c-ares-1.7.3.tar.gz
|
||||
/c-ares-1.7.4.tar.gz
|
||||
/c-ares-1.7.5.tar.gz
|
||||
/c-ares-1.8.0.tar.gz
|
||||
/c-ares-1.9.1.tar.gz
|
||||
/c-ares-1.10.0.tar.gz
|
||||
/c-ares-1.11.0.tar.gz
|
||||
/c-ares-1.12.0.tar.gz
|
||||
/c-ares-1.13.0.tar.gz
|
||||
/c-ares-1.14.0.tar.gz
|
||||
/c-ares-1.15.0.tar.gz
|
||||
/c-ares-1.16.0.tar.gz
|
||||
/c-ares-1.16.1.tar.gz
|
||||
/c-ares-1.17.0.tar.gz
|
||||
/c-ares-1.17.1.tar.gz
|
||||
/c-ares-1.17.2.tar.gz
|
|
@ -1,653 +0,0 @@
|
|||
From 1f1893a428376810f2c2887cf51ca7891917b216 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Hrozek <jhrozek@redhat.com>
|
||||
Date: Mon, 1 Feb 2010 21:23:59 +0100
|
||||
Subject: [PATCH 1/2] Allow the use of IPv6 nameservers
|
||||
|
||||
This patch allows the use of IPv6 addresses for nameserves in both
|
||||
/etc/resolv.conf and by using the ares_set_nameservers() API.
|
||||
---
|
||||
Makefile.inc | 3 +
|
||||
ares.h | 13 +++
|
||||
ares_destroy.c | 10 +--
|
||||
ares_init.c | 208 ++++++++++++++++++++++++++++++++++++++---------
|
||||
ares_private.h | 13 +--
|
||||
ares_process.c | 95 +++++++++++++++++-----
|
||||
ares_set_nameservers.3 | 58 +++++++++++++
|
||||
7 files changed, 320 insertions(+), 80 deletions(-)
|
||||
create mode 100644 ares_set_nameservers.3
|
||||
|
||||
diff --git a/Makefile.inc b/Makefile.inc
|
||||
index 3227858..8e575fd 100644
|
||||
--- a/Makefile.inc
|
||||
+++ b/Makefile.inc
|
||||
@@ -92,6 +92,7 @@ MANPAGES = ares_cancel.3 \
|
||||
ares_search.3 \
|
||||
ares_send.3 \
|
||||
ares_set_socket_callback.3 \
|
||||
+ ares_set_nameservers.3 \
|
||||
ares_strerror.3 \
|
||||
ares_timeout.3 \
|
||||
ares_version.3
|
||||
@@ -128,6 +129,7 @@ HTMLPAGES = ares_cancel.html \
|
||||
ares_search.html \
|
||||
ares_send.html \
|
||||
ares_set_socket_callback.html \
|
||||
+ ares_set_nameservers.html \
|
||||
ares_strerror.html \
|
||||
ares_timeout.html \
|
||||
ares_version.html
|
||||
@@ -164,6 +166,7 @@ PDFPAGES = ares_cancel.pdf \
|
||||
ares_search.pdf \
|
||||
ares_send.pdf \
|
||||
ares_set_socket_callback.pdf \
|
||||
+ ares_set_nameservers.pdf \
|
||||
ares_strerror.pdf \
|
||||
ares_timeout.pdf \
|
||||
ares_version.pdf
|
||||
diff --git a/ares.h b/ares.h
|
||||
index b1c2c22..57bd445 100644
|
||||
--- a/ares.h
|
||||
+++ b/ares.h
|
||||
@@ -426,6 +426,19 @@ struct ares_addr6ttl {
|
||||
int ttl;
|
||||
};
|
||||
|
||||
+struct ares_addr {
|
||||
+ int family;
|
||||
+ union {
|
||||
+ struct in_addr addr4;
|
||||
+ struct in6_addr addr6;
|
||||
+ } addr;
|
||||
+};
|
||||
+
|
||||
+/* Sets nameservers for the given ares channel handle */
|
||||
+CARES_EXTERN int ares_set_nameservers(ares_channel channel,
|
||||
+ struct ares_addr *servers,
|
||||
+ int num_servers);
|
||||
+
|
||||
struct ares_srv_reply {
|
||||
struct ares_srv_reply *next;
|
||||
char *host;
|
||||
diff --git a/ares_destroy.c b/ares_destroy.c
|
||||
index 0044a71..4040971 100644
|
||||
--- a/ares_destroy.c
|
||||
+++ b/ares_destroy.c
|
||||
@@ -67,15 +67,7 @@ void ares_destroy(ares_channel channel)
|
||||
}
|
||||
#endif
|
||||
|
||||
- if (channel->servers) {
|
||||
- for (i = 0; i < channel->nservers; i++)
|
||||
- {
|
||||
- struct server_state *server = &channel->servers[i];
|
||||
- ares__close_sockets(channel, server);
|
||||
- assert(ares__is_list_empty(&(server->queries_to_server)));
|
||||
- }
|
||||
- free(channel->servers);
|
||||
- }
|
||||
+ ares__free_servers(channel);
|
||||
|
||||
if (channel->domains) {
|
||||
for (i = 0; i < channel->ndomains; i++)
|
||||
diff --git a/ares_init.c b/ares_init.c
|
||||
index cb541af..98e9202 100644
|
||||
--- a/ares_init.c
|
||||
+++ b/ares_init.c
|
||||
@@ -65,6 +65,7 @@
|
||||
#include <ctype.h>
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
+#include <assert.h>
|
||||
#include "ares.h"
|
||||
#include "inet_net_pton.h"
|
||||
#include "ares_library_init.h"
|
||||
@@ -88,6 +89,7 @@ static int set_search(ares_channel channel, const char *str);
|
||||
static int set_options(ares_channel channel, const char *str);
|
||||
static const char *try_option(const char *p, const char *q, const char *opt);
|
||||
static int init_id_key(rc4_key* key,int key_data_len);
|
||||
+static void init_servers(ares_channel channel);
|
||||
|
||||
#if !defined(WIN32) && !defined(WATT32)
|
||||
static int sortlist_alloc(struct apattern **sortlist, int *nsort, struct apattern *pat);
|
||||
@@ -118,7 +120,6 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
|
||||
ares_channel channel;
|
||||
int i;
|
||||
int status = ARES_SUCCESS;
|
||||
- struct server_state *server;
|
||||
struct timeval now;
|
||||
|
||||
#ifdef CURLDEBUG
|
||||
@@ -248,20 +249,7 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
|
||||
channel->nservers = 1;
|
||||
|
||||
/* Initialize server states. */
|
||||
- for (i = 0; i < channel->nservers; i++)
|
||||
- {
|
||||
- server = &channel->servers[i];
|
||||
- server->udp_socket = ARES_SOCKET_BAD;
|
||||
- server->tcp_socket = ARES_SOCKET_BAD;
|
||||
- server->tcp_connection_generation = ++channel->tcp_connection_generation;
|
||||
- server->tcp_lenbuf_pos = 0;
|
||||
- server->tcp_buffer = NULL;
|
||||
- server->qhead = NULL;
|
||||
- server->qtail = NULL;
|
||||
- ares__init_list_head(&(server->queries_to_server));
|
||||
- server->channel = channel;
|
||||
- server->is_broken = 0;
|
||||
- }
|
||||
+ init_servers(channel);
|
||||
|
||||
*channelptr = channel;
|
||||
return ARES_SUCCESS;
|
||||
@@ -296,6 +284,29 @@ int ares_dup(ares_channel *dest, ares_channel src)
|
||||
(*dest)->sock_create_cb = src->sock_create_cb;
|
||||
(*dest)->sock_create_cb_data = src->sock_create_cb_data;
|
||||
|
||||
+ /* IPv4 nameservers were copied in ares_save_options, we
|
||||
+ * can only copy v6 servers */
|
||||
+ if (src->nservers > (*dest)->nservers)
|
||||
+ {
|
||||
+ int i;
|
||||
+ (*dest)->servers =
|
||||
+ realloc((*dest)->servers,
|
||||
+ src->nservers * sizeof(struct server_state));
|
||||
+ if (!(*dest)->servers)
|
||||
+ return ARES_ENOMEM;
|
||||
+
|
||||
+ for (i = 0; i < src->nservers; i++)
|
||||
+ {
|
||||
+ if (src->servers[i].addr.family == AF_INET6)
|
||||
+ {
|
||||
+ memcpy(&((*dest)->servers[(*dest)->nservers].addr),
|
||||
+ &(src->servers[i].addr),
|
||||
+ sizeof(struct ares_addr));
|
||||
+ (*dest)->nservers++;
|
||||
+ }
|
||||
+ }
|
||||
+ init_servers(*dest);
|
||||
+ }
|
||||
|
||||
return ARES_SUCCESS; /* everything went fine */
|
||||
|
||||
@@ -334,17 +345,33 @@ int ares_save_options(ares_channel channel, struct ares_options *options,
|
||||
options->tcp_port = (unsigned short)channel->tcp_port;
|
||||
options->sock_state_cb = channel->sock_state_cb;
|
||||
options->sock_state_cb_data = channel->sock_state_cb_data;
|
||||
+ options->nservers = 0;
|
||||
|
||||
/* Copy servers */
|
||||
if (channel->nservers) {
|
||||
+ int numv4 = 0;
|
||||
options->servers =
|
||||
malloc(channel->nservers * sizeof(struct server_state));
|
||||
- if (!options->servers && channel->nservers != 0)
|
||||
+ if (!options->servers)
|
||||
return ARES_ENOMEM;
|
||||
for (i = 0; i < channel->nservers; i++)
|
||||
- options->servers[i] = channel->servers[i].addr;
|
||||
+ {
|
||||
+ if (channel->servers[i].addr.family == AF_INET)
|
||||
+ {
|
||||
+ /* Because struct ares_options should stay the same
|
||||
+ * only IPv4 nameservers are saved in this patch.
|
||||
+ * ares_dup() works for both v4 and v6, though
|
||||
+ */
|
||||
+ options->servers[numv4++] =
|
||||
+ channel->servers[i].addr.addrV4;
|
||||
+ }
|
||||
+ }
|
||||
+ options->servers =
|
||||
+ realloc(options->servers, numv4 * sizeof(struct server_state));
|
||||
+ if (numv4 && !options->servers)
|
||||
+ return ARES_ENOMEM;
|
||||
+ options->nservers = numv4;
|
||||
}
|
||||
- options->nservers = channel->nservers;
|
||||
|
||||
/* copy domains */
|
||||
if (channel->ndomains) {
|
||||
@@ -431,7 +458,15 @@ static int init_by_options(ares_channel channel,
|
||||
if (!channel->servers)
|
||||
return ARES_ENOMEM;
|
||||
for (i = 0; i < options->nservers; i++)
|
||||
- channel->servers[i].addr = options->servers[i];
|
||||
+ {
|
||||
+ /* This is a rather crude way to allow usage of
|
||||
+ * protocol-independent struct addrinfo while not
|
||||
+ * breaking the public struct ares_options which is forbidden
|
||||
+ * in favor of providing ares_set_XXX() functions
|
||||
+ */
|
||||
+ channel->servers[i].addr.family = AF_INET;
|
||||
+ channel->servers[i].addr.addrV4 = options->servers[i];
|
||||
+ }
|
||||
}
|
||||
channel->nservers = options->nservers;
|
||||
}
|
||||
@@ -1001,7 +1036,9 @@ static int init_by_defaults(ares_channel channel)
|
||||
rc = ARES_ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
- channel->servers[0].addr.s_addr = htonl(INADDR_LOOPBACK);
|
||||
+
|
||||
+ channel->servers[0].addr.family = AF_INET;
|
||||
+ channel->servers[0].addr.addrV4.s_addr = htonl(INADDR_LOOPBACK);
|
||||
channel->nservers = 1;
|
||||
}
|
||||
|
||||
@@ -1146,11 +1183,48 @@ static int config_lookup(ares_channel channel, const char *str,
|
||||
#endif /* !WIN32 & !WATT32 */
|
||||
|
||||
#ifndef WATT32
|
||||
+static int set_nameserver(struct server_state **servers, int *nservers,
|
||||
+ char *str)
|
||||
+{
|
||||
+ struct server_state *newserv;
|
||||
+ struct in_addr addr;
|
||||
+ struct in6_addr addr6;
|
||||
+
|
||||
+ newserv = realloc(*servers, (*nservers + 1) * sizeof(struct server_state));
|
||||
+ if (!newserv)
|
||||
+ {
|
||||
+ return ARES_ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ addr.s_addr = inet_addr(str);
|
||||
+ if (addr.s_addr == INADDR_NONE)
|
||||
+ {
|
||||
+ /* Not an IPv4 address, try IPv6 */
|
||||
+ if(ares_inet_pton(AF_INET6, str, (struct in6_addr *) &addr6) == 0)
|
||||
+ {
|
||||
+ /* Not IPv6 either, bail out */
|
||||
+ return ARES_EBADFAMILY;
|
||||
+ }
|
||||
+
|
||||
+ newserv[*nservers].addr.family = AF_INET6;
|
||||
+ memcpy(&newserv[*nservers].addr.addrV6, &addr6, 16);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ newserv[*nservers].addr.family = AF_INET;
|
||||
+ newserv[*nservers].addr.addrV4 = addr;
|
||||
+ }
|
||||
+
|
||||
+ *servers = newserv;
|
||||
+ (*nservers)++;
|
||||
+ return ARES_SUCCESS;
|
||||
+}
|
||||
+
|
||||
static int config_nameserver(struct server_state **servers, int *nservers,
|
||||
char *str)
|
||||
{
|
||||
- struct in_addr addr;
|
||||
- struct server_state *newserv;
|
||||
+ int ret;
|
||||
+
|
||||
/* On Windows, there may be more than one nameserver specified in the same
|
||||
* registry key, so we parse it as a space or comma seperated list.
|
||||
*/
|
||||
@@ -1178,15 +1252,9 @@ static int config_nameserver(struct server_state **servers, int *nservers,
|
||||
}
|
||||
|
||||
/* This is the part that actually sets the nameserver */
|
||||
- addr.s_addr = inet_addr(begin);
|
||||
- if (addr.s_addr == INADDR_NONE)
|
||||
- continue;
|
||||
- newserv = realloc(*servers, (*nservers + 1) * sizeof(struct server_state));
|
||||
- if (!newserv)
|
||||
- return ARES_ENOMEM;
|
||||
- newserv[*nservers].addr = addr;
|
||||
- *servers = newserv;
|
||||
- (*nservers)++;
|
||||
+ ret = set_nameserver(servers, nservers, begin);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
|
||||
if (!more)
|
||||
break;
|
||||
@@ -1194,15 +1262,9 @@ static int config_nameserver(struct server_state **servers, int *nservers,
|
||||
}
|
||||
#else
|
||||
/* Add a nameserver entry, if this is a valid address. */
|
||||
- addr.s_addr = inet_addr(str);
|
||||
- if (addr.s_addr == INADDR_NONE)
|
||||
- return ARES_SUCCESS;
|
||||
- newserv = realloc(*servers, (*nservers + 1) * sizeof(struct server_state));
|
||||
- if (!newserv)
|
||||
- return ARES_ENOMEM;
|
||||
- newserv[*nservers].addr = addr;
|
||||
- *servers = newserv;
|
||||
- (*nservers)++;
|
||||
+ ret = set_nameserver(servers, nservers, str);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
#endif
|
||||
return ARES_SUCCESS;
|
||||
}
|
||||
@@ -1580,3 +1642,69 @@ void ares_set_socket_callback(ares_channel channel,
|
||||
channel->sock_create_cb = cb;
|
||||
channel->sock_create_cb_data = data;
|
||||
}
|
||||
+
|
||||
+static void init_servers(ares_channel channel)
|
||||
+{
|
||||
+ struct server_state *server;
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < channel->nservers; i++)
|
||||
+ {
|
||||
+ server = &channel->servers[i];
|
||||
+ server->udp_socket = ARES_SOCKET_BAD;
|
||||
+ server->tcp_socket = ARES_SOCKET_BAD;
|
||||
+ server->tcp_connection_generation = ++channel->tcp_connection_generation;
|
||||
+ server->tcp_lenbuf_pos = 0;
|
||||
+ server->tcp_buffer = NULL;
|
||||
+ server->qhead = NULL;
|
||||
+ server->qtail = NULL;
|
||||
+ ares__init_list_head(&(server->queries_to_server));
|
||||
+ server->channel = channel;
|
||||
+ server->is_broken = 0;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void ares__free_servers(ares_channel channel)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ if (channel->servers) {
|
||||
+ for (i = 0; i < channel->nservers; i++)
|
||||
+ {
|
||||
+ struct server_state *server = &channel->servers[i];
|
||||
+ ares__close_sockets(channel, server);
|
||||
+ assert(ares__is_list_empty(&(server->queries_to_server)));
|
||||
+ }
|
||||
+ free(channel->servers);
|
||||
+ }
|
||||
+
|
||||
+ channel->servers = NULL;
|
||||
+ channel->nservers = -1;
|
||||
+}
|
||||
+
|
||||
+int ares_set_nameservers(ares_channel channel,
|
||||
+ struct ares_addr *servers,
|
||||
+ int num_servers)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ ares__free_servers(channel);
|
||||
+
|
||||
+ channel->nservers = num_servers;
|
||||
+ channel->servers =
|
||||
+ malloc(channel->nservers * sizeof(struct server_state));
|
||||
+ if (!channel->servers)
|
||||
+ return ARES_ENOMEM;
|
||||
+
|
||||
+ for (i = 0; i < num_servers; i++)
|
||||
+ {
|
||||
+ struct server_state *ss = channel->servers + i;
|
||||
+ memset(ss, 0, sizeof(struct server_state));
|
||||
+
|
||||
+ ss->channel = channel;
|
||||
+ memcpy(&ss->addr, &servers[i], sizeof(struct ares_addr));
|
||||
+ }
|
||||
+
|
||||
+ init_servers(channel);
|
||||
+ return ARES_SUCCESS;
|
||||
+}
|
||||
diff --git a/ares_private.h b/ares_private.h
|
||||
index 4726d7a..286bf90 100644
|
||||
--- a/ares_private.h
|
||||
+++ b/ares_private.h
|
||||
@@ -110,13 +110,7 @@
|
||||
# define writev(s,ptr,cnt) ares_writev(s,ptr,cnt)
|
||||
#endif
|
||||
|
||||
-struct ares_addr {
|
||||
- int family;
|
||||
- union {
|
||||
- struct in_addr addr4;
|
||||
- struct in6_addr addr6;
|
||||
- } addr;
|
||||
-};
|
||||
+/* Shortcuts used for accessing the union addr inside struct ares_addr */
|
||||
#define addrV4 addr.addr4
|
||||
#define addrV6 addr.addr6
|
||||
|
||||
@@ -137,7 +131,8 @@ struct send_request {
|
||||
};
|
||||
|
||||
struct server_state {
|
||||
- struct in_addr addr;
|
||||
+ struct ares_addr addr;
|
||||
+
|
||||
ares_socket_t udp_socket;
|
||||
ares_socket_t tcp_socket;
|
||||
|
||||
@@ -319,6 +314,8 @@ struct timeval ares__tvnow(void);
|
||||
int ares__expand_name_for_response(const unsigned char *encoded,
|
||||
const unsigned char *abuf, int alen,
|
||||
char **s, long *enclen);
|
||||
+void ares__free_servers(ares_channel channel);
|
||||
+
|
||||
#if 0 /* Not used */
|
||||
long ares__tvdiff(struct timeval t1, struct timeval t2);
|
||||
#endif
|
||||
diff --git a/ares_process.c b/ares_process.c
|
||||
index 71f9394..65b95f4 100644
|
||||
--- a/ares_process.c
|
||||
+++ b/ares_process.c
|
||||
@@ -434,7 +434,7 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
|
||||
ssize_t count;
|
||||
unsigned char buf[PACKETSZ + 1];
|
||||
#ifdef HAVE_RECVFROM
|
||||
- struct sockaddr_in from;
|
||||
+ struct sockaddr_storage from;
|
||||
ares_socklen_t fromlen;
|
||||
#endif
|
||||
|
||||
@@ -480,16 +480,29 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
|
||||
if (count == -1 && try_again(SOCKERRNO))
|
||||
continue;
|
||||
else if (count <= 0)
|
||||
- handle_error(channel, i, now);
|
||||
+ {
|
||||
+ handle_error(channel, i, now);
|
||||
+ break;
|
||||
+ }
|
||||
#ifdef HAVE_RECVFROM
|
||||
- else if (from.sin_addr.s_addr != server->addr.s_addr)
|
||||
- /* Address response came from did not match the address
|
||||
- * we sent the request to. Someone may be attempting
|
||||
- * to perform a cache poisoning attack */
|
||||
- break;
|
||||
+ /* Check if address response came from did match the address
|
||||
+ * we sent the request to. Someone may be attempting
|
||||
+ * to perform a cache poisoning attack */
|
||||
+ else if (from.ss_family == AF_INET)
|
||||
+ {
|
||||
+ if (((struct sockaddr_in *) &from)->sin_addr.s_addr !=
|
||||
+ server->addr.addrV4.s_addr)
|
||||
+ break;
|
||||
+ }
|
||||
+ else if (from.ss_family == AF_INET6)
|
||||
+ {
|
||||
+ if (memcmp(((struct sockaddr_in6 *) &from)->sin6_addr.s6_addr,
|
||||
+ server->addr.addrV6.s6_addr,
|
||||
+ 16))
|
||||
+ break;
|
||||
+ }
|
||||
#endif
|
||||
- else
|
||||
- process_answer(channel, buf, (int)count, i, 0, now);
|
||||
+ process_answer(channel, buf, (int)count, i, 0, now);
|
||||
} while (count > 0);
|
||||
}
|
||||
}
|
||||
@@ -889,14 +902,44 @@ static int configure_socket(ares_socket_t s, ares_channel channel)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int prepare_addrinfo(struct server_state *server, int port,
|
||||
+ struct sockaddr_storage *addr)
|
||||
+{
|
||||
+ const unsigned short sh_port = (unsigned short)(port & 0xffff);
|
||||
+ int rc = ARES_SUCCESS;
|
||||
+
|
||||
+ switch (server->addr.family)
|
||||
+ {
|
||||
+ case AF_INET:
|
||||
+ ((struct sockaddr_in *) addr)->sin_family = AF_INET;
|
||||
+ ((struct sockaddr_in *) addr)->sin_port = sh_port;
|
||||
+ ((struct sockaddr_in *) addr)->sin_addr.s_addr = server->addr.addrV4.s_addr;
|
||||
+ break;
|
||||
+
|
||||
+ case AF_INET6:
|
||||
+ ((struct sockaddr_in6 *) addr)->sin6_family = AF_INET6;
|
||||
+ ((struct sockaddr_in6 *) addr)->sin6_port = sh_port;
|
||||
+ memcpy(((struct sockaddr_in6 *) addr)->sin6_addr.s6_addr,
|
||||
+ server->addr.addrV6.s6_addr,
|
||||
+ 16);
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ rc = ARES_EBADFAMILY;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ return rc;
|
||||
+}
|
||||
+
|
||||
static int open_tcp_socket(ares_channel channel, struct server_state *server)
|
||||
{
|
||||
ares_socket_t s;
|
||||
int opt;
|
||||
- struct sockaddr_in sockin;
|
||||
+ struct sockaddr_storage addr;
|
||||
|
||||
/* Acquire a socket. */
|
||||
- s = socket(AF_INET, SOCK_STREAM, 0);
|
||||
+ s = socket(server->addr.family, SOCK_STREAM, 0);
|
||||
if (s == ARES_SOCKET_BAD)
|
||||
return -1;
|
||||
|
||||
@@ -923,12 +966,15 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server)
|
||||
}
|
||||
#endif
|
||||
|
||||
+ if (prepare_addrinfo(server, channel->tcp_port, &addr) != ARES_SUCCESS)
|
||||
+ {
|
||||
+ sclose(s);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
/* Connect to the server. */
|
||||
- memset(&sockin, 0, sizeof(sockin));
|
||||
- sockin.sin_family = AF_INET;
|
||||
- sockin.sin_addr = server->addr;
|
||||
- sockin.sin_port = (unsigned short)(channel->tcp_port & 0xffff);
|
||||
- if (connect(s, (struct sockaddr *) &sockin, sizeof(sockin)) == -1)
|
||||
+ if (connect(s, (struct sockaddr *) &addr,
|
||||
+ sizeof(struct sockaddr_storage)) == -1)
|
||||
{
|
||||
int err = SOCKERRNO;
|
||||
|
||||
@@ -960,10 +1006,10 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server)
|
||||
static int open_udp_socket(ares_channel channel, struct server_state *server)
|
||||
{
|
||||
ares_socket_t s;
|
||||
- struct sockaddr_in sockin;
|
||||
+ struct sockaddr_storage addr;
|
||||
|
||||
/* Acquire a socket. */
|
||||
- s = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
+ s = socket(server->addr.family, SOCK_DGRAM, 0);
|
||||
if (s == ARES_SOCKET_BAD)
|
||||
return -1;
|
||||
|
||||
@@ -974,12 +1020,15 @@ static int open_udp_socket(ares_channel channel, struct server_state *server)
|
||||
return -1;
|
||||
}
|
||||
|
||||
+ if (prepare_addrinfo(server, channel->udp_port, &addr) != ARES_SUCCESS)
|
||||
+ {
|
||||
+ sclose(s);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
/* Connect to the server. */
|
||||
- memset(&sockin, 0, sizeof(sockin));
|
||||
- sockin.sin_family = AF_INET;
|
||||
- sockin.sin_addr = server->addr;
|
||||
- sockin.sin_port = (unsigned short)(channel->udp_port & 0xffff);
|
||||
- if (connect(s, (struct sockaddr *) &sockin, sizeof(sockin)) == -1)
|
||||
+ if (connect(s, (struct sockaddr *) &addr,
|
||||
+ sizeof(struct sockaddr_storage)) == -1)
|
||||
{
|
||||
int err = SOCKERRNO;
|
||||
|
||||
diff --git a/ares_set_nameservers.3 b/ares_set_nameservers.3
|
||||
new file mode 100644
|
||||
index 0000000..f573790
|
||||
--- /dev/null
|
||||
+++ b/ares_set_nameservers.3
|
||||
@@ -0,0 +1,58 @@
|
||||
+.TH ARES_SET_NAMESERVERS 3 "12 Feb 2010"
|
||||
+.SH NAME
|
||||
+ares_set_nameservers - Set nameservers
|
||||
+.SH SYNOPSIS
|
||||
+.nf
|
||||
+.B #include <ares.h>
|
||||
+.PP
|
||||
+.B int ares_set_nameservers(ares_channel \fIchannel\fP,
|
||||
+ struct ares_addr *\fIservers\fP,
|
||||
+ int \fInum_servers\fP)
|
||||
+.PP
|
||||
+.B cc file.c -lcares
|
||||
+.fi
|
||||
+.SH DESCRIPTION
|
||||
+.PP
|
||||
+This function sets nameservers for the given ares channel handle.
|
||||
+The array
|
||||
+.I servers
|
||||
+contains the addresses of nameservers, the length of the array
|
||||
+is stored in the
|
||||
+.I num_servers
|
||||
+parameter.
|
||||
+Contrary to initializing nameservers with
|
||||
+.B ares_init_options
|
||||
+this function can be used to set IPv6 nameservers.
|
||||
+
|
||||
+The structure
|
||||
+.I ares_addr
|
||||
+contains the following fields:
|
||||
+.sp
|
||||
+.in +4n
|
||||
+.nf
|
||||
+struct ares_addr {
|
||||
+ int family;
|
||||
+ union {
|
||||
+ struct in_addr addr4;
|
||||
+ struct in6_addr addr6;
|
||||
+ } addr;
|
||||
+};
|
||||
+.fi
|
||||
+.in
|
||||
+
|
||||
+.PP
|
||||
+.SH RETURN VALUES
|
||||
+.B ares_set_nameservers
|
||||
+can return any of the following values:
|
||||
+.TP 15
|
||||
+.B ARES_SUCCESS
|
||||
+The response was successfully parsed.
|
||||
+.TP 15
|
||||
+.B ARES_ENOMEM
|
||||
+Memory was exhausted.
|
||||
+.SH SEE ALSO
|
||||
+.BR ares_init_options (3)
|
||||
+.SH AUTHOR
|
||||
+Written by Jakub Hrozek <jhrozek@redhat.com>,
|
||||
+on behalf of Red Hat, Inc http://www.redhat.com
|
||||
+
|
||||
--
|
||||
1.6.6
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
From 7dada62a77e061c752123e672e844386ff3b01ea Mon Sep 17 00:00:00 2001
|
||||
From: Stephen Gallagher <sgallagh@redhat.com>
|
||||
Date: Wed, 10 Apr 2013 12:32:44 -0400
|
||||
Subject: [PATCH] Use RPM compiler options
|
||||
|
||||
---
|
||||
m4/cares-compilers.m4 | 19 ++++++-------------
|
||||
1 file changed, 6 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/m4/cares-compilers.m4 b/m4/cares-compilers.m4
|
||||
index 7ee8e0dbe741c1a64149a0d20b826f507b3ec620..d7708230fb5628ae80fbf1052da0d2c78ebbc160 100644
|
||||
--- a/m4/cares-compilers.m4
|
||||
+++ b/m4/cares-compilers.m4
|
||||
@@ -143,19 +143,12 @@ AC_DEFUN([CARES_CHECK_COMPILER_GNU_C], [
|
||||
gccvhi=`echo $gccver | cut -d . -f1`
|
||||
gccvlo=`echo $gccver | cut -d . -f2`
|
||||
compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null`
|
||||
- flags_dbg_all="-g -g0 -g1 -g2 -g3"
|
||||
- flags_dbg_all="$flags_dbg_all -ggdb"
|
||||
- flags_dbg_all="$flags_dbg_all -gstabs"
|
||||
- flags_dbg_all="$flags_dbg_all -gstabs+"
|
||||
- flags_dbg_all="$flags_dbg_all -gcoff"
|
||||
- flags_dbg_all="$flags_dbg_all -gxcoff"
|
||||
- flags_dbg_all="$flags_dbg_all -gdwarf-2"
|
||||
- flags_dbg_all="$flags_dbg_all -gvms"
|
||||
- flags_dbg_yes="-g"
|
||||
- flags_dbg_off="-g0"
|
||||
- flags_opt_all="-O -O0 -O1 -O2 -O3 -Os"
|
||||
- flags_opt_yes="-O2"
|
||||
- flags_opt_off="-O0"
|
||||
+ flags_dbg_all=""
|
||||
+ flags_dbg_yes=""
|
||||
+ flags_dbg_off=""
|
||||
+ flags_opt_all=""
|
||||
+ flags_opt_yes=""
|
||||
+ flags_opt_off=""
|
||||
CURL_CHECK_DEF([_WIN32], [], [silent])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
--
|
||||
1.8.1.4
|
21
Makefile
21
Makefile
|
@ -1,21 +0,0 @@
|
|||
# Makefile for source rpm: c-ares
|
||||
# $Id$
|
||||
NAME := c-ares
|
||||
SPECFILE = $(firstword $(wildcard *.spec))
|
||||
|
||||
define find-makefile-common
|
||||
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
|
||||
endef
|
||||
|
||||
MAKEFILE_COMMON := $(shell $(find-makefile-common))
|
||||
|
||||
ifeq ($(MAKEFILE_COMMON),)
|
||||
# attept a checkout
|
||||
define checkout-makefile-common
|
||||
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
|
||||
endef
|
||||
|
||||
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
|
||||
endif
|
||||
|
||||
include $(MAKEFILE_COMMON)
|
|
@ -1,87 +0,0 @@
|
|||
diff -up c-ares-1.7.0/configure.optflags c-ares-1.7.0/configure
|
||||
--- c-ares-1.7.0/configure.optflags 2009-11-30 16:10:42.000000000 -0500
|
||||
+++ c-ares-1.7.0/configure 2009-12-01 11:36:41.154374899 -0500
|
||||
@@ -13988,7 +13988,7 @@ $as_echo "$as_me: WARNING: compiler opti
|
||||
ac_var_stripped=""
|
||||
for word1 in $tmp_CFLAGS; do
|
||||
ac_var_strip_word="no"
|
||||
- for word2 in $flags_dbg_all; do
|
||||
+ for word2 in ""; do
|
||||
if test "$word1" = "$word2"; then
|
||||
ac_var_strip_word="yes"
|
||||
fi
|
||||
@@ -14004,7 +14004,7 @@ $as_echo "$as_me: WARNING: compiler opti
|
||||
ac_var_stripped=""
|
||||
for word1 in $tmp_CPPFLAGS; do
|
||||
ac_var_strip_word="no"
|
||||
- for word2 in $flags_dbg_all; do
|
||||
+ for word2 in ""; do
|
||||
if test "$word1" = "$word2"; then
|
||||
ac_var_strip_word="yes"
|
||||
fi
|
||||
@@ -14020,12 +14020,12 @@ $as_echo "$as_me: WARNING: compiler opti
|
||||
if test "$want_debug" = "yes"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler accepts debug enabling options" >&5
|
||||
$as_echo_n "checking if compiler accepts debug enabling options... " >&6; }
|
||||
- tmp_options="$flags_dbg_yes"
|
||||
+ tmp_options=""
|
||||
fi
|
||||
if test "$want_debug" = "no"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler accepts debug disabling options" >&5
|
||||
$as_echo_n "checking if compiler accepts debug disabling options... " >&6; }
|
||||
- tmp_options="$flags_dbg_off"
|
||||
+ tmp_options=""
|
||||
fi
|
||||
#
|
||||
CPPFLAGS="$tmp_CPPFLAGS"
|
||||
@@ -14181,7 +14181,7 @@ $as_echo_n "checking if compiler optimiz
|
||||
|
||||
ac_var_match_word="no"
|
||||
for word1 in $tmp_CFLAGS; do
|
||||
- for word2 in $flags_opt_all; do
|
||||
+ for word2 in ""; do
|
||||
if test "$word1" = "$word2"; then
|
||||
ac_var_match_word="yes"
|
||||
fi
|
||||
@@ -14199,7 +14199,7 @@ $as_echo_n "checking if compiler optimiz
|
||||
|
||||
ac_var_match_word="no"
|
||||
for word1 in $tmp_CPPFLAGS; do
|
||||
- for word2 in $flags_opt_all; do
|
||||
+ for word2 in ""; do
|
||||
if test "$word1" = "$word2"; then
|
||||
ac_var_match_word="yes"
|
||||
fi
|
||||
@@ -14230,7 +14230,7 @@ $as_echo "$honor_optimize_option" >&6; }
|
||||
ac_var_stripped=""
|
||||
for word1 in $tmp_CFLAGS; do
|
||||
ac_var_strip_word="no"
|
||||
- for word2 in $flags_opt_all; do
|
||||
+ for word2 in ""; do
|
||||
if test "$word1" = "$word2"; then
|
||||
ac_var_strip_word="yes"
|
||||
fi
|
||||
@@ -14246,7 +14246,7 @@ $as_echo "$honor_optimize_option" >&6; }
|
||||
ac_var_stripped=""
|
||||
for word1 in $tmp_CPPFLAGS; do
|
||||
ac_var_strip_word="no"
|
||||
- for word2 in $flags_opt_all; do
|
||||
+ for word2 in ""; do
|
||||
if test "$word1" = "$word2"; then
|
||||
ac_var_strip_word="yes"
|
||||
fi
|
||||
@@ -14261,12 +14261,12 @@ $as_echo "$honor_optimize_option" >&6; }
|
||||
if test "$want_optimize" = "yes"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler accepts optimizer enabling options" >&5
|
||||
$as_echo_n "checking if compiler accepts optimizer enabling options... " >&6; }
|
||||
- tmp_options="$flags_opt_yes"
|
||||
+ tmp_options=""
|
||||
fi
|
||||
if test "$want_optimize" = "no"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler accepts optimizer disabling options" >&5
|
||||
$as_echo_n "checking if compiler accepts optimizer disabling options... " >&6; }
|
||||
- tmp_options="$flags_opt_off"
|
||||
+ tmp_options=""
|
||||
fi
|
||||
CPPFLAGS="$tmp_CPPFLAGS"
|
||||
CFLAGS="$tmp_CFLAGS $tmp_options"
|
|
@ -0,0 +1,21 @@
|
|||
@PACKAGE_INIT@
|
||||
|
||||
set_and_check(c-ares_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/c-ares-config-version.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/c-ares-targets.cmake")
|
||||
|
||||
set(c-ares_LIBRARY c-ares::cares)
|
||||
|
||||
if(@CARES_SHARED@)
|
||||
add_library(c-ares::cares_shared INTERFACE IMPORTED)
|
||||
set_target_properties(c-ares::cares_shared PROPERTIES INTERFACE_LINK_LIBRARIES "c-ares::cares")
|
||||
set(c-ares_SHARED_LIBRARY c-ares::cares_shared)
|
||||
elseif(@CARES_STATIC@)
|
||||
add_library(c-ares::cares_static INTERFACE IMPORTED)
|
||||
set_target_properties(c-ares::cares_static PROPERTIES INTERFACE_LINK_LIBRARIES "c-ares::cares")
|
||||
endif()
|
||||
|
||||
if(@CARES_STATIC@)
|
||||
set(c-ares_STATIC_LIBRARY c-ares::cares_static)
|
||||
endif()
|
228
c-ares.spec
228
c-ares.spec
|
@ -1,15 +1,24 @@
|
|||
%global use_cmake 1
|
||||
|
||||
Summary: A library that performs asynchronous DNS operations
|
||||
Name: c-ares
|
||||
Version: 1.7.0
|
||||
Release: 2%{?dist}
|
||||
Version: 1.17.2
|
||||
Release: 3%{?dist}
|
||||
License: MIT
|
||||
Group: System Environment/Libraries
|
||||
URL: http://c-ares.haxx.se/
|
||||
Source0: http://c-ares.haxx.se/c-ares-%{version}.tar.gz
|
||||
Source0: http://c-ares.haxx.se/download/%{name}-%{version}.tar.gz
|
||||
# The license can be obtained at http://c-ares.haxx.se/license.html
|
||||
Source1: LICENSE
|
||||
Patch0: %{name}-1.7.0-optflags.patch
|
||||
Patch1: 0001-Allow-the-use-of-IPv6-nameservers.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
Patch0: 0001-Use-RPM-compiler-options.patch
|
||||
BuildRequires: gcc
|
||||
%if %{use_cmake}
|
||||
BuildRequires: cmake
|
||||
%else
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: libtool
|
||||
%endif
|
||||
BuildRequires: make
|
||||
|
||||
%description
|
||||
c-ares is a C library that performs DNS requests and name resolves
|
||||
|
@ -18,54 +27,225 @@ by Greg Hudson at MIT.
|
|||
|
||||
%package devel
|
||||
Summary: Development files for c-ares
|
||||
Group: Development/Libraries
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: pkgconfig
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
This package contains the header files and static libraries needed to
|
||||
This package contains the header files and libraries needed to
|
||||
compile applications or shared objects that use c-ares.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1 -b .optflags
|
||||
%patch1 -p1 -b .ipv6
|
||||
%autosetup -p1
|
||||
|
||||
cp %{SOURCE1} .
|
||||
f=CHANGES ; iconv -f iso-8859-1 -t utf-8 $f -o $f.utf8 ; mv $f.utf8 $f
|
||||
|
||||
%build
|
||||
# autoreconf -if
|
||||
# %%configure --enable-shared --disable-static \
|
||||
# --disable-dependency-tracking
|
||||
%if %{use_cmake}
|
||||
%{cmake} -DCMAKE_INSTALL_LIBDIR:PATH="%{_libdir}" -DCARES_BUILD_TOOLS:BOOL=OFF
|
||||
%cmake_build
|
||||
%else
|
||||
autoreconf -if
|
||||
%configure --enable-shared --disable-static \
|
||||
--disable-dependency-tracking
|
||||
%{__make} %{?_smp_mflags}
|
||||
%endif
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
make DESTDIR=$RPM_BUILD_ROOT install
|
||||
%if %{use_cmake}
|
||||
%cmake_install
|
||||
%else
|
||||
%make_install
|
||||
rm -f $RPM_BUILD_ROOT/%{_libdir}/libcares.la
|
||||
%endif
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%post -p /sbin/ldconfig
|
||||
%postun -p /sbin/ldconfig
|
||||
%ldconfig_scriptlets
|
||||
|
||||
%files
|
||||
%defattr(-, root, root)
|
||||
%doc README README.cares CHANGES NEWS LICENSE
|
||||
%license LICENSE
|
||||
%doc README.cares CHANGES NEWS
|
||||
%{_libdir}/*.so.*
|
||||
|
||||
%files devel
|
||||
%defattr(-, root, root, 0755)
|
||||
%{_includedir}/ares.h
|
||||
%{_includedir}/ares_build.h
|
||||
%{_includedir}/ares_dns.h
|
||||
%{_includedir}/ares_rules.h
|
||||
%{_includedir}/ares_version.h
|
||||
%{_libdir}/*.so
|
||||
%if %{use_cmake}
|
||||
%{_libdir}/cmake/c-ares/
|
||||
%endif
|
||||
%{_libdir}/pkgconfig/libcares.pc
|
||||
%{_mandir}/man3/ares_*
|
||||
|
||||
%changelog
|
||||
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.17.2-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.17.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Mon Aug 16 2021 Tom Callaway <spot@fedoraproject.org> - 1.17.2-1
|
||||
- update to 1.17.2
|
||||
- fixes multiple security issues including CVE-2021-3672
|
||||
|
||||
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.17.1-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.17.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Fri Nov 20 2020 Tom Callaway <spot@fedoraproject.org> - 1.17.1-1
|
||||
- update to 1.17.1
|
||||
|
||||
* Tue Nov 17 2020 Tom Callaway <spot@fedoraproject.org> - 1.17.0-1
|
||||
- update to 1.17.0
|
||||
|
||||
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.16.1-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Mon Jul 13 2020 Tom Stellard <tstellar@redhat.com> - 1.16.1-2
|
||||
- Use make macros
|
||||
- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
|
||||
|
||||
* Mon May 11 2020 Tom Callaway <spot@fedoraproject.org> - 1.16.1-1
|
||||
- update to 1.16.1
|
||||
|
||||
* Fri Mar 13 2020 Tom Callaway <spot@fedoraproject.org> - 1.16.0-1
|
||||
- update to 1.16.0
|
||||
|
||||
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.15.0-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.15.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Tue Mar 12 2019 Tom Callaway <spot@fedoraproject.org> - 1.15.0-3
|
||||
- use cmake to build so we get cmake helpers (bz1687844)
|
||||
|
||||
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.15.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Tue Nov 13 2018 Jakub Hrozek <jhrozek@redhat.com> - 1.16.0-1
|
||||
- Update to the latest upstream
|
||||
|
||||
* Mon Sep 3 2018 Jakub Hrozek <jhrozek@redhat.com> - 1.14.0-1
|
||||
- Update to the latest upstream
|
||||
- Resolves: rhbz#1624499 - RFE: New c-ares release 1.14.0 available
|
||||
|
||||
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Tue Jun 20 2017 Jakub Hrozek <jhrozek@redhat.com> - 1.13.0-1
|
||||
- update to 1.13.0
|
||||
|
||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Thu Sep 29 2016 Tom Callaway <spot@fedoraproject.org> - 1.12.0-1
|
||||
- update to 1.12.0
|
||||
|
||||
* Fri Feb 19 2016 Jakub Hrozek <jhrozek@redhat.com> - 1.11.0
|
||||
- New upstream version 1.11.0
|
||||
|
||||
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.10.0-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10.0-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Fri Aug 15 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Mon May 13 2013 Jakub Hrozek <jhrozek@redhat.com> - 1.10.1-1
|
||||
- New upstream release 1.10
|
||||
- Obsolete upstreamed patches
|
||||
- Amend the multilib patch, there's no need to patch configure since we
|
||||
are running autoreconf anyways
|
||||
- https://raw.github.com/bagder/c-ares/cares-1_10_0/RELEASE-NOTES
|
||||
|
||||
* Thu Apr 11 2013 Jakub Hrozek <jhrozek@redhat.com> - 1.9.1-6
|
||||
- Apply an upstream patch to override AC_CONFIG_MACRO_DIR only conditionally
|
||||
|
||||
* Thu Apr 11 2013 Jakub Hrozek <jhrozek@redhat.com> - 1.9.1-5
|
||||
- Apply a patch by Stephen Gallagher to patch autoconf, not configure to
|
||||
allow optflags to be passed in by build environment
|
||||
- Run autoreconf before configure
|
||||
- git rm obsolete patches
|
||||
- Apply upstream patch to stop overriding AC_CONFIG_MACRO_DIR
|
||||
|
||||
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.9.1-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||
|
||||
* Wed Aug 8 2012 Jakub Hrozek <jhrozek@redhat.com> - 1.9.1-3
|
||||
- Include URL to the license text
|
||||
|
||||
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.9.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||
|
||||
* Mon Jun 25 2012 Tom Callaway <spot@fedoraproject.org> - 1.9.1-1
|
||||
- update to 1.9.1
|
||||
|
||||
* Sat Apr 28 2012 Tom Callaway <spot@fedoraproject.org> - 1.8.0-1
|
||||
- update to 1.8.0
|
||||
- fix multilib patch (thanks to Paul Howarth)
|
||||
|
||||
* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.7.5-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||
|
||||
* Wed Aug 17 2011 Jakub Hrozek <jhrozek@redhat.com> - 1.7.5-1
|
||||
- New upstream release 1.7.5
|
||||
- Obsoletes patch #2
|
||||
- Rebase patch #1 (optflags) to match the 1.7.5 code
|
||||
- Fixed Source0 URL to point at the upstream tarball
|
||||
|
||||
* Mon Apr 11 2011 Jakub Hrozek <jhrozek@redhat.com> - 1.7.4-3
|
||||
- Apply upstream patch to fix rhbz#695424
|
||||
|
||||
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.7.4-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||
|
||||
* Fri Dec 10 2010 Tom "spot" Callaway <tcallawa@redhat.com> - 1.7.4-1
|
||||
- update to 1.7.4
|
||||
|
||||
* Wed Aug 25 2010 Jakub Hrozek <jhrozek@redhat.com> - 1.7.3-3
|
||||
- Actually apply the patches
|
||||
|
||||
* Wed Aug 25 2010 Jakub Hrozek <jhrozek@redhat.com> - 1.7.3-2
|
||||
- apply couple of patches from upstream
|
||||
|
||||
* Tue Jun 15 2010 Jakub Hrozek <jhrozek@redhat.com> - 1.7.3-1
|
||||
- Upgrade to new upstream release 1.7.3 (obsoletes search/domain patch)
|
||||
- Fix conflict of -devel packages on multilib architectures (#602880)
|
||||
|
||||
* Thu Jun 3 2010 Jakub Hrozek <jhrozek@redhat.com> - 1.7.1-2
|
||||
- Use last instance of search/domain, not the first one (#597286)
|
||||
|
||||
* Tue Mar 23 2010 Jakub Hrozek <jhrozek@redhat.com> - 1.7.1-1
|
||||
- update to 1.7.1 which contains the IPv6 nameserver patch
|
||||
|
||||
* Sun Mar 7 2010 Jakub Hrozek <jhrozek@redhat.com> - 1.7.0-3
|
||||
- Change IPv6 nameserver patch according to upstream changes
|
||||
(upstream revisions 1199,1201,1202)
|
||||
|
||||
* Wed Mar 3 2010 Jakub Hrozek <jhrozek@redhat.com> - 1.7.0-2
|
||||
- Add a patch to allow usage of IPv6 nameservers
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
#***************************************************************************
|
||||
# Project ___ __ _ _ __ ___ ___
|
||||
# / __|____ / _` | '__/ _ \/ __|
|
||||
# | (_|_____| (_| | | | __/\__ \
|
||||
# \___| \__,_|_| \___||___/
|
||||
#
|
||||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
exec_prefix=${prefix}/@CMAKE_INSTALL_BINDIR@
|
||||
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||
|
||||
Name: c-ares
|
||||
URL: https://c-ares.haxx.se/
|
||||
Description: asynchronous DNS lookup library
|
||||
Version: @CARES_VERSION@
|
||||
Requires:
|
||||
Requires.private:
|
||||
Cflags: -I${includedir} @CPPFLAG_CARES_STATICLIB@
|
||||
Libs: -L${libdir} -lcares
|
||||
Libs.private: @CARES_PRIVATE_LIBS@
|
Loading…
Reference in New Issue