/*
- * $Id: comm.cc,v 1.296 1999/01/11 22:46:16 wessels Exp $
+ * $Id: comm.cc,v 1.297 1999/01/12 16:42:15 wessels Exp $
*
* DEBUG: section 5 Socket Functions
* AUTHOR: Harvest Derived
fde *F = &fd_table[fd];
/* If the fd is closed already, just return */
- if (!F->open) {
+ if (!F->flags.open) {
debug(5, 0) ("comm_local_port: FD %d has been closed.\n", fd);
return 0;
}
assert(fd >= 0);
assert(fd < Squid_MaxFD);
F = &fd_table[fd];
- assert(F->open);
+ assert(F->flags.open);
if (timeout < 0) {
F->timeout_handler = NULL;
F->timeout_data = NULL;
F = &fd_table[fd];
if (F->flags.closing)
return;
- if (shutting_down && (!F->open || F->type == FD_FILE))
+ if (shutting_down && (!F->flags.open || F->type == FD_FILE))
return;
if (fd == current_hdl_fd) {
F->flags.delayed_comm_close = 1;
return;
}
- assert(F->open);
+ assert(F->flags.open);
assert(F->type != FD_FILE);
#ifdef USE_ASYNC_IO
if (F->flags.nolinger && F->flags.nonblocking)
{
fde *F = &fd_table[fd];
assert(fd >= 0);
- assert(F->open == FD_OPEN);
+ assert(F->flags.open);
debug(5, 5) ("commSetSelect: FD %d type %d\n", fd, type);
if (type & COMM_SELECT_READ) {
F->read_handler = handler;
PF *callback;
for (fd = 0; fd <= Biggest_FD; fd++) {
F = &fd_table[fd];
- if (F->open != FD_OPEN)
+ if (!F->flags.open)
continue;
if (F->type != FD_SOCKET)
continue;
/*
- * $Id: comm_select.cc,v 1.25 1999/01/11 19:40:29 wessels Exp $
+ * $Id: comm_select.cc,v 1.26 1999/01/12 16:42:15 wessels Exp $
*
* DEBUG: section 5 Socket Functions
*
PF *callback;
for (fd = 0; fd <= Biggest_FD; fd++) {
F = &fd_table[fd];
- if (F->open != FD_OPEN)
+ if (!F->flags.open)
continue;
if (F->timeout == 0)
continue;
/*
- * $Id: disk.cc,v 1.137 1998/12/05 00:54:21 wessels Exp $
+ * $Id: disk.cc,v 1.138 1999/01/12 16:42:16 wessels Exp $
*
* DEBUG: section 6 Disk I/O Routines
* AUTHOR: Harvest Derived
#else
assert(fd >= 0);
#endif
- assert(F->open);
+ assert(F->flags.open);
if ((callback = F->read_handler)) {
F->read_handler = NULL;
callback(-1, F->read_data);
dwrite_q *wq = NULL;
fde *F = &fd_table[fd];
assert(fd >= 0);
- assert(F->open);
+ assert(F->flags.open);
/* if we got here. Caller is eligible to write. */
wq = xcalloc(1, sizeof(dwrite_q));
wq->file_offset = file_offset;
/*
- * $Id: dns.cc,v 1.72 1998/11/12 06:28:03 wessels Exp $
+ * $Id: dns.cc,v 1.73 1999/01/12 16:42:17 wessels Exp $
*
* DEBUG: section 34 Dnsserver interface
* AUTHOR: Harvest Derived
if (dnsservers == NULL)
dnsservers = helperCreate("dnsserver");
dnsservers->n_to_start = Config.dnsChildren;
- dnsservers->ipc_type = IPC_TCP_SOCKET;
+ dnsservers->ipc_type = IPC_FIFO;
assert(dnsservers->cmdline == NULL);
wordlistAdd(&dnsservers->cmdline, Config.Program.dnsserver);
if (Config.onoff.res_defnames)
/*
- * $Id: enums.h,v 1.142 1999/01/11 23:29:41 wessels Exp $
+ * $Id: enums.h,v 1.143 1999/01/12 16:42:17 wessels Exp $
*
*
* SQUID Internet Object Cache http://squid.nlanr.net/Squid/
FD_WRITE
};
-enum {
- FD_CLOSE,
- FD_OPEN
-};
-
enum {
FQDN_CACHED,
FQDN_NEGATIVE_CACHED,
/*
- * $Id: fd.cc,v 1.28 1998/10/01 22:28:28 wessels Exp $
+ * $Id: fd.cc,v 1.29 1999/01/12 16:42:18 wessels Exp $
*
* DEBUG: section 51 Filedescriptor Functions
* AUTHOR: Duane Wessels
"Unknown"
};
-static void fdUpdateBiggest(int fd, unsigned int status);
+static void fdUpdateBiggest(int fd, int);
static void
-fdUpdateBiggest(int fd, unsigned int status)
+fdUpdateBiggest(int fd, int opening)
{
if (fd < Biggest_FD)
return;
assert(fd < Squid_MaxFD);
if (fd > Biggest_FD) {
- if (status != FD_OPEN)
- debug(51, 1) ("fdUpdateBiggest: status != FD_OPEN\n");
+ /*
+ * assert that we are not closing a FD bigger than
+ * our known biggest FD
+ */
+ assert(opening);
Biggest_FD = fd;
return;
}
/* if we are here, then fd == Biggest_FD */
- if (status != FD_CLOSE)
- debug(51, 1) ("fdUpdateBiggest: status != FD_CLOSE\n");
- while (fd_table[Biggest_FD].open != FD_OPEN)
+ /*
+ * assert that we are closing the biggest FD; we can't be
+ * re-opening it
+ */
+ assert(!opening);
+ while (!fd_table[Biggest_FD].flags.open)
Biggest_FD--;
}
assert(F->write_handler == NULL);
}
debug(51, 3) ("fd_close FD %d %s\n", fd, F->desc);
- fdUpdateBiggest(fd, F->open = FD_CLOSE);
+ F->flags.open = 0;
+ fdUpdateBiggest(fd, 0);
Number_FD--;
if (F->type == FD_FILE)
open_disk_fd--;
{
fde *F = &fd_table[fd];
assert(fd >= 0);
- if (F->open != 0) {
+ if (!F->flags.open) {
debug(51, 1) ("WARNING: Closing open FD %4d\n", fd);
fd_close(fd);
}
- assert(F->open == 0);
+ assert(!F->flags.open);
debug(51, 3) ("fd_open FD %d %s\n", fd, desc);
F->type = type;
- fdUpdateBiggest(fd, F->open = FD_OPEN);
+ F->flags.open = 1;
+ fdUpdateBiggest(fd, 1);
if (desc)
xstrncpy(F->desc, desc, FD_DESC_SZ);
Number_FD++;
fde *F;
for (i = 0; i < Squid_MaxFD; i++) {
F = &fd_table[i];
- if (!F->open)
+ if (!F->flags.open)
continue;
if (i == fileno(debug_log))
continue;
/*
- * $Id: stat.cc,v 1.306 1999/01/11 19:42:22 wessels Exp $
+ * $Id: stat.cc,v 1.307 1999/01/12 16:42:19 wessels Exp $
*
* DEBUG: section 18 Cache Manager Statistics
* AUTHOR: Harvest Derived
storeAppendPrintf(sentry, "---- ------ ---- ------- ------- --------------------- ------------------------------\n");
for (i = 0; i < Squid_MaxFD; i++) {
f = &fd_table[i];
- if (!f->open)
+ if (!f->flags.open)
continue;
storeAppendPrintf(sentry, "%4d %-6.6s %4d %7d %7d %-21s %s\n",
i,
/*
- * $Id: structs.h,v 1.256 1999/01/11 22:23:08 wessels Exp $
+ * $Id: structs.h,v 1.257 1999/01/12 16:42:20 wessels Exp $
*
*
* SQUID Internet Object Cache http://squid.nlanr.net/Squid/
struct _fde {
unsigned int type;
- unsigned int open;
+ unsigned int mode; /* FD_READ|FD_WRITE */
u_short local_port;
u_short remote_port;
char ipaddr[16]; /* dotted decimal address of peer */
char desc[FD_DESC_SZ];
struct {
+ unsigned int open:1;
unsigned int close_request:1;
unsigned int write_daemon:1;
unsigned int closing:1;