/*
- * $Id: acl.cc,v 1.92 1997/04/30 20:06:23 wessels Exp $
+ * $Id: acl.cc,v 1.93 1997/04/30 22:46:23 wessels Exp $
*
* DEBUG: section 28 Access Control
* AUTHOR: Duane Wessels
} else if (checklist->state[ACL_DST_IP] == ACL_LOOKUP_NONE) {
debug(28, 3, "aclMatchAcl: Can't yet compare '%s' ACL for '%s'\n",
acl->name, r->host);
- checklist->state[ACL_DST_IP] = ACL_LOOKUP_NEED;
+ checklist->state[ACL_DST_IP] = ACL_LOOKUP_NEEDED;
return 0;
} else {
return aclMatchIp(&acl->data, no_addr);
if (checklist->state[ACL_DST_DOMAIN] == ACL_LOOKUP_NONE) {
debug(28, 3, "aclMatchAcl: Can't yet compare '%s' ACL for '%s'\n",
acl->name, inet_ntoa(ia->in_addrs[0]));
- checklist->state[ACL_DST_DOMAIN] = ACL_LOOKUP_NEED;
+ checklist->state[ACL_DST_DOMAIN] = ACL_LOOKUP_NEEDED;
return 0;
}
return aclMatchDomainList(&acl->data, "none");
} else if (checklist->state[ACL_SRC_DOMAIN] == ACL_LOOKUP_NONE) {
debug(28, 3, "aclMatchAcl: Can't yet compare '%s' ACL for '%s'\n",
acl->name, inet_ntoa(checklist->src_addr));
- checklist->state[ACL_SRC_DOMAIN] = ACL_LOOKUP_NEED;
+ checklist->state[ACL_SRC_DOMAIN] = ACL_LOOKUP_NEEDED;
return 0;
} else {
return aclMatchDomainList(&acl->data, "none");
debug(28, 3, "aclCheck: checking '%s'\n", A->cfgline);
allow = A->allow;
match = aclMatchAclList(A->acl_list, checklist);
- if (checklist->state[ACL_DST_IP] == ACL_LOOKUP_NEED) {
+ if (checklist->state[ACL_DST_IP] == ACL_LOOKUP_NEEDED) {
checklist->state[ACL_DST_IP] = ACL_LOOKUP_PENDING;
ipcache_nbgethostbyname(checklist->request->host,
-1,
aclLookupDstIPDone,
checklist);
- checklist->dst_ip_lookup_pending = 1;
return;
- } else if (checklist->state[ACL_SRC_DOMAIN] == ACL_LOOKUP_NEED) {
+ } else if (checklist->state[ACL_SRC_DOMAIN] == ACL_LOOKUP_NEEDED) {
checklist->state[ACL_SRC_DOMAIN] = ACL_LOOKUP_PENDING;
fqdncache_nbgethostbyaddr(checklist->src_addr,
-1,
aclLookupSrcFQDNDone,
checklist);
- checklist->src_fqdn_lookup_pending = 1;
return;
- } else if (checklist->state[ACL_DST_DOMAIN] == ACL_LOOKUP_NEED) {
+ } else if (checklist->state[ACL_DST_DOMAIN] == ACL_LOOKUP_NEEDED) {
checklist->dst_ia = ipcacheCheckNumeric(checklist->request->host);
- if (checklist->dst_ia != NULL) {
- checklist->state[ACL_DST_DOMAIN] = ACL_LOOKUP_PENDING;
- fqdncache_nbgethostbyaddr(checklist->dst_ia->in_addrs[0],
- -1,
- aclLookupDstFQDNDone,
- checklist);
- checklist->dst_fqdn_lookup_pending = 1;
- } else {
+ if (checklist->dst_ia == NULL) {
checklist->state[ACL_DST_DOMAIN] = ACL_LOOKUP_DONE;
+ return;
}
+ checklist->state[ACL_DST_DOMAIN] = ACL_LOOKUP_PENDING;
+ fqdncache_nbgethostbyaddr(checklist->dst_ia->in_addrs[0],
+ -1,
+ aclLookupDstFQDNDone,
+ checklist);
return;
}
if (match) {
{
debug(28, 3, "aclCheckCallback: answer=%d\n", answer);
checklist->callback(answer, checklist->callback_data);
- if (checklist->src_fqdn_lookup_pending)
+ if (checklist->state[ACL_SRC_DOMAIN] == ACL_LOOKUP_PENDING)
fqdncacheUnregister(checklist->src_addr, checklist);
- if (checklist->dst_fqdn_lookup_pending)
+ if (checklist->state[ACL_DST_DOMAIN] == ACL_LOOKUP_PENDING)
fqdncacheUnregister(checklist->dst_ia->in_addrs[0], checklist);
- if (checklist->dst_ip_lookup_pending)
+ if (checklist->state[ACL_DST_IP] == ACL_LOOKUP_PENDING)
ipcacheUnregister(checklist->request->host, checklist);
requestUnlink(checklist->request);
xfree(checklist);
aclLookupDstIPDone(int fd, const ipcache_addrs * ia, void *data)
{
aclCheck_t *checklist = data;
- checklist->dst_ip_lookup_pending = 0;
checklist->state[ACL_DST_IP] = ACL_LOOKUP_DONE;
aclCheck(checklist);
}
aclLookupSrcFQDNDone(int fd, const char *fqdn, void *data)
{
aclCheck_t *checklist = data;
- checklist->src_fqdn_lookup_pending = 0;
checklist->state[ACL_SRC_DOMAIN] = ACL_LOOKUP_DONE;
aclCheck(checklist);
}
aclLookupDstFQDNDone(int fd, const char *fqdn, void *data)
{
aclCheck_t *checklist = data;
- checklist->dst_fqdn_lookup_pending = 0;
- checklist->state[ACL_SRC_DOMAIN] = ACL_LOOKUP_DONE;
+ checklist->state[ACL_DST_DOMAIN] = ACL_LOOKUP_DONE;
aclCheck(checklist);
}
/*
- * $Id: redirect.cc,v 1.39 1997/04/30 18:30:59 wessels Exp $
+ * $Id: redirect.cc,v 1.40 1997/04/30 22:46:26 wessels Exp $
*
* DEBUG: section 29 Redirector
* AUTHOR: Duane Wessels
static redirectStateData *Dequeue _PARAMS((void));
static void Enqueue _PARAMS((redirectStateData *));
static void redirectDispatch _PARAMS((redirector_t *, redirectStateData *));
+static void redirectStateFree _PARAMS((redirectStateData * r));
static redirector_t **redirect_child_table = NULL;
static int NRedirectors = 0;
r->handler(r->data,
t == redirector->inbuf ? NULL : redirector->inbuf);
}
- safe_free(r);
+ redirectStateFree(r);
redirector->redirectState = NULL;
redirector->flags &= ~REDIRECT_FLAG_BUSY;
redirector->offset = 0;
return NULL;
}
+static void
+redirectStateFree(redirectStateData * r)
+{
+ safe_free(r->orig_url);
+ safe_free(r);
+}
+
static void
redirectDispatch(redirector_t * redirect, redirectStateData * r)
if (r->handler == NULL) {
debug(29, 1, "redirectDispatch: skipping '%s' because no handler\n",
r->orig_url);
- safe_free(r);
+ redirectStateFree(r);
return;
}
redirect->flags |= REDIRECT_FLAG_BUSY;
}
r = xcalloc(1, sizeof(redirectStateData));
r->fd = cfd;
- r->orig_url = icpState->url;
+ r->orig_url = xstrdup(icpState->url);
r->client_addr = icpState->log_addr;
if (icpState->ident.ident == NULL || *icpState->ident.ident == '\0') {
r->client_ident = dash_str;
debug(50, 1, "%s: %s\n", path, xstrerror());
fatal("storeDirOpenSwapLogs: Failed to open swap log.");
}
+ debug(20, 3, "Cache Dir #%d log opened on FD %d\n", i, fd);
SD->swaplog_fd = fd;
}
}
for (i = 0; i < ncache_dirs; i++) {
SD = &SwapDirs[i];
file_close(SD->swaplog_fd);
+ debug(20, 3, "Cache Dir #%d log closed on FD %d\n", i, SD->swaplog_fd);
+ SD->swaplog_fd = -1;
}
}
safe_free(new_path);
return NULL;
}
- debug(20, 1, "Rebuilding storage from %s\n", swaplog_path);
/* close the existing write-only FD */
if (SD->swaplog_fd >= 0)
file_close(SD->swaplog_fd);
debug(50, 1, "%s: %s\n", swaplog_path, xstrerror());
fatal("storeDirCloseTmpSwapLog: Failed to open swap log.");
}
+ safe_free(swaplog_path);
+ safe_free(new_path);
SD->swaplog_fd = fd;
+ debug(20, 3, "Cache Dir #%d log opened on FD %d\n", i, fd);
}
void