* nscd/nscd-client.h (libc_locked_map_ptr): Add new first
parameter, used as class for definition.
* nscd/nscd_getpw_r.c: Adjust for libc_locked_map_ptr change.
(pw_map_free): Ensure no crash after memory is freed.
* nscd/nscd_getgr.c: Likewise. Make map externally visible.
* nscd/nscd_gethst.c: Likewise.
* nscd/nscd_getai.c: Use map from nscd_gethost.c.
* nscd/nscd_initgroups.c: Use map from nscd_getgr.c.
2004-10-15 Ulrich Drepper <drepper@redhat.com>
* nscd/nscd.h (_PATH_NSCD_PASSWD_DB): Move to /var/db.
(_PATH_NSCD_GROUP_DB): Likewise.
(_PATH_NSCD_HOSTS_DB): Likewise.
(_PATH_NSCD_XYZ_DB_TMP): New #define, point to /var/run.
* nscd/connections.c (nscd_init): Non-persistent database files
are created with the _PATH_NSCD_XYZ_DB_TMP path.
* nscd/nscd.init: Create /var/db/nscd if necessary.
* nscd/Makefile: When using compilers without -fpie support, also
link with -lselinux if necessary.
Patch by Arkadiusz Miskiewicz <arekm@pld-linux.org>.
2004-10-05 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sysconf.c (__sysconf): Return 200112L
for _SC_CPUTIME or _SC_THREAD_CPUTIME.
* nscd/Makefile (nscd-cflags): Set to -DIS_IN_nscd=1, plus
-fpie if building PIE.
(CFLAGS-*.c): Use it.
* nscd/Makefile (relro-LDFLAGS): Add -Wl,-z,now if have-z-relro.
($(objpfx)nscd): Add $(relro-LDFLAGS).
* sysdeps/unix/sysv/linux/i386/sysconf.c: Include hp-timing.h.
(__sysconf): Return -1 for _SC_CPUTIME or _SC_THREAD_CPUTIME if
!HP_TIMING_AVAIL.
2004-10-05 Ulrich Drepper <drepper@redhat.com>
* nscd/Makefile (distribute): Remove TODO.
* nscd/TODO: Removed.
* nscd/gai.c: Define __no_netlink_support if NEED_NETLINK is
defined and __ASSUME_NETLINK_SUPPORT is zero.
* sysdeps/unix/sysv/linux/Makefile (CFLAGS-gai.c): Add
-DNEED_NETLINK.
2004-10-04 Ulrich Drepper <drepper@redhat.com>
* malloc/mtrace.pl: Avoid calling location unless it is needed for
output. Patch by Edward Bishop <binutils@gmail.com>.
* nscd/Makefile (CFLAGS-gai.c): Add -fpie.
* nscd/connections.c (start_threads): Use sysconf in case
_POSIX_CLOCK_SELECTION or _POSIX_MONOTONIC_CLOCK is not greater zero.
* nscd/nscd.c: Remove getaddrinfo stub definition.
Dynamically create new threads if necessary.
* nscd/connections.c (fd_ready): If no thread available for processing
the request, create a new one unless the limit is reached.
(start_threads): Check errors from pthread_create.
* nscd/nscd.h: Declare max_nthreads.
* nscd/nscd_conf.c: Parse max-nthreads entry.
* nscd/nscd.conf: Add max-threads entry.
* nscd/nscd_stat.c: Print current and maximum number of threads.
Implement paranoia mode.
* nscd/connections.c (nscd_init): Mark database and socket descriptors
as close on exec.
(restart): New function.
(restart_p): New function.
(nscd_run): Add missing descrement of nready in case readylist is
empty.
(main_loop_poll): Call restart_p and restart.
(main_loop_epoll): Likewise.
(begin_drop_privileges): Save original UID and GID.
* nscd/nscd.c: Define new variables paranoia, restart_time,
restart_interval, oldcwd, old_gid, old_uid.
(main): Disable paranoia mode if we are not forking.
(check_pid): When re-execing, the PID file contains the same PID as
the current process. Do not fail in this case.
* nscd/nscd.conf: Add paranoia and restart-interval entries.
* nscd/nscd.h: Define RESTART_INTERVAL. Declare new variables.
* nscd/nscd_conf.c: Parse paranoia and restart-internal configurations.
* nscd/nscd_stat.c: Print paranoia and restart-internal values.
* nscd/connections.c: Rewrite handling of incoming connections. All
are handled by one thread which then hands of the descriptors for the
real work to the worker threads.
* nscd/Makefile: Link nscd with librt.
* nscd/selinux.c: Pretty printing.
* nscd/dbg_log.c (dbg_log): Don't add unnecessary newline to
output. Let syslog do the formatting if debug_level == 0.
* nscd/nscd.c (termination_handler): Reset timestamp so that
client immediately stop using the database.
(__nscd_drop_map_ref): Change second parameter to be a reference to
* nscd/nscd.h: Add declaration of addinitgroups and
2004-09-30 Ulrich Drepper <drepper@redhat.com>
* nscd/nscd-client.h (__nscd_get_map_ref): Drop volatile from last
parameter.
(__nscd_drop_map_ref): Change second parameter to be a referenc to
a variable. Update variable when cycle count changed.
* nscd/nscd_helper.c (__nscd_get_map_ref): Remove volatile here, too.
* nscd/nscd_getai.c: Correctly use __nscd_drop_map_ref. Reinitialize
all variables and avoid memory leak in case of retries.
* nscd/nscd_getgr_r.c: Likewise.
* nscd/nscd_gethst_r.c: Likewise.
* nscd/nscd_getpw_r.c: Likewise.
* nscd/nscd_initgroups.c: Likewise.
* nscd/nscd.h: Add declaretion of addinitgroups and
readdinitgroups.
* nscd/aicache.c: Prefer using gethostbyname3_r NSS callback to also
get ttl and canonical name. Use these two values.
* resolv/Versions: Export _nss_dns_gethostbyname3_r from libnss_dns.
* resolv/nss_dns/dns-host.c (getanswer_r): Take two new parameters.
If nonnull fill with TTL and pointer to canonical name respectively.
(_nss_dns_gethostbyaddr_r): Pass NULL in new parameters of getanswer_r.
(_nss_dns_gethostbyname2_r): Just wrapper around
_nss_dns_gethostbyname3_r.
(_nss_dns_gethostbyname3_r): Renamed from _nss_dns_gethostbyname2_r.
Take two new parameters which as passed to getanswer_r.
2004-09-10 Ulrich Drepper <drepper@redhat.com>
* nscd/nscd_stat.c: Improve output by also printing .shared and
.persistent.
* nscd/connections.c: Allow cache sharing to be really disabled.
* nscd/connections.c: Implement r/o sharing of nscd's cache with client
processes via shared memory.
* nscd/nscd-client.h: Likewise.
* nscd/nscd.h: Likewise.
* nscd/nscd_conf.c: Likewise.
* nscd/nscd_getgr_r.c: Likewise.
* nscd/nscd_getpw_r.c: Likewise.
* nscd/nscd_gethst_r.c: Likewise.
* nscd/nscd.conf: Add new config parameters.
* nscd/Makefile (aux): Add nscd_helper.
* nscd/nscd_helper.c: New file.
* nscd/mem.c (gc): Indicate beginning and end of the gc cycle.
* nscd/hstcache.c: Simplify a lot. We cache only the request itself,
no derived information.
* connections.c (nscd_init): Fix bug in testing size of the persistent.
* nis/Makefile (aux): Add nis_hash.
* nis/nis_hash.c: New file. Split out from nis_util.c.
* nis/nis_util.c: Move __nis_hash code in separate file.
* csu/tst-atomic.c: Improve atomic_increment_val test which would
not have found a ppc bug.
2004-08-26 Ulrich Drepper <drepper@redhat.com>
* nscd/cache.c: Major rewrite. The data is now optionally kept in
a mmaped memory region which is automatically mirrored on disk.
This implements persistent data storage. The Memory handled
needed to be completely revamped, it now uses a garbage collection
mechanism instead of malloc.
* nscd/connections.c: Likewise.
* nscd/nscd.c: Likewise.
* nscd/nscd.h: Likewise.
* nscd/nscd_conf.c: Likewise.
* nscd/nscd_stat.c: Likewise.
* nscd/grpcache.c: Likewise.
* nscd/hstcache.c:: Likewise.
* nscd/pwdcache.c:: Likewise.
* nscd/Makefile: Add rules to build mem.c.
* nscd/mem.c: New file.
* nscd/nscd.conf: Describe new configuration options.
2004-08-25 Ulrich Drepper <drepper@redhat.com>
* nscd/connections.c: Make socket nonblocking so that threads
don't get stuck on accept. Fix locking.
* nscd/grpcache.c (cache_addgr): Use cope of original key in hash
entry with alternative key.
* nscd/pwdcache.c (cache_addpw): Likewise.
2004-07-27 Ulrich Drepper <drepper@redhat.com>
* nscd/grpcache.c (cache_addgr): If necessary, add entry also
under the name the user provided.
* nscd/pwdcache.c (cache_addpw): Likewise.
2004-07-05 Jakub Jelinek <jakub@redhat.com>
* sysdeps/powerpc/novmx-longjmp.c (__libc_longjmp,
__libc_siglongjmp): Remove symbol_version.
* sysdeps/powerpc/longjmp.c (__libc_longjmp, __libc_siglongjmp):
Export @@GLIBC_PRIVATE, not @@GLIBC_2.3.4.
* sysdeps/powerpc/sigjmp.c (__sigjmp_save): Use strong_alias
unconditionally.
* sysdeps/powerpc/novmx-sigjmp.c (__sigjmp_save): Remove.
* sysdeps/powerpc/powerpc32/__longjmp.S (__longjmp): Use
strong_alias instead of default_symbol_version, remove
symbol_version.
* sysdeps/powerpc/powerpc64/__longjmp.S (__longjmp): Likewise.
* sysdeps/powerpc/powerpc32/bsd-setjmp.S (__novmx__setjmp): Change
into strong_alias to __novmxsetjmp.
(__vmx__setjmp): Similarly with __vmxsetjmp.
(__setjmp): Make it strong_alias to __vmx__setjmp, remove
default_symbol_version and symbol_version.
* sysdeps/powerpc/powerpc64/bsd-setjmp.S (__novmx__setjmp): Change
into strong_alias to __novmxsetjmp.
(__vmx__setjmp): Similarly with __vmxsetjmp.
(__setjmp): Make it strong_alias to __vmx__setjmp, remove
default_symbol_version and symbol_version.
* nscd/nscd_getgr_r.c: Include stdio-common/_itoa.h.
2004-06-04 Ulrich Drepper <drepper@redhat.com>
* nscd/nscd_gethst_r.c (nscd_gethst_r): Use __nss_not_use_nscd_hosts
in all places, not __nss_not_use_nscd_group.
Reported by Philippe Gregoire.
2004-02-26 Ulrich Drepper <drepper@redhat.com>
* nss/getXXbyYY_r.c: Pass result also to the nscd_* function. Don't
set *result here.
* nscd/nscd_proto.h: Add new argument for pointer to result pointer
to all nscd_* functions.
* nscd/nscd_getgr_r.c (nscd_getgr_r): Add new parameter. Store result
pointer in the address provided by the new parameter if successful.
Otherwise store NULL. Return zero if no entry found.
(__nscd_getgrnam_r, __nscd_getgrgid_r): Add new parameter and pass
it on.
* nscd/nscd_gethst_r.c (nscd_gethst_r): Add new parameter. Store
result pointer in the address provided by the new parameter if
successful. Otherwise store NULL. Return zero if no entry found.
(__nscd_gethostbyname_r, __nscd_gethostbyname2_r,
__nscd_gethostbyaddr_r): Add new parameter and pass it on.
* nscd/nscd_getpw_r.c (nscd_getpw_r): Add new parameter. Store result
pointer in the address provided by the new parameter if successful.
Otherwise store NULL. Return zero if no entry found.
(__nscd_getpwnam_r, __nscd_getpwuid_r): Add new parameter and pass
it on.
Update.
* nscd/nscd_conf.c (nscd_parse_file): Little optimization.
2004-02-14 Thorsten Kukuk <kukuk@suse.de>
* nscd/dbg_log.c (set_logfile): Only save name of logfile,
don't open it.
(init_logfile): New function, open logfile if requested.
* nscd/dbg_log.h: Adjust protoype for set_logfile, add init_logfile.
* nscd/nscd.c (main): Call init_logfile after forking in background.
* nscd/nscd_conf.c (nscd_parse_file): Adjust for new set_logfile.
2004-02-16 Ulrich Drepper <drepper@redhat.com>
ld.so.preload is not present [BZ #18].
* inet/rcmd.c: Provide better error message in case of unknown
host. Remove USE_IN_LIBIO.
* nscd/nscd.init: Updated version, more conforming with current
init file standards.
* nscd/nscd-client.h (_PATH_NSCDPID): Move the file into
/var/run/nscd directory.
(_PATH_NSCDSOCKET): Likewise.
* test-skeleton.c (timeout_handler): Fix error message.
* nscd/connections.c (client_queued): New variable.
(nscd_run): Revamp the loop. Don't call poll except for cleanup
threads. Keep track of the number of delays caused because of busy
worker threads.
* nscd/nscd.h: Declare client_queued.
* nscd/nscd_stat.c: Transmit and print client_queued information.
* nscd/cache.c (cache_search): Keep track of how many chain links
we searched and update table statistics.
(cache_add): Keep track of how many values are in the table.
(prune_cache): Likewise. Keep track of locking success.
Print messages about removed entries in separate pass.
* nscd/connections.c (handle_request): Don't print debug message here.
The caller will do it. Keep track of locking success.
(nscd_run): Print debug message. Also print PID of the client process.
* nscd/nscd.c (start_time): New variable.
(main): Remember start time.
* nscd/nscd.h: Declare start_time.
(struct database): Add more members for new statistics.
* nscd/nscd_stat.c: Add support for sending, receiving, and printing
of new statistics.
2003-04-22 Ulrich Drepper <drepper@redhat.com>
* nscd/nscd-client.h: Add declaration for __nscd_open_socket.
* nscd/nscd_gethst_r.c (__nscd_open_socket): Renamed from
open_socket. Not static anymore.
(nscd_gethst_r): Use __nscd_open_socket.
* nscd/nscd_getgr_r.c (open_socket): Removed.
(nscd_getgr_r): Use __nscd_open_socket.
* nscd/nscd_getpw_r.c (open_socket): Removed.
(nscd_getpw_r): Use __nscd_open_socket.
* nscd/nscd.c (main): Change type of fdn to long int and use strtol.
* nscd/connections.c (handle_request): Add cast to avoid warning.
* nscd/nscd_getpw_r.c (nscd_getpw_r): Likewise.
* gmon/gmon.c (write_call_graph): Use u_long for FROM_LEN.
* nscd/nscd_getgr_r.c (nscd_getgr_r): Use nscd_ssize_t for CNT.
* nscd/connections.c (nscd_run): Remove bogus return which isn't
necessary with gcc 3.2+.
(nscd_init): Don't use error() to print message, use dbg_log.