/*
- * $Id: dns_internal.cc,v 1.8 1999/04/19 03:31:30 wessels Exp $
+ * $Id: dns_internal.cc,v 1.9 1999/04/19 04:45:03 wessels Exp $
*
* DEBUG: section 78 DNS lookups; interacts with lib/rfc1035.c
* AUTHOR: Duane Wessels
#define IDNS_MAX_TRIES 20
+typedef struct _idns_query idns_query;
typedef struct _ns ns;
+
+struct _idns_query {
+ char buf[512];
+ size_t sz;
+ unsigned short id;
+ int nsends;
+ struct timeval start_t;
+ struct timeval sent_t;
+ dlink_node lru;
+ IDNSCB *callback;
+ void *callback_data;
+};
+
struct _ns {
struct sockaddr_in S;
int nqueries;
int nreplies;
};
+
static ns *nameservers = NULL;
static int nns = 0;
static int nns_alloc = 0;
idnsInit(void)
{
static int init = 0;
+ memDataInit(MEM_IDNS_QUERY, "idns_query", sizeof(idns_query), 0);
if (DnsSocket < 0) {
DnsSocket = comm_open(SOCK_DGRAM,
0,
/*
- * $Id: enums.h,v 1.148 1999/04/15 06:15:54 wessels Exp $
+ * $Id: enums.h,v 1.149 1999/04/19 04:45:03 wessels Exp $
*
*
* SQUID Internet Object Cache http://squid.nlanr.net/Squid/
MEM_USHORTLIST,
MEM_WORDLIST,
MEM_IDNS_QUERY,
+ MEM_EVENT,
MEM_MAX
} mem_type;
/*
- * $Id: event.cc,v 1.26 1999/04/19 03:53:36 wessels Exp $
+ * $Id: event.cc,v 1.27 1999/04/19 04:45:04 wessels Exp $
*
* DEBUG: section 41 Event Processing
* AUTHOR: Henrik Nordstrom
void
eventAdd(const char *name, EVH * func, void *arg, double when, int weight)
{
- struct ev_entry *event = xcalloc(1, sizeof(struct ev_entry));
+ struct ev_entry *event = memAllocate(MEM_EVENT);
struct ev_entry **E;
event->func = func;
event->arg = arg;
*E = event->next;
if (NULL != event->arg)
cbdataUnlock(event->arg);
- xfree(event);
+ memFree(event, MEM_EVENT);
return;
}
debug_trap("eventDelete: event not found");
run_id++;
debug(41, 5) ("eventRun: RUN ID %d\n", run_id);
while ((event = tasks)) {
+ int valid = 1;
if (event->when > current_dtime)
break;
if (event->id == run_id) /* was added during this run */
event->arg = NULL;
tasks = event->next;
if (NULL != arg) {
- int valid = cbdataValid(arg);
+ valid = cbdataValid(arg);
cbdataUnlock(arg);
- if (!valid)
- return;
}
- weight += event->weight;
- debug(41, 5) ("eventRun: Running '%s', id %d\n", event->name, event->id);
- func(arg);
- safe_free(event);
+ if (valid) {
+ weight += event->weight;
+ debug(41, 5) ("eventRun: Running '%s', id %d\n",
+ event->name, event->id);
+ func(arg);
+ }
+ memFree(event, MEM_EVENT);
}
}
void
eventInit(void)
{
+ memDataInit(MEM_EVENT, "event", sizeof(struct ev_entry), 0);
cachemgrRegister("events",
"Event Queue",
eventDump, 0, 1);
while ((event = tasks)) {
if (NULL != event->arg)
cbdataUnlock(event->arg);
- xfree(event);
+ memFree(event, MEM_EVENT);
}
tasks = NULL;
}
/*
- * $Id: main.cc,v 1.292 1999/04/15 06:16:00 wessels Exp $
+ * $Id: main.cc,v 1.293 1999/04/19 04:45:05 wessels Exp $
*
* DEBUG: section 1 Startup and Main Loop
* AUTHOR: Harvest Derived
squid_signal(SIGALRM, time_tick, SA_RESTART);
alarm(1);
#endif
+ memCheckInit();
debug(1, 1) ("Ready to serve requests.\n");
-
if (!configured_once) {
eventAdd("storeMaintain", storeMaintainSwapSpace, NULL, 1.0, 1);
eventAdd("storeDirClean", storeDirClean, NULL, 15.0, 1);
/*
- * $Id: mem.cc,v 1.40 1999/04/14 05:16:17 wessels Exp $
+ * $Id: mem.cc,v 1.41 1999/04/19 04:45:06 wessels Exp $
*
* DEBUG: section 13 High Level Memory Pool Management
* AUTHOR: Harvest Derived
/* local routines */
-/*
- * we have a limit on _total_ amount of idle memory so we ignore
- * max_pages for now
- */
-static void
-memDataInit(mem_type type, const char *name, size_t size, int max_pages_notused)
-{
- assert(name && size);
- MemPools[type] = memPoolCreate(name, size);
-}
-
static void
memStringStats(StoreEntry * sentry)
{
* public routines
*/
+/*
+ * we have a limit on _total_ amount of idle memory so we ignore
+ * max_pages for now
+ */
+void
+memDataInit(mem_type type, const char *name, size_t size, int max_pages_notused)
+{
+ assert(name && size);
+ MemPools[type] = memPoolCreate(name, size);
+}
+
/* find appropriate pool and use it (pools always init buffer with 0s) */
void *
memInit(void)
{
int i;
- mem_type t;
memInitModule();
/* set all pointers to null */
memset(MemPools, '\0', sizeof(MemPools));
sizeof(helper_request), 0);
memDataInit(MEM_HELPER_SERVER, "helper_server",
sizeof(helper_server), 0);
- memDataInit(MEM_IDNS_QUERY, "idns_query",
- sizeof(idns_query), 0);
- /* test that all entries are initialized */
+ /* init string pools */
+ for (i = 0; i < mem_str_pool_count; i++) {
+ StrPools[i].pool = memPoolCreate(StrPoolsAttrs[i].name, StrPoolsAttrs[i].obj_size);
+ }
+ cachemgrRegister("mem",
+ "Memory Utilization",
+ memStats, 0, 1);
+}
+
+/*
+ * Test that all entries are initialized
+ */
+void
+memCheckInit(void)
+{
+ mem_type t;
for (t = MEM_NONE, t++; t < MEM_MAX; t++) {
if (MEM_DONTFREE == t)
continue;
*/
assert(MemPools[t]);
}
- /* init string pools */
- for (i = 0; i < mem_str_pool_count; i++) {
- StrPools[i].pool = memPoolCreate(StrPoolsAttrs[i].name, StrPoolsAttrs[i].obj_size);
- }
- cachemgrRegister("mem",
- "Memory Utilization",
- memStats, 0, 1);
}
void
-memClean()
+memClean(void)
{
memCleanModule();
}
/*
- * $Id: protos.h,v 1.318 1999/04/18 05:30:56 wessels Exp $
+ * $Id: protos.h,v 1.319 1999/04/19 04:45:06 wessels Exp $
*
*
* SQUID Internet Object Cache http://squid.nlanr.net/Squid/
/* mem */
extern void memInit(void);
-extern void memClean();
-extern void memInitModule();
-extern void memCleanModule();
-extern void memConfigure();
+extern void memClean(void);
+extern void memInitModule(void);
+extern void memCleanModule(void);
+extern void memConfigure(void);
extern void *memAllocate(mem_type);
extern void *memAllocBuf(size_t net_size, size_t * gross_size);
extern CBDUNL memFree;
extern void memFreeDISK(void *);
extern int memInUse(mem_type);
extern size_t memTotalAllocated(void);
+extern void memDataInit(mem_type, const char *, size_t, int);
+extern void memCheckInit(void);
/* MemPool */
extern MemPool *memPoolCreate(const char *label, size_t obj_size);
extern EVH storeDirClean;
/* store_digest.c */
-extern void storeDigestInit();
-extern void storeDigestNoteStoreReady();
-extern void storeDigestScheduleRebuild();
+extern void storeDigestInit(void);
+extern void storeDigestNoteStoreReady(void);
+extern void storeDigestScheduleRebuild(void);
extern void storeDigestDel(const StoreEntry * entry);
-extern void storeDigestReport();
+extern void storeDigestReport(void);
/*
* store_dir.c
#if DELAY_POOLS
extern void delayPoolsInit(void);
extern void delayInitDelayData(unsigned short pools);
-extern void delayFreeDelayData();
+extern void delayFreeDelayData(void);
extern void delayCreateDelayPool(unsigned short pool, u_char class);
extern void delayInitDelayPool(unsigned short pool, u_char class, delaySpecSet * rates);
extern void delayFreeDelayPool(unsigned short pool);
-extern void delayPoolsReconfigure();
+extern void delayPoolsReconfigure(void);
extern void delaySetNoDelay(int fd);
extern void delayClearNoDelay(int fd);
extern int delayIsNoDelay(int fd);
/*
- * $Id: structs.h,v 1.281 1999/04/16 01:00:54 wessels Exp $
+ * $Id: structs.h,v 1.282 1999/04/19 04:45:07 wessels Exp $
*
*
* SQUID Internet Object Cache http://squid.nlanr.net/Squid/
struct _generic_cbdata {
void *data;
};
-
-struct _idns_query {
- char buf[512];
- size_t sz;
- unsigned short id;
- int nsends;
- struct timeval start_t;
- struct timeval sent_t;
- dlink_node lru;
- IDNSCB *callback;
- void *callback_data;
-};
/*
- * $Id: typedefs.h,v 1.87 1999/04/14 05:16:20 wessels Exp $
+ * $Id: typedefs.h,v 1.88 1999/04/19 04:45:08 wessels Exp $
*
*
* SQUID Internet Object Cache http://squid.nlanr.net/Squid/
typedef struct _helper_server helper_server;
typedef struct _helper_request helper_request;
typedef struct _generic_cbdata generic_cbdata;
-typedef struct _idns_query idns_query;
#if SQUID_SNMP
typedef variable_list *(oid_ParseFn) (variable_list *, snint *);