Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1
glibc
glibc-2.10-dns-fixpack.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File glibc-2.10-dns-fixpack.diff of Package glibc
2008-11-26 Ulrich Drepper <drepper@redhat.com> * sysdeps/posix/getaddrinfo.c (getaddrinfo): Only restrict search to IPv4 or IPv6 if an interface has been found. --- sysdeps/posix/getaddrinfo.c 30 Jul 2008 19:14:22 -0000 1.136 +++ sysdeps/posix/getaddrinfo.c 3 Dec 2008 07:04:10 -0000 1.139 @@ -2108,7 +2110,7 @@ getaddrinfo (const char *name, const cha { /* If we haven't seen both IPv4 and IPv6 interfaces we can narrow down the search. */ - if (! seen_ipv4 || ! seen_ipv6) + if ((! seen_ipv4 || ! seen_ipv6) && (seen_ipv4 || seen_ipv6)) { local_hints = *hints; local_hints.ai_family = seen_ipv4 ? PF_INET : PF_INET6; 2008-12-02 Ulrich Drepper <drepper@redhat.com> * sysdeps/posix/getaddrinfo.c (gaih_inet): In case we use gethostbyname4_r, we don't have a separate IPv6 status, so copy the no_data variable. --- sysdeps/posix/getaddrinfo.c 30 Jul 2008 19:14:22 -0000 1.136 +++ sysdeps/posix/getaddrinfo.c 3 Dec 2008 07:04:10 -0000 1.139 @@ -733,6 +733,8 @@ gaih_inet (const char *name, const struc tmpbuflen, 2 * tmpbuflen); } + no_inet6_data = no_data; + if (status == NSS_STATUS_SUCCESS) { if ((req->ai_flags & AI_CANONNAME) != 0 && canon == NULL) 2008-12-02 Ulrich Drepper <drepper@redhat.com> * resolv/res_init.c (__res_vinit): Fill in IPv4 name server information at the correct index. 2008-12-29 Ulrich Drepper <drepper@redhat.com> * resolv/res_init.c (__res_vinit): Count all servers in statp->nscount. --- resolv/res_init.c 7 Apr 2008 17:20:25 -0000 1.47 +++ resolv/res_init.c 8 Dec 2008 03:59:05 -0000 1.50 @@ -314,9 +314,9 @@ __res_vinit(res_state statp, int preinit cp++; if ((*cp != '\0') && (*cp != '\n') && __inet_aton(cp, &a)) { - statp->nsaddr_list[nserv].sin_addr = a; - statp->nsaddr_list[nserv].sin_family = AF_INET; - statp->nsaddr_list[nserv].sin_port = + statp->nsaddr_list[nservall].sin_addr = a; + statp->nsaddr_list[nservall].sin_family = AF_INET; + statp->nsaddr_list[nservall].sin_port = htons(NAMESERVER_PORT); nserv++; #ifdef _LIBC @@ -420,8 +420,8 @@ __res_vinit(res_state statp, int preinit continue; } } - if (nserv > 1) - statp->nscount = nserv; + if (nservall > 1) + statp->nscount = nservall; #ifdef _LIBC if (nservall - nserv > 0) { statp->_u._ext.nscount6 = nservall - nserv; 2008-12-02 Ulrich Drepper <drepper@redhat.com> * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname3_r): Recognize ESRCH return value. (_nss_dns_gethostbyname4_r): Likewise. --- resolv/nss_dns/dns-host.c 12 Nov 2008 07:52:20 -0000 1.54 +++ resolv/nss_dns/dns-host.c 3 Dec 2008 07:09:26 -0000 1.55 @@ -198,8 +198,14 @@ _nss_dns_gethostbyname3_r (const char *n 1024, &host_buffer.ptr, NULL, NULL, NULL); if (n < 0) { - status = (errno == ECONNREFUSED - ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND); + if (errno == ESRCH) + { + status = NSS_STATUS_TRYAGAIN; + h_errno = TRY_AGAIN; + } + else + status = (errno == ECONNREFUSED + ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND); *h_errnop = h_errno; if (h_errno == TRY_AGAIN) *errnop = EAGAIN; @@ -304,8 +310,14 @@ _nss_dns_gethostbyname4_r (const char *n &ans2p, &nans2p, &resplen2); if (n < 0) { - status = (errno == ECONNREFUSED - ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND); + if (errno == ESRCH) + { + status = NSS_STATUS_TRYAGAIN; + h_errno = TRY_AGAIN; + } + else + status = (errno == ECONNREFUSED + ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND); *herrnop = h_errno; if (h_errno == TRY_AGAIN) *errnop = EAGAIN; 2009-01-16 Petr Baudis <pasky@suse.cz> * resolv/res_libc (__res_maybe_init): Call __res_vinit() even if we currently have zero nscount. diff --git a/resolv/res_libc.c b/resolv/res_libc.c index 8af57f7..810fbc8 100644 --- resolv/res_libc.c +++ resolv/res_libc.c @@ -96,10 +96,9 @@ __res_maybe_init (res_state resp, int preinit) { if (resp->options & RES_INIT) { if (__res_initstamp != resp->_u._ext.initstamp) { - if (resp->nscount > 0) { + if (resp->nscount > 0) __res_iclose (resp, true); - return __res_vinit (resp, 1); - } + return __res_vinit (resp, 1); } return 0; } else if (preinit) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor