mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Missing server address again leads to localhost being used
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2010-08-25 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
[BZ #10851]
|
||||||
|
* resolv/res_init.c (__res_vinit): When no server address at all
|
||||||
|
is given default to loopback.
|
||||||
|
|
||||||
2010-08-24 Roland McGrath <roland@redhat.com>
|
2010-08-24 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* configure.in: Remove config-name.h generation.
|
* configure.in: Remove config-name.h generation.
|
||||||
|
@ -176,13 +176,6 @@ __res_vinit(res_state statp, int preinit) {
|
|||||||
statp->id = res_randomid();
|
statp->id = res_randomid();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USELOOPBACK
|
|
||||||
statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1);
|
|
||||||
#else
|
|
||||||
statp->nsaddr.sin_addr.s_addr = INADDR_ANY;
|
|
||||||
#endif
|
|
||||||
statp->nsaddr.sin_family = AF_INET;
|
|
||||||
statp->nsaddr.sin_port = htons(NAMESERVER_PORT);
|
|
||||||
statp->nscount = 0;
|
statp->nscount = 0;
|
||||||
statp->ndots = 1;
|
statp->ndots = 1;
|
||||||
statp->pfcode = 0;
|
statp->pfcode = 0;
|
||||||
@ -321,24 +314,24 @@ __res_vinit(res_state statp, int preinit) {
|
|||||||
nserv++;
|
nserv++;
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
nservall++;
|
nservall++;
|
||||||
} else {
|
} else {
|
||||||
struct in6_addr a6;
|
struct in6_addr a6;
|
||||||
char *el;
|
char *el;
|
||||||
|
|
||||||
if ((el = strchr(cp, '\n')) != NULL)
|
if ((el = strchr(cp, '\n')) != NULL)
|
||||||
*el = '\0';
|
*el = '\0';
|
||||||
if ((el = strchr(cp, SCOPE_DELIMITER)) != NULL)
|
if ((el = strchr(cp, SCOPE_DELIMITER)) != NULL)
|
||||||
*el = '\0';
|
*el = '\0';
|
||||||
if ((*cp != '\0') &&
|
if ((*cp != '\0') &&
|
||||||
(inet_pton(AF_INET6, cp, &a6) > 0)) {
|
(inet_pton(AF_INET6, cp, &a6) > 0)) {
|
||||||
struct sockaddr_in6 *sa6;
|
struct sockaddr_in6 *sa6;
|
||||||
|
|
||||||
sa6 = malloc(sizeof(*sa6));
|
sa6 = malloc(sizeof(*sa6));
|
||||||
if (sa6 != NULL) {
|
if (sa6 != NULL) {
|
||||||
sa6->sin6_family = AF_INET6;
|
sa6->sin6_family = AF_INET6;
|
||||||
sa6->sin6_port = htons(NAMESERVER_PORT);
|
sa6->sin6_port = htons(NAMESERVER_PORT);
|
||||||
sa6->sin6_flowinfo = 0;
|
sa6->sin6_flowinfo = 0;
|
||||||
sa6->sin6_addr = a6;
|
sa6->sin6_addr = a6;
|
||||||
|
|
||||||
if (__builtin_expect (el == NULL, 1))
|
if (__builtin_expect (el == NULL, 1))
|
||||||
sa6->sin6_scope_id = 0;
|
sa6->sin6_scope_id = 0;
|
||||||
@ -365,9 +358,9 @@ __res_vinit(res_state statp, int preinit) {
|
|||||||
statp->_u._ext.nsaddrs[nservall] = sa6;
|
statp->_u._ext.nsaddrs[nservall] = sa6;
|
||||||
statp->_u._ext.nssocks[nservall] = -1;
|
statp->_u._ext.nssocks[nservall] = -1;
|
||||||
statp->_u._ext.nsmap[nservall] = MAXNS + 1;
|
statp->_u._ext.nsmap[nservall] = MAXNS + 1;
|
||||||
nservall++;
|
nservall++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
@ -433,6 +426,11 @@ __res_vinit(res_state statp, int preinit) {
|
|||||||
#endif
|
#endif
|
||||||
(void) fclose(fp);
|
(void) fclose(fp);
|
||||||
}
|
}
|
||||||
|
if (__builtin_expect(statp->nscount == 0, 0)) {
|
||||||
|
statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1);
|
||||||
|
statp->nsaddr.sin_family = AF_INET;
|
||||||
|
statp->nsaddr.sin_port = htons(NAMESERVER_PORT);
|
||||||
|
}
|
||||||
if (statp->defdname[0] == 0 &&
|
if (statp->defdname[0] == 0 &&
|
||||||
__gethostname(buf, sizeof(statp->defdname) - 1) == 0 &&
|
__gethostname(buf, sizeof(statp->defdname) - 1) == 0 &&
|
||||||
(cp = strchr(buf, '.')) != NULL)
|
(cp = strchr(buf, '.')) != NULL)
|
||||||
@ -538,12 +536,12 @@ res_setoptions(res_state statp, const char *options, const char *source) {
|
|||||||
} else if (!strncmp(cp, "no-check-names",
|
} else if (!strncmp(cp, "no-check-names",
|
||||||
sizeof("no-check-names") - 1)) {
|
sizeof("no-check-names") - 1)) {
|
||||||
statp->options |= RES_NOCHECKNAME;
|
statp->options |= RES_NOCHECKNAME;
|
||||||
} else if (!strncmp(cp, "edns0", sizeof("edns0") - 1)) {
|
} else if (!strncmp(cp, "edns0", sizeof("edns0") - 1)) {
|
||||||
statp->options |= RES_USE_EDNS0;
|
statp->options |= RES_USE_EDNS0;
|
||||||
} else if (!strncmp(cp, "single-request-reopen",
|
} else if (!strncmp(cp, "single-request-reopen",
|
||||||
sizeof("single-request-reopen") - 1)) {
|
sizeof("single-request-reopen") - 1)) {
|
||||||
statp->options |= RES_SNGLKUPREOP;
|
statp->options |= RES_SNGLKUPREOP;
|
||||||
} else if (!strncmp(cp, "single-request",
|
} else if (!strncmp(cp, "single-request",
|
||||||
sizeof("single-request") - 1)) {
|
sizeof("single-request") - 1)) {
|
||||||
statp->options |= RES_SNGLKUP;
|
statp->options |= RES_SNGLKUP;
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user