Browse Source

Revert "deps: sync with upstream c-ares/c-ares@4ef6817"

This reverts commit 35c3832994.

See [0] and [1] for background.  Let's hold off on upgrading c-ares
until upstream makes an official release.

[0] https://github.com/nodejs/node/issues/5185
[1] https://github.com/nodejs/node/pull/5199

PR-URL: https://github.com/nodejs/node/pull/5199
Reviewed-By: Fedor Indutny <fedor@indutny.com>
v5.x
Ben Noordhuis 9 years ago
parent
commit
127dd6275a
  1. 8
      deps/cares/include/ares.h
  2. 54
      deps/cares/src/ares_init.c
  3. 3
      deps/cares/src/ares_private.h
  4. 22
      deps/cares/src/ares_process.c

8
deps/cares/include/ares.h

@ -294,10 +294,6 @@ typedef int (*ares_sock_create_callback)(ares_socket_t socket_fd,
int type, int type,
void *data); void *data);
typedef int (*ares_sock_config_callback)(ares_socket_t socket_fd,
int type,
void *data);
CARES_EXTERN int ares_library_init(int flags); CARES_EXTERN int ares_library_init(int flags);
CARES_EXTERN int ares_library_init_mem(int flags, CARES_EXTERN int ares_library_init_mem(int flags,
@ -348,10 +344,6 @@ CARES_EXTERN void ares_set_socket_callback(ares_channel channel,
ares_sock_create_callback callback, ares_sock_create_callback callback,
void *user_data); void *user_data);
CARES_EXTERN void ares_set_socket_configure_callback(ares_channel channel,
ares_sock_config_callback callback,
void *user_data);
CARES_EXTERN int ares_set_sortlist(ares_channel channel, CARES_EXTERN int ares_set_sortlist(ares_channel channel,
const char *sortstr); const char *sortstr);

54
deps/cares/src/ares_init.c

@ -90,8 +90,7 @@ static void natural_mask(struct apattern *pat);
!defined(ANDROID) && !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV) !defined(ANDROID) && !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV)
static int config_domain(ares_channel channel, char *str); static int config_domain(ares_channel channel, char *str);
static int config_lookup(ares_channel channel, const char *str, static int config_lookup(ares_channel channel, const char *str,
const char *bindch, const char *altbindch, const char *bindch, const char *filech);
const char *filech);
static char *try_config(char *s, const char *opt, char scc); static char *try_config(char *s, const char *opt, char scc);
#endif #endif
@ -165,8 +164,6 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
channel->sock_state_cb_data = NULL; channel->sock_state_cb_data = NULL;
channel->sock_create_cb = NULL; channel->sock_create_cb = NULL;
channel->sock_create_cb_data = NULL; channel->sock_create_cb_data = NULL;
channel->sock_config_cb = NULL;
channel->sock_config_cb_data = NULL;
channel->last_server = 0; channel->last_server = 0;
channel->last_timeout_processed = (time_t)now.tv_sec; channel->last_timeout_processed = (time_t)now.tv_sec;
@ -294,8 +291,6 @@ int ares_dup(ares_channel *dest, ares_channel src)
/* Now clone the options that ares_save_options() doesn't support. */ /* Now clone the options that ares_save_options() doesn't support. */
(*dest)->sock_create_cb = src->sock_create_cb; (*dest)->sock_create_cb = src->sock_create_cb;
(*dest)->sock_create_cb_data = src->sock_create_cb_data; (*dest)->sock_create_cb_data = src->sock_create_cb_data;
(*dest)->sock_config_cb = src->sock_config_cb;
(*dest)->sock_config_cb_data = src->sock_config_cb_data;
strncpy((*dest)->local_dev_name, src->local_dev_name, strncpy((*dest)->local_dev_name, src->local_dev_name,
sizeof(src->local_dev_name)); sizeof(src->local_dev_name));
@ -1030,6 +1025,11 @@ static int get_DNS_AdaptersAddresses(char **outptr)
} }
else if (namesrvr.sa->sa_family == AF_INET6) else if (namesrvr.sa->sa_family == AF_INET6)
{ {
/* Windows apparently always reports some IPv6 DNS servers that
* prefixed with fec0:0:0:ffff. These ususally do not point to
* working DNS servers, so we ignore them. */
if (strncmp(txtaddr, "fec0:0:0:ffff:", 14) == 0)
continue;
if (memcmp(&namesrvr.sa6->sin6_addr, &ares_in6addr_any, if (memcmp(&namesrvr.sa6->sin6_addr, &ares_in6addr_any,
sizeof(namesrvr.sa6->sin6_addr)) == 0) sizeof(namesrvr.sa6->sin6_addr)) == 0)
continue; continue;
@ -1269,7 +1269,7 @@ static int init_by_resolv_conf(ares_channel channel)
if ((p = try_config(line, "domain", ';')) && update_domains) if ((p = try_config(line, "domain", ';')) && update_domains)
status = config_domain(channel, p); status = config_domain(channel, p);
else if ((p = try_config(line, "lookup", ';')) && !channel->lookups) else if ((p = try_config(line, "lookup", ';')) && !channel->lookups)
status = config_lookup(channel, p, "bind", NULL, "file"); status = config_lookup(channel, p, "bind", "file");
else if ((p = try_config(line, "search", ';')) && update_domains) else if ((p = try_config(line, "search", ';')) && update_domains)
status = set_search(channel, p); status = set_search(channel, p);
else if ((p = try_config(line, "nameserver", ';')) && else if ((p = try_config(line, "nameserver", ';')) &&
@ -1310,7 +1310,8 @@ static int init_by_resolv_conf(ares_channel channel)
ARES_SUCCESS) ARES_SUCCESS)
{ {
if ((p = try_config(line, "hosts:", '\0')) && !channel->lookups) if ((p = try_config(line, "hosts:", '\0')) && !channel->lookups)
(void)config_lookup(channel, p, "dns", "resolve", "files"); /* ignore errors */
(void)config_lookup(channel, p, "dns", "files");
} }
fclose(fp); fclose(fp);
} }
@ -1319,16 +1320,15 @@ static int init_by_resolv_conf(ares_channel channel)
switch(error) { switch(error) {
case ENOENT: case ENOENT:
case ESRCH: case ESRCH:
status = ARES_EOF;
break; break;
default: default:
DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
error, strerror(error))); error, strerror(error)));
DEBUGF(fprintf(stderr, "Error opening file: %s\n", DEBUGF(fprintf(stderr, "Error opening file: %s\n",
"/etc/nsswitch.conf")); "/etc/nsswitch.conf"));
status = ARES_EFILE;
} }
/* ignore error, maybe we will get luck in next if clause */
status = ARES_EOF;
} }
} }
@ -1341,7 +1341,7 @@ static int init_by_resolv_conf(ares_channel channel)
{ {
if ((p = try_config(line, "order", '\0')) && !channel->lookups) if ((p = try_config(line, "order", '\0')) && !channel->lookups)
/* ignore errors */ /* ignore errors */
(void)config_lookup(channel, p, "bind", NULL, "hosts"); (void)config_lookup(channel, p, "bind", "hosts");
} }
fclose(fp); fclose(fp);
} }
@ -1350,16 +1350,15 @@ static int init_by_resolv_conf(ares_channel channel)
switch(error) { switch(error) {
case ENOENT: case ENOENT:
case ESRCH: case ESRCH:
status = ARES_EOF;
break; break;
default: default:
DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
error, strerror(error))); error, strerror(error)));
DEBUGF(fprintf(stderr, "Error opening file: %s\n", DEBUGF(fprintf(stderr, "Error opening file: %s\n",
"/etc/host.conf")); "/etc/host.conf"));
status = ARES_EFILE;
} }
/* ignore error, maybe we will get luck in next if clause */
status = ARES_EOF;
} }
} }
@ -1372,7 +1371,7 @@ static int init_by_resolv_conf(ares_channel channel)
{ {
if ((p = try_config(line, "hosts=", '\0')) && !channel->lookups) if ((p = try_config(line, "hosts=", '\0')) && !channel->lookups)
/* ignore errors */ /* ignore errors */
(void)config_lookup(channel, p, "bind", NULL, "local"); (void)config_lookup(channel, p, "bind", "local");
} }
fclose(fp); fclose(fp);
} }
@ -1381,15 +1380,14 @@ static int init_by_resolv_conf(ares_channel channel)
switch(error) { switch(error) {
case ENOENT: case ENOENT:
case ESRCH: case ESRCH:
status = ARES_EOF;
break; break;
default: default:
DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
error, strerror(error))); error, strerror(error)));
DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/svc.conf")); DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/svc.conf"));
status = ARES_EFILE;
} }
/* ignore error, default value will be chosen for `channel->lookups` */
status = ARES_EOF;
} }
} }
@ -1593,15 +1591,11 @@ static int config_domain(ares_channel channel, char *str)
#endif #endif
static int config_lookup(ares_channel channel, const char *str, static int config_lookup(ares_channel channel, const char *str,
const char *bindch, const char *altbindch, const char *bindch, const char *filech)
const char *filech)
{ {
char lookups[3], *l; char lookups[3], *l;
const char *vqualifier p; const char *vqualifier p;
if (altbindch == NULL)
altbindch = bindch;
/* Set the lookup order. Only the first letter of each work /* Set the lookup order. Only the first letter of each work
* is relevant, and it has to be "b" for DNS or "f" for the * is relevant, and it has to be "b" for DNS or "f" for the
* host file. Ignore everything else. * host file. Ignore everything else.
@ -1610,8 +1604,8 @@ static int config_lookup(ares_channel channel, const char *str,
p = str; p = str;
while (*p) while (*p)
{ {
if ((*p == *bindch || *p == *altbindch || *p == *filech) && l < lookups + 2) { if ((*p == *bindch || *p == *filech) && l < lookups + 2) {
if (*p == *bindch || *p == *altbindch) *l++ = 'b'; if (*p == *bindch) *l++ = 'b';
else *l++ = 'f'; else *l++ = 'f';
} }
while (*p && !ISSPACE(*p) && (*p != ',')) while (*p && !ISSPACE(*p) && (*p != ','))
@ -2096,14 +2090,6 @@ void ares_set_socket_callback(ares_channel channel,
channel->sock_create_cb_data = data; channel->sock_create_cb_data = data;
} }
void ares_set_socket_configure_callback(ares_channel channel,
ares_sock_config_callback cb,
void *data)
{
channel->sock_config_cb = cb;
channel->sock_config_cb_data = data;
}
int ares_set_sortlist(ares_channel channel, const char *sortstr) int ares_set_sortlist(ares_channel channel, const char *sortstr)
{ {
int nsort = 0; int nsort = 0;

3
deps/cares/src/ares_private.h

@ -311,9 +311,6 @@ struct ares_channeldata {
ares_sock_create_callback sock_create_cb; ares_sock_create_callback sock_create_cb;
void *sock_create_cb_data; void *sock_create_cb_data;
ares_sock_config_callback sock_config_cb;
void *sock_config_cb_data;
}; };
/* Memory management functions */ /* Memory management functions */

22
deps/cares/src/ares_process.c

@ -1031,17 +1031,6 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server)
} }
#endif #endif
if (channel->sock_config_cb)
{
int err = channel->sock_config_cb(s, SOCK_STREAM,
channel->sock_config_cb_data);
if (err < 0)
{
sclose(s);
return err;
}
}
/* Connect to the server. */ /* Connect to the server. */
if (connect(s, sa, salen) == -1) if (connect(s, sa, salen) == -1)
{ {
@ -1126,17 +1115,6 @@ static int open_udp_socket(ares_channel channel, struct server_state *server)
return -1; return -1;
} }
if (channel->sock_config_cb)
{
int err = channel->sock_config_cb(s, SOCK_DGRAM,
channel->sock_config_cb_data);
if (err < 0)
{
sclose(s);
return err;
}
}
/* Connect to the server. */ /* Connect to the server. */
if (connect(s, sa, salen) == -1) if (connect(s, sa, salen) == -1)
{ {

Loading…
Cancel
Save