* nscd/nscd.h (NSCD_THREAD_STACKSIZE): Define.
* nscd/connections.c (start_threads): Use NSCD_THREAD_STACKSIZE.
* nscd/mem.c (gc): Don't allocate arrays on stack if it can
overflow it.
* sysdeps/unix/sysv/linux/nscd_setup_thread.c (setup_thread):
Return zero in case thread library is not NPTL.
when the lookup call failed.
* nscd/nscd.h (struct database_dyn): Rename prunelock to prune_lock.
Add prune_cond and wakeup_time.
(CACHE_PRUNE_INTERNAL): Define.
Update declarations of prune_cache and setup_thread.
* nscd/connections.c (dbs): Update initializers.
(CACHE_PRUNE_INTERNAL): Moved to nscd.h.
(nscd_init): Default number of threads is now 4.
(invalidate_cache): Take lock before calling prune_cache.
(handle_request): If SELinux forbids the request, say so.
(readylist_cond): Use static initializer.
(nscd_run_prune): New function. Used only by pruning threads.
(nscd_run_worder): Renamed from nscd_run. Remove support for pruning
here.
(fd_ready): Update nscd_run reference.
(start_threads): No need to initialize readylist_cond.
Start pruning threads separately.
* nscd/nscd_setup_thread.c: Change return value type to int and always
return 0.
* sysdeps/unix/sysv/linux/nscd_setup_thread.c: Change return value type
to int and return nonzero value if we can use the TID address hack.
* nscd/cache.c (cache_add): If next wakeup time of cleanup thread for
the database is later than the new entry's timeout, update the
wakeup time and wake the cleanup thread.
(prune_cache): Return seconds the next entry in the database is still
valid. Remove locking for pruning here.
* nscd/nscd.conf: Document default number of threads.
returning.
(PTR_DEMANGLE): Real definition now that it's not the same as
PRT_MANGLE anymore.
* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
* string/strerror_l.c: New file.
* string/Makefile (routines): Add strerror_l.
* string/string.h: Declare strerror_l.
* string/Versions: Export strerror_l for GLIBC_2.6.
* nscd/connections.c (nscd_run): Don't define MAXKEYLEN here.
also says whether this is a request for data. Renamed to
servinfo. All users changed.
(handle_request): Much simpler test whether we should search the cache.
* nscd/nscd.c (parse_opt): Read response from INVALIDATE request
to make sure the database has been already invalidated.
* nscd/cache.c (prune_cache): Add fd argument. Write response to fd
after the cache has been invalidated. Use pthread_mutex_lock rather
than pthread_mutex_trylock if fd != -1.
* nscd/connections.c (invalidate_cache): Add fd argument, write
response to fd if not calling prune_cache, pass fd to prune_cache.
(handle_request): Adjust invalidate_cache caller.
(nscd_run): Pass -1 as fd to prune_cache.
2006-05-02 Ulrich Drepper <drepper@redhat.com>
[BZ #2632]
* nscd/connections.c (nscd_init): Correct initialization of
in-memory database structure.
* iconvdata/utf-7.c: Don't require more than one character after
* nscd/nscd_conf.c (nscd_parse_file): Parse auto-propagate lines.
* nscd/nscd.conf: Add auto-propagate lines.
* nscd/connections.c (dbs): Initialize .propagate fields.
* nscd/grpcache.c (cache_addgr): Do not add ID entry for name lookups
and vice versa if propagation is disabled for the database.
* nscd/pwdcache.c (cache_addpw): Likewise.
2006-04-01 Ulrich Drepper <drepper@redhat.com>
[BZ #2498]
* nscd/connections.c (main_loop_poll): If the connection cannot be
accepted because of user-imposed limits close the descriptor.
(struct shmid_ds): Use it for shm_nattch field.
2005-11-18 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/futimesat.c (futimesat): If FILE is NULL,
set access and modification times of the file referenced by FD.
* sysdeps/generic/futimesat.c (futimesat): Don't return EINVAL if
FILE is NULL. Don't check FD if FILE is absolute path.
2005-11-19 Ulrich Drepper <drepper@redhat.com>
* nscd/nscd_gethst_r.c (nscd_gethst_r): Avoid unnecesary read call
if there are no aliases.
* sysdeps/unix/sysv/linux/Makefile (CFLAGS-connections.c,
CFLAGS-pwdcache.c, CFLAGS-grpcache.c, CFLAGS-hstcache.c,
CFLAGS-aicache.c, CFLAGS-initgrcache.c): Add -DHAVE_SENDFILE.
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_SENDFILE):
Define.
* nscd/pwdcache.c [HAVE_SENDFILE]: Include <sys/sendfile.h> and
<kernel-features.h>.
[HAVE_SENDFILE] (cache_addpw): Use sendfile to transmit positive
result.
* nscd/grpcache.c: Likewise.
* nscd/hstcache.c: Likewise.
* nscd/aicache.c: Likewise.
* nscd/initgrcache.c: Likewise.
* nscd/connectionc.c: Likewise.
(dbs): Initialize max_db_size fields.
(nscd_init): When mapping the database, use max_db_size as the
mapping size even if it is bigger than the file size.
* nscd/mem.c (mempool_alloc): When resizing the file make sure the
limit in max_db_size is not exceeded. Don't use mremap, just
posix_fallocate is enough (according to Linus). Use posix_fallocate
correctly.
* nscd/nscd.conf: Add max-db-size parameters.
* nscd/nscd.h (struct database_dyn): Add max_db_size field.
Define DEFAULT_MAX_DB_SIZE and DEFAULT_DATASIZE_PER_BUCKET.
Temporarily define TEMP_FAILURE_RETRY_VAL here.
* nscd/nscd_conf.c (nscd_parse_file): Parse max-db-size parameter
and add sanity checks for it.
* nscd/aicache.c (addhstaiX): Use send with MSG_NOSIGNAL not write to
send reply.
* nscd/connection.c (writeall): Likewise.
(handle_request): Likewise.
* nscd/grpcache.c (cache_addgr): Likewise.
* nscd/hstcache.c (cache_addhst): Likewise.
* nscd/initgrcache.c (addinitgroupsX): Likewise.
* nscd/nscd.c (parse_opt): Likewise.
* nscd/nscd_stat.c (send_stats): Likewise.
(receive_print_stats): Likewise.
* nscd/pwdcache.c (cache_addpw): Likewise.
* 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.
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.
* 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/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.
* sysdeps/unix/sysv/linux/wait.c: Don't include <nptl/pthreadP.h> or
<tls.h> here, no need for it.
* sysdeps/unix/sysv/linux/waitpid.c: Likewise.
* sysdeps/unix/sysv/linux/i386/fcntl.c (do_fcntl): Take ARG as void *
parameter, not varargs parameter.
* sysdeps/generic/sysdep-cancel.h (LIBC_CANCEL_RESET): Evaluate the
argument so it's not an unused variable.
* resolv/resolv.h (__p_key_syms, __p_cert_syms, __p_class_syms,
__p_type_syms, __p_rcode_syms): Remove decls, never really intended
for users.
* resolv/Versions (libresolv: GLIBC_2.3.2): New set, add __p_rcode.
2002-12-15 Art Haas <ahaas@airmail.net>
* nscd/connections.c: C99 initializer conversion.
* nscd/grpcache.c: Same.
* nscd/hstcache.c: Same.
* nscd/pwdcache.c: Same.
2002-01-17 Ulrich Drepper <drepper@redhat.com>
* nscd/nscd.c (drop_privileges): Removed. Adjust caller.
* nscd/connections.c (begin_drop_privileges): New function.
(finish_drop_privileges): New function.
(nscd_init): Call the new functions which also install all groups
for the server user.
2002-01-17 H.J. Lu <hjl@gnu.org>
* sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Remove
`const' from `got'.
2001-07-06 Paul Eggert <eggert@twinsun.com>
* manual/argp.texi: Remove ignored LGPL copyright notice; it's
not appropriate for documentation anyway.
* manual/libc-texinfo.sh: "Library General Public License" ->
"Lesser General Public License".
2001-07-06 Andreas Jaeger <aj@suse.de>
* All files under GPL/LGPL version 2: Place under LGPL version
2.1.
2000-10-22 Bruno Haible <haible@clisp.cons.org>
* iconvdata/big5hkscs.c (big5hkscs_to_ucs): Add irreversible mappings
for 0x8BF8, 0xA27E..0xA2A7.
* iconvdata/BIG5HKSCS.irreversible: New file.
2000-10-23 Jakub Jelinek <jakub@redhat.com>
* timezone/zdump.c (main): setlocale LC_CTYPE as well as LC_MESSAGES.
* timezone/zic.c (main): Likewise.
2000-10-23 Thorsten Kukuk <kukuk@suse.de>
* nscd/connections.c (invalidate_cache): Don't invalidate a cache
if it is not enabled.
1999-09-26 Ulrich Drepper <drepper@cygnus.com>
* locale/programs/ld-ctype.c (charclass_symbolic_ellipsis): Fix
error message printing. Correctly test whether all characters of
current token are used.
(ctype_read): NUL terminate last_str.
1999-06-14 Thorsten Kukuk <kukuk@suse.de>
* nscd/connections.c (handle_request): Only root is allowed to
send GETSTAT request in non secure mode.
* nscd/nscd.c: Print error message if other then root try to
use getstat.
1999-06-15 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/unix/sysv/linux/alpha/syscalls.list: Add __sysctl.
1999-06-15 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/time.texi (Limits on Resources): Describe RLIMIT_AS.
Closes PR libc/1164, reported by sascha@schumann.2ns.de.
1999-06-11 Thorsten Kukuk <kukuk@suse.de>
* nscd/nscd.c: Add -S options for separate caching of data for
every user. So one user couldn't see the data another user
has gotten with his credentials.
* nscd/nscd.h: Add new prototypes.
* nscd/cache.c: Compare owner of cache entry if in secure mode.
* nscd/connections.c: Check on shutdown if caller really was root.
In secure mode get uid of caller.
* nscd/grpcache.c: Add support for new secure group mode.
* nscd/hstcache.c: Add support for new secure hosts mode.
* nscd/pwdcache.c: Add support for new secure passwd mode.
1999-02-06 Ulrich Drepper <drepper@cygnus.com>
* Versions.def: Add versions for ld.so.
* csu/Versions: Remove __libc_stack_end here.
* elf/Versions: Split libc definitions in libc and ld.so definitions.
* elf/Makefile (ld-map): Change to ld.so.map.
* scripts/versions.awk: Recognize dot in library names.
* ctype/ctype.h: Remove definitions of __tolower and __toupper.
Don't use __tolower and __toupper in inline functions.
Add optimizing macros for tolower and toupper.
* ctype/ctype-extn.c (_tolower): Don't use __tolower.
(_toupper): Don't use __toupper.
* ctype/ctype.c (tolower): Don't use __tolower.
(toupper): Don't use toupper.
* nscd/cache.c (prune_cache): Correct printing of debugging messages.
* resolv/Versions (libresolv): Export __ns_name_unpack and
__ns_name_ntop.
* resolv/res_comp.c: Rename ns_name_unpack to __ns_name_unpack and
make it global. Change all users. Similar for ns_name_ntop.
* resolv/nss_dns/dns-host.c: Don't use dn_expand when extracting in
user-provided buffer. Use __ns_name_unpack and __ns_name_ntop
directly to detect too small buffer.
* stdio-common/Makefile (tests): Add scanf12.
* stdio-common/scanf12.c: New file.
* stdio-common/scanf12.input: New file.
* stdio-common/vfscanf.c (__vfscanf): Handle +/- at beginning of
floating-point correctly if the number is invalid.
* stdio-common/vfscanf.c: Don't use non-reentrant multibyte conversion
* stdio-common/printf_fphex.c: Likewise.
* stdio-common/vfprintf.c: Likewise.
See ChangeLog.9 for earlier changes.
1998-10-19 Ulrich Drepper <drepper@cygnus.com>
* include/ldsodefs.h: New file.
* iconv/gconv.c: Include ldsodefs.h, not elf/ldsodefs.h.
Remove change to avoid using _CALL_DL_FCT.
* iconv/gconv_db.c: Likewise.
* iconv/gconv_dl.c: Likewise.
* iconv/skeleton.c: Likewise, here for DL_CALL_FCT.
* malloc/mtrace.c: Include ldsodefs.h, not elf/ldsodefs.h.
* nss/nsswitch.c: Likewise.
* nss/nsswitch.h: Likewise.
1998-10-19 Philip Blundell <pb@nexus.co.uk>
* sunrpc/Makefile (otherlibs): If static NSS is in use, set to the
required libraries.
* login/Makefile (otherlibs): Likewise.
* nscd/Makefile (otherlibs): Likewise.
* Makeconfig (link-libc) [! build_shared]: Add $(otherlibs).
* debug/Makefile (install-bin): Only build catchsegv if using ELF.
* inet/Makefile: Add -DSTATIC_NSS to CFLAGS.
1998-10-19 Philip Blundell <pb@nexus.co.uk>
* sysdeps/unix/sysv/linux/arm/syscalls.list: Added setfsgid
and setfsuid.
1998-10-19 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nscd/connections.c: Fix typos in comments and strings.
* nscd/nscd.conf: Update according to recent changes to nscd.
* nscd/cache.c (prune_cache): Remove wrong comment.
copy_posix.mask for copy instruction.
* nscd/connections.c (dbs): Define defualt values for timeouts and
set enabled to 0 by default.
(CACHE_PRUNE_INTERVAL): New constant. Use it instead of magical 15 in
nscd_run.