mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-25 12:11:10 +00:00
Avoid __check_pf calls in getaddrinfo unless really needed
This commit is contained in:
parent
e12df166d3
commit
fa3fc0fe5f
@ -1,3 +1,10 @@
|
||||
2011-06-22 Ulrich Drepper <drepper@gmail.com>
|
||||
|
||||
[BZ #12907]
|
||||
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Avoid calling __check_pf
|
||||
until it is clear that the information is realy needed.
|
||||
Patch mostly by David Hanisch <david.hanisch@nsn.com>.
|
||||
|
||||
2011-06-22 Andreas Schwab <schwab@redhat.com>
|
||||
|
||||
* sysdeps/posix/getaddrinfo.c (gaih_inet): Fix last change.
|
||||
|
4
NEWS
4
NEWS
@ -1,4 +1,4 @@
|
||||
GNU C Library NEWS -- history of user-visible changes. 2011-6-21
|
||||
GNU C Library NEWS -- history of user-visible changes. 2011-6-22
|
||||
Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
See the end for copying conditions.
|
||||
|
||||
@ -9,7 +9,7 @@ Version 2.15
|
||||
|
||||
* The following bugs are resolved with this release:
|
||||
|
||||
12885
|
||||
12885, 12907
|
||||
|
||||
* New program pldd to list loaded object of a process
|
||||
Implemented by Ulrich Drepper.
|
||||
|
@ -2352,14 +2352,17 @@ getaddrinfo (const char *name, const char *service,
|
||||
size_t in6ailen = 0;
|
||||
bool seen_ipv4 = false;
|
||||
bool seen_ipv6 = false;
|
||||
/* We might need information about what interfaces are available.
|
||||
Also determine whether we have IPv4 or IPv6 interfaces or both. We
|
||||
cannot cache the results since new interfaces could be added at
|
||||
any time. */
|
||||
__check_pf (&seen_ipv4, &seen_ipv6, &in6ai, &in6ailen);
|
||||
bool check_pf_called = false;
|
||||
|
||||
if (hints->ai_flags & AI_ADDRCONFIG)
|
||||
{
|
||||
/* We might need information about what interfaces are available.
|
||||
Also determine whether we have IPv4 or IPv6 interfaces or both. We
|
||||
cannot cache the results since new interfaces could be added at
|
||||
any time. */
|
||||
__check_pf (&seen_ipv4, &seen_ipv6, &in6ai, &in6ailen);
|
||||
check_pf_called = true;
|
||||
|
||||
/* Now make a decision on what we return, if anything. */
|
||||
if (hints->ai_family == PF_UNSPEC && (seen_ipv4 || seen_ipv6))
|
||||
{
|
||||
@ -2441,6 +2444,10 @@ getaddrinfo (const char *name, const char *service,
|
||||
struct addrinfo *last = NULL;
|
||||
char *canonname = NULL;
|
||||
|
||||
/* Now we definitely need the interface information. */
|
||||
if (! check_pf_called)
|
||||
__check_pf (&seen_ipv4, &seen_ipv6, &in6ai, &in6ailen);
|
||||
|
||||
/* If we have information about deprecated and temporary addresses
|
||||
sort the array now. */
|
||||
if (in6ai != NULL)
|
||||
|
Loading…
Reference in New Issue
Block a user