diff options
author | Florian Weimer <fweimer@redhat.com> | 2023-08-11 10:10:16 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2023-08-11 10:10:16 +0200 |
commit | 039ff51ac7e02db1cfc0c23e38ac7bfbb00221d1 (patch) | |
tree | 9b61ff729e18e085ea908cd6508a368ce9dcdabc /sysdeps/unix | |
parent | 881546979d0219c18337e1b4f4d00cfacab13c40 (diff) | |
download | glibc-039ff51ac7e02db1cfc0c23e38ac7bfbb00221d1.tar.gz glibc-039ff51ac7e02db1cfc0c23e38ac7bfbb00221d1.tar.xz glibc-039ff51ac7e02db1cfc0c23e38ac7bfbb00221d1.zip |
nscd: Do not rebuild getaddrinfo (bug 30709)
The nscd daemon caches hosts data from NSS modules verbatim, without filtering protocol families or sorting them (otherwise separate caches would be needed for certain ai_flags combinations). The cache implementation is complete separate from the getaddrinfo code. This means that rebuilding getaddrinfo is not needed. The only function actually used is __bump_nl_timestamp from check_pf.c, and this change moves it into nscd/connections.c. Tested on x86_64-linux-gnu with -fexceptions, built with build-many-glibcs.py. I also backported this patch into a distribution that still supports nscd and verified manually that caching still works. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Diffstat (limited to 'sysdeps/unix')
-rw-r--r-- | sysdeps/unix/sysv/linux/check_pf.c | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c index 2b0b8b6368..3aa6a00348 100644 --- a/sysdeps/unix/sysv/linux/check_pf.c +++ b/sysdeps/unix/sysv/linux/check_pf.c @@ -66,25 +66,10 @@ static struct cached_data *cache; __libc_lock_define_initialized (static, lock); -#if IS_IN (nscd) -static uint32_t nl_timestamp; - -uint32_t -__bump_nl_timestamp (void) -{ - if (atomic_fetch_add_relaxed (&nl_timestamp, 1) + 1 == 0) - atomic_fetch_add_relaxed (&nl_timestamp, 1); - - return nl_timestamp; -} -#endif - static inline uint32_t get_nl_timestamp (void) { -#if IS_IN (nscd) - return nl_timestamp; -#elif defined USE_NSCD +#if defined USE_NSCD return __nscd_get_nl_timestamp (); #else return 0; |