/* Inner loops of cache daemon.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
+#include <arpa/inet.h>
#include <sys/param.h>
#include <sys/poll.h>
#include <sys/socket.h>
{
[pwddb] = {
lock: PTHREAD_RWLOCK_INITIALIZER,
- enabled: 1,
+ enabled: 0,
check_file: 1,
filename: "/etc/passwd",
module: 211,
- disabled_iov: &pwd_iov_disabled
+ disabled_iov: &pwd_iov_disabled,
+ postimeout: 3600,
+ negtimeout: 20
},
[grpdb] = {
lock: PTHREAD_RWLOCK_INITIALIZER,
- enabled: 1,
+ enabled: 0,
check_file: 1,
filename: "/etc/group",
module: 211,
- disabled_iov: &grp_iov_disabled
+ disabled_iov: &grp_iov_disabled,
+ postimeout: 3600,
+ negtimeout: 60
},
[hstdb] = {
lock: PTHREAD_RWLOCK_INITIALIZER,
- enabled: 1,
+ enabled: 0,
check_file: 1,
filename: "/etc/hosts",
module: 211,
- disabled_iov: &hst_iov_disabled
+ disabled_iov: &hst_iov_disabled,
+ postimeout: 3600,
+ negtimeout: 20
}
};
+/* Number of seconds between two cache pruning runs. */
+#define CACHE_PRUNE_INTERVAL 15
+
/* Number of threads to use. */
int nthreads = -1;
handle_request (int fd, request_header *req, void *key)
{
if (debug_level > 0)
- dbg_log (_("handle_requests: request received (Version = %d)"),
+ dbg_log (_("handle_request: request received (Version = %d)"),
req->version);
if (req->version != NSCD_VERSION)
struct database *db = &dbs[serv2db[req->type]];
if (debug_level > 0)
- dbg_log ("\t%s (%s)", serv2str[req->type], key);
+ {
+ if (req->type == GETHOSTBYADDR || req->type == GETHOSTBYADDRv6)
+ {
+ char buf[INET6_ADDRSTRLEN];
+
+ dbg_log ("\t%s (%s)", serv2str[req->type],
+ inet_ntop (req->type == GETHOSTBYADDR
+ ? AF_INET : AF_INET6,
+ key, buf, sizeof (buf)));
+ }
+ else
+ dbg_log ("\t%s (%s)", serv2str[req->type], key);
+ }
/* Is this service enabled? */
if (!db->enabled)
{
- /* No sent the prepared record. */
+ /* No, sent the prepared record. */
if (TEMP_FAILURE_RETRY (write (fd, db->disabled_iov->iov_base,
db->disabled_iov->iov_len))
!= db->disabled_iov->iov_len)
struct pollfd conn;
int run_prune = my_number < lastdb && dbs[my_number].enabled;
time_t now = time (NULL);
- time_t next_prune = now + 15;
+ time_t next_prune = now + CACHE_PRUNE_INTERVAL;
int timeout = run_prune ? 1000 * (next_prune - now) : -1;
conn.fd = sock;
assert (my_number < lastdb);
now = time (NULL);
prune_cache (&dbs[my_number], now);
- next_prune = now + 15;
+ next_prune = now + CACHE_PRUNE_INTERVAL;
timeout = 1000 * (next_prune - now);
continue;
}
to 1kb. */
if (req.key_len < 0 || req.key_len > 1024)
{
- dbg_log (_("key length in request to long: %Zd"), req.key_len);
+ dbg_log (_("key length in request too long: %Zd"), req.key_len);
close (fd);
continue;
}