Restore _res correctly

getaddrinfo works around the resolver functionality to avoid automatic
IPv6 lookups.  The restoring didn't allow for the resolver to set
additional bits in _res.
This commit is contained in:
Ulrich Drepper 2011-05-29 23:49:49 -04:00
parent 553149f603
commit 7ae22829af
3 changed files with 14 additions and 9 deletions

View File

@ -1,5 +1,10 @@
2011-05-29 Ulrich Drepper <drepper@gmail.com>
[BZ #12350]
* sysdeps/posix/getaddrinfo.c (gethosts): Restore only RES_USE_IENT6
bit from old_res_options.
(gaih_inet): Likewise.
[BZ #11099]
* shadow/sgetspent_r.c (LINE_PARSER): Interpret nymeric field values
as signed.

14
NEWS
View File

@ -12,13 +12,13 @@ Version 2.14
386, 6420, 7101, 9730, 9732, 9809, 10138, 10149, 10157, 11099, 11257,
11258, 11487, 11532, 11558, 11578, 11634, 11653, 11668, 11697, 11724,
11781, 11799, 11820, 11837, 11857, 11869, 11892, 11895, 11901, 11945,
11947, 11952, 11987, 12052, 12083, 12158, 12178, 12200, 12346, 12393,
12420, 12432, 12445, 12449, 12453, 12454, 12460, 12469, 12489, 12509,
12510, 12511, 12518, 12527, 12541, 12545, 12551, 12582, 12583, 12587,
12597, 12601, 12611, 12625, 12626, 12631, 12650, 12653, 12655, 12660,
12671, 12681, 12685, 12711, 12713, 12714, 12717, 12723, 12724, 12734,
12738, 12746, 12766, 12775, 12777, 12782, 12788, 12792, 12795, 12811,
12813, 12814
11947, 11952, 11987, 12052, 12083, 12158, 12178, 12200, 12346, 12350,
12393, 12420, 12432, 12445, 12449, 12453, 12454, 12460, 12469, 12489,
12509, 12510, 12511, 12518, 12527, 12541, 12545, 12551, 12582, 12583,
12587, 12597, 12601, 12611, 12625, 12626, 12631, 12650, 12653, 12655,
12660, 12671, 12681, 12685, 12711, 12713, 12714, 12717, 12723, 12724,
12734, 12738, 12746, 12766, 12775, 12777, 12782, 12788, 12792, 12795,
12811, 12813, 12814
* The RPC implementation in libc is obsoleted. Old programs keep working
but new programs cannot be linked with the routines in libc anymore.

View File

@ -207,7 +207,7 @@ gaih_inet_serv (const char *servicename, const struct gaih_typeproto *tp,
if (herrno == NETDB_INTERNAL) \
{ \
__set_h_errno (herrno); \
_res.options = old_res_options; \
_res.options |= old_res_options & RES_USE_INET6; \
return -EAI_SYSTEM; \
} \
if (herrno == TRY_AGAIN) \
@ -1015,7 +1015,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
nip = nip->next;
}
_res.options = old_res_options;
_res.options |= old_res_options & RES_USE_INET6;
if (no_data != 0 && no_inet6_data != 0)
{