/*
- * $Id: cache_cf.cc,v 1.204 1997/07/14 21:11:00 wessels Exp $
+ * $Id: cache_cf.cc,v 1.205 1997/07/14 23:44:57 wessels Exp $
*
* DEBUG: section 3 Configuration File Parsing
* AUTHOR: Harvest Derived
self_destruct();
d = atof(token);
m = u; /* default to 'units' if none specified */
- if ((token = strtok(NULL, w_space)) != NULL) {
- if ((m = parseTimeUnits(token)) == 0)
+ if ((token = strtok(NULL, w_space)) == NULL)
+ debug(3,0)("WARNING: No units on '%s', assuming %f %s\n",
+ config_input_line, d, units);
+ else if ((m = parseTimeUnits(token)) == 0)
self_destruct();
- }
*tptr = m * d / u;
}
}
static void
-parseBytesLine(size_t *bptr, const char *units)
+parseBytesLine(size_t * bptr, const char *units)
{
char *token;
double d;
self_destruct();
d = atof(token);
m = u; /* default to 'units' if none specified */
- if ((token = strtok(NULL, w_space)) != NULL) {
- if ((m = parseBytesUnits(token)) == 0)
- self_destruct();
- }
+ if ((token = strtok(NULL, w_space)) == NULL)
+ debug(3, 0) ("WARNING: No units on '%s', assuming %f %s\n",
+ config_input_line, d, units);
+ else if ((m = parseBytesUnits(token)) == 0)
+ self_destruct();
*bptr = m * d / u;
}
NAME: neighbor_timeout neighbour_timeout
COMMENT: (seconds)
-DEFAULT: 2
+DEFAULT: 2 seconds
TYPE: time_t
LOC: Config.neighborTimeout
DOC_START
NAME: maximum_object_size
-COMMENT: (KB)
-TYPE: kb_size_t
+COMMENT: (bytes)
+TYPE: size_t
DEFAULT: 4096 KB
LOC: Config.Store.maxObjectSize
DOC_START
NAME: quick_abort_min
COMMENT: (KB)
TYPE: kb_size_t
-DEFAULT: -1
+DEFAULT: -1 kb
LOC: Config.quickAbort.min
DOC_NONE
NAME: quick_abort_max
COMMENT: (KB)
TYPE: kb_size_t
-DEFAULT: 0
+DEFAULT: 0 kb
LOC: Config.quickAbort.max
DOC_START
By default the cache continues to retrieve objects from
COMMENT: (in minutes)
TYPE: time_t
LOC: Config.negativeTtl
-DEFAULT: 300
+DEFAULT: 5 minutes
DOC_START
Time-to-Live (TTL) for failed requests. Certain types of
failures (such as "connection refused" and "404 Not Found") are
COMMENT: (in minutes)
TYPE: time_t
LOC: Config.positiveDnsTtl
-DEFAULT: 21600
+DEFAULT: 6 hours
DOC_START
Time-to-Live (TTL) for positive caching of successful DNS lookups.
Default is 6 hours (360 minutes). If you want to minimize the
use of Squid's ipcache, set this to 1, not 0.
-positive_dns_ttl 360 minutes
+positive_dns_ttl 6 hours
DOC_END
COMMENT: (in minutes)
TYPE: time_t
LOC: Config.negativeDnsTtl
-DEFAULT: 300
+DEFAULT: 5 minutes
DOC_START
Time-to-Live (TTL) for negative caching of failed DNS lookups.
COMMENT: (in seconds)
TYPE: time_t
LOC: Config.Timeout.connect
-DEFAULT: 120
+DEFAULT: 2 minutes
DOC_START
Some systems (notably Linux) can not be relied upon to properly
time out connect(2) requests. Therefore the squid process
COMMENT: (in minutes)
TYPE: time_t
LOC: Config.Timeout.read
-DEFAULT: 900
+DEFAULT: 15 minutes
DOC_START
The read_timeout is applied on server-side connections. After
each successful read(), the timeout will be extended by this
COMMENT: (in minutes)
TYPE: time_t
LOC: Config.Timeout.defer
-DEFAULT: 3600
+DEFAULT: 1 hour
DOC_START
If your clients are behind slow (e.g. PPP/SLIP) connections,
then data may come in from the server-side faster than it can
to wait while in "deferred read mode." The default is one
hour.
-defer_timeout 60 minutes
+defer_timeout 1 hour
DOC_END
NAME: request_timeout
TYPE: time_t
LOC: Config.Timeout.request
-DEFAULT: 30
+DEFAULT: 30 seconds
DOC_START
How long to wait for an HTTP request after connection
establishment. For persistent connections, wait this long
COMMENT: (in minutes)
TYPE: time_t
LOC: Config.Timeout.lifetime
-DEFAULT: 86400
+DEFAULT: 1 day
DOC_START
The maximum amount of time that a client (browser) is allowed to
remain connected to the cache process. This protects the Cache
COMMENT: (in seconds)
TYPE: time_t
LOC: Config.shutdownLifetime
-DEFAULT: 30
+DEFAULT: 30 seconds
DOC_START
When SIGTERM or SIGHUP is received, the cache is put into
"shutdown pending" mode until all active sockets are closed.
NAME: announce_period
TYPE: time_t
LOC: Config.Announce.period
-DEFAULT: 86400
+DEFAULT: 1 day
DOC_START
This is how frequently to send cache announcements. The default
is `0' which disables sending the announcement messages.
To enable announcing your cache, just uncomment the line below.
-announce_period 24 hours
+announce_period 1 day
DOC_END
NAME: netdb_ping_period
TYPE: time_t
LOC: Config.Netdb.period
-DEFAULT: 300
+DEFAULT: 5 minutes
DOC_START
The minimum period for measuring a site. There will be at
least this much delay between successive pings to the same
/*
- * $Id: debug.cc,v 1.47 1997/07/14 05:57:54 wessels Exp $
+ * $Id: debug.cc,v 1.48 1997/07/14 23:44:58 wessels Exp $
*
* DEBUG: section 0 Debug Routines
* AUTHOR: Harvest Derived
vfprintf(debug_log, f, args);
if (unbuffered_logs)
fflush(debug_log);
- if (opt_debug_stderr)
+ if (opt_debug_stderr && debug_log != stderr)
vfprintf(stderr, f, args);
va_end(args);
}
/*
- * $Id: ftp.cc,v 1.130 1997/07/14 21:11:02 wessels Exp $
+ * $Id: ftp.cc,v 1.131 1997/07/14 23:44:59 wessels Exp $
*
* DEBUG: section 9 File Transfer Protocol (FTP)
* AUTHOR: Harvest Derived
ftpConnectDone(int fd, int status, void *data)
{
FtpStateData *ftpState = data;
- debug(9, 3) ("ftpConnectDone\n");
- if (status == COMM_ERROR) {
+ request_t *request = ftpState->request;
+ debug(9, 3) ("ftpConnectDone, status = %d\n", status);
+ if (status == COMM_ERR_DNS) {
+ debug(9, 4) ("ftpConnectDone: Unknown host: %s\n", request->host);
+ storeAbort(ftpState->entry, ERR_DNS_FAIL, dns_error_message, 0);
+ comm_close(fd);
+ } else if (status != COMM_OK) {
storeAbort(ftpState->entry, ERR_CONNECT_FAIL, xstrerror(), 0);
comm_close(fd);
- return;
+ } else {
+ ftpState->state = BEGIN;
+ ftpState->ctrl.buf = get_free_4k_page();
+ ftpState->ctrl.freefunc = put_free_4k_page;
+ ftpState->ctrl.size = 4096;
+ ftpState->ctrl.offset = 0;
+ ftpState->data.buf = xmalloc(SQUID_TCP_SO_RCVBUF);
+ ftpState->data.size = SQUID_TCP_SO_RCVBUF;
+ ftpState->data.freefunc = xfree;
+ commSetSelect(fd, COMM_SELECT_READ, ftpReadControlReply, ftpState, 0);
}
- ftpState->state = BEGIN;
- ftpState->ctrl.buf = get_free_4k_page();
- ftpState->ctrl.freefunc = put_free_4k_page;
- ftpState->ctrl.size = 4096;
- ftpState->ctrl.offset = 0;
- ftpState->data.buf = xmalloc(SQUID_TCP_SO_RCVBUF);
- ftpState->data.size = SQUID_TCP_SO_RCVBUF;
- ftpState->data.freefunc = xfree;
- commSetSelect(fd, COMM_SELECT_READ, ftpReadControlReply, ftpState, 0);
}
/* ====================================================================== */
char *filename = NULL;
char *t = NULL;
StoreEntry *e = ftpState->entry;
- struct _http_reply *reply = e->mem_obj->reply;
+ http_reply *reply = e->mem_obj->reply;
+ debug(0,0)("ftpAppendSuccessHeader: %s\n", ftpState->entry->url);
if (EBIT_TEST(ftpState->flags, FTP_HTTP_HEADER_SENT))
return;
+ EBIT_SET(ftpState->flags, FTP_HTTP_HEADER_SENT);
assert(e->mem_obj->e_current_len == 0);
filename = (t = strrchr(urlpath, '/')) ? t + 1 : urlpath;
if (EBIT_TEST(ftpState->flags, FTP_ISDIR)) {
}
storeAppendPrintf(e, "\r\n");
storeTimestampsSet(e);
- assert(e->flag & KEY_PRIVATE);
storeSetPublicKey(e);
}
extern int do_reuse; /* 1 */
extern int hash_links_allocated;
extern int icmp_sock;
-extern int neighbors_do_private_keys;
+extern int neighbors_do_private_keys; /* 1 */
extern int opt_accel_uses_host; /* 0 */
extern int opt_catch_signals; /* 1 */
extern int opt_debug_stderr; /* 0 */
extern int opt_foreground_rebuild; /* 0 */
extern int opt_forwarded_for; /* 1 */
extern int opt_mem_pools; /* 1 */
-extern int opt_no_ipcache; /* 0 */
extern int opt_reload_hit_only; /* 0 */
extern int opt_syslog_enable; /* 0 */
extern int opt_udp_hit_obj; /* 0 */
/*
- * $Id: gopher.cc,v 1.86 1997/06/19 22:51:50 wessels Exp $
+ * $Id: gopher.cc,v 1.87 1997/07/14 23:45:00 wessels Exp $
*
* DEBUG: section 10 Gopher
* AUTHOR: Harvest Derived
gopherConnectDone(int fd, int status, void *data)
{
GopherStateData *gopherState = data;
- if (status == COMM_ERROR) {
+ request_t *request = gopherState->request;
+ if (status == COMM_ERR_DNS) {
+ debug(10, 4) ("gopherConnectDone: Unknown host: %s\n", request->host);
+ storeAbort(gopherState->entry, ERR_DNS_FAIL, dns_error_message, 0);
+ comm_close(fd);
+ } else if (status != COMM_OK) {
storeAbort(gopherState->entry, ERR_CONNECT_FAIL, xstrerror(), 0);
comm_close(fd);
- return;
+ } else {
+ commSetSelect(fd, COMM_SELECT_WRITE, gopherSendRequest, gopherState, 0);
}
- /* Install connection complete handler. */
- if (opt_no_ipcache)
- ipcacheInvalidate(gopherState->host);
- commSetSelect(fd,
- COMM_SELECT_WRITE,
- gopherSendRequest,
- gopherState, 0);
}
/*
- * $Id: http.cc,v 1.176 1997/07/02 22:42:55 wessels Exp $
+ * $Id: http.cc,v 1.177 1997/07/14 23:45:01 wessels Exp $
*
* DEBUG: section 11 Hypertext Transfer Protocol (HTTP)
* AUTHOR: Harvest Derived
peerCheckConnectStart(httpState->neighbor);
comm_close(fd);
} else {
- if (opt_no_ipcache)
- ipcacheInvalidate(request->host);
fd_note(fd, entry->url);
commSetSelect(fd, COMM_SELECT_WRITE, httpSendRequest, httpState, 0);
}
/*
- * $Id: ident.cc,v 1.30 1997/06/04 06:16:00 wessels Exp $
+ * $Id: ident.cc,v 1.31 1997/07/14 23:45:01 wessels Exp $
*
* DEBUG: section 30 Ident (RFC 931)
* AUTHOR: Duane Wessels
{
ConnStateData *connState = data;
LOCAL_ARRAY(char, reqbuf, BUFSIZ);
- if (status == COMM_ERROR) {
+ if (status != COMM_OK) {
comm_close(fd);
identCallback(connState);
return;
/*
- * $Id: main.cc,v 1.160 1997/07/14 19:31:40 wessels Exp $
+ * $Id: main.cc,v 1.161 1997/07/14 23:45:02 wessels Exp $
*
* DEBUG: section 1 Startup and Main Loop
* AUTHOR: Harvest Derived
" -f file Use given config-file instead of\n"
" %s\n"
" -h Print help message.\n"
- " -i Disable IP caching.\n"
" -k reconfigure|rotate|shutdown|interrupt|kill|debug|check\n"
" Send signal to running copy and exit.\n"
" -s Enable logging to syslog.\n"
extern char *optarg;
int c;
- while ((c = getopt(argc, argv, "CDFRVYXa:bdf:hik:m:su:vz?")) != -1) {
+ while ((c = getopt(argc, argv, "CDFRVYXa:bdf:hk:m:su:vz?")) != -1) {
switch (c) {
case 'C':
opt_catch_signals = 0;
case 'h':
usage();
break;
- case 'i':
- opt_no_ipcache = 1;
- break;
case 'k':
if ((int) strlen(optarg) < 1)
usage();
/*
- * $Id: squid.h,v 1.127 1997/07/07 05:29:53 wessels Exp $
+ * $Id: squid.h,v 1.128 1997/07/14 23:45:03 wessels Exp $
*
* AUTHOR: Duane Wessels
*
#include "snprintf.h"
#endif
-extern void serverConnectionsClose _PARAMS((void));
-extern void shut_down _PARAMS((int));
-
-
-extern time_t squid_starttime; /* main.c */
-extern int do_reuse; /* main.c */
-extern int HttpSockets[]; /* main.c */
-extern int NHttpSockets; /* main.c */
-extern int theInIcpConnection; /* main.c */
-extern int theOutIcpConnection; /* main.c */
-extern int vizSock;
-extern volatile int shutdown_pending; /* main.c */
-extern volatile int reconfigure_pending; /* main.c */
-extern int opt_reload_hit_only; /* main.c */
-extern int opt_dns_tests; /* main.c */
-extern int opt_foreground_rebuild; /* main.c */
-extern int opt_zap_disk_store; /* main.c */
-extern int opt_syslog_enable; /* main.c */
-extern int opt_catch_signals; /* main.c */
-extern int opt_no_ipcache; /* main.c */
-extern int vhost_mode; /* main.c */
-extern int Squid_MaxFD; /* main.c */
-extern int Biggest_FD; /* main.c */
-extern int select_loops; /* main.c */
-extern const char *const version_string; /* main.c */
-extern const char *const appname; /* main.c */
-extern struct in_addr local_addr; /* main.c */
-extern struct in_addr theOutICPAddr; /* main.c */
-extern const char *const localhost;
-extern struct in_addr no_addr; /* main.c */
-extern struct in_addr any_addr; /* main.c */
-extern int opt_udp_hit_obj; /* main.c */
-extern int opt_mem_pools; /* main.c */
-extern int opt_forwarded_for; /* main.c */
-extern int opt_accel_uses_host; /* main.c */
-extern int configured_once; /* main.c */
-extern char ThisCache[]; /* main.c */
-
-/* Prototypes and definitions which don't really deserve a separate
- * include file */
-
-#define CONNECT_PORT 443
-
-extern void start_announce _PARAMS((void *unused));
-extern void sslStart _PARAMS((int fd, const char *, request_t *, int *sz));
-extern void waisStart _PARAMS((request_t *, StoreEntry *));
-extern void storeDirClean _PARAMS((void *unused));
-extern void passStart _PARAMS((int, const char *, request_t *, int *));
-extern void identStart _PARAMS((int, ConnStateData *, IDCB * callback));
-extern int httpAnonAllowed _PARAMS((const char *line));
-extern int httpAnonDenied _PARAMS((const char *line));
-
-extern const char *const dash_str;
-extern const char *const null_string;
-extern const char *const w_space;
-
#define OR(A,B) (A ? A : B)
#endif /* SQUID_H */
/*
- * $Id: ssl.cc,v 1.55 1997/06/18 01:43:45 wessels Exp $
+ * $Id: ssl.cc,v 1.56 1997/07/14 23:45:04 wessels Exp $
*
* DEBUG: section 26 Secure Sockets Layer Proxy
* AUTHOR: Duane Wessels
xfree);
return;
}
- if (opt_no_ipcache)
- ipcacheInvalidate(sslState->host);
if (sslState->proxying)
sslProxyConnected(sslState->server.fd, sslState);
else
/*
- * $Id: store.cc,v 1.268 1997/07/14 21:11:04 wessels Exp $
+ * $Id: store.cc,v 1.269 1997/07/14 23:45:06 wessels Exp $
*
* DEBUG: section 20 Storeage Manager
* AUTHOR: Harvest Derived
destroy_StoreEntry(StoreEntry * e)
{
debug(20, 3) ("destroy_StoreEntry: destroying %p\n", e);
- if (!e) {
- debug_trap("destroy_StoreEntry: NULL Entry");
- return;
- }
+ assert(e != NULL);
if (e->mem_obj)
destroy_MemObject(e->mem_obj);
if (e->url) {
storeHashMemDelete(StoreEntry * e)
{
hash_link *hptr = hash_lookup(in_mem_table, e->key);
- if (hptr == NULL) {
- debug_trap("storeHashMemDelete: key not found");
- return;
- }
+ assert(hptr != NULL);
hash_delete_link(in_mem_table, hptr);
meta_data.hot_vm--;
}
static void
storeSetMemStatus(StoreEntry * e, mem_status_t status)
{
- if (e->key == NULL) {
- debug_trap("storeSetMemStatus: NULL key");
- return;
- } else if (status != IN_MEMORY && e->mem_status == IN_MEMORY)
+ assert(e->key != NULL);
+ if (status != IN_MEMORY && e->mem_status == IN_MEMORY)
storeHashMemDelete(e);
else if (status == IN_MEMORY && e->mem_status != IN_MEMORY)
storeHashMemInsert(e);
assert(!BIT_TEST(e->flag, ENTRY_DISPATCHED));
BIT_SET(e->flag, RELEASE_REQUEST);
}
- if (storePendingNClients(e) > 0)
- debug_trap("storeUnlockObject: unlocked entry with pending clients\n");
+ assert(storePendingNClients(e) == 0);
if (BIT_TEST(e->flag, RELEASE_REQUEST)) {
storeRelease(e);
} else if (BIT_TEST(e->flag, ABORT_MSG_PENDING)) {
/* NOTREACHED */
break;
default:
- debug_trap("storeGeneratePublicKey: Unsupported request method");
+ fatal_dump("storeGeneratePublicKey: Unsupported request method");
break;
}
return NULL;
static void
storeSetPrivateKey(StoreEntry * e)
{
- hash_link *table_entry = NULL;
const char *newkey = NULL;
if (e->key && BIT_TEST(e->flag, KEY_PRIVATE))
return; /* is already private */
newkey = storeGeneratePrivateKey(e->url, e->method, 0);
- if ((table_entry = hash_lookup(store_table, newkey))) {
- debug_trap("storeSetPrivateKey: duplicate private key");
- return;
- }
+ assert(hash_lookup(store_table, newkey) == NULL);
if (e->key)
storeHashDelete(e);
if (e->key && !BIT_TEST(e->flag, KEY_URL))
newkey = storeGeneratePublicKey(e->url, e->method);
while ((table_entry = hash_lookup(store_table, newkey))) {
- debug(20, 3) ("storeSetPublicKey: Making old '%s' private.\n", newkey);
+ debug(20, 1) ("storeSetPublicKey: Making old '%s' private.\n", newkey);
e2 = (StoreEntry *) table_entry;
storeSetPrivateKey(e2);
storeRelease(e2);
- if (loop_detect++ == 10)
- fatal_dump("storeSetPublicKey() is looping!!");
+ assert(++loop_detect < 10);
newkey = storeGeneratePublicKey(e->url, e->method);
}
if (e->key)
STCB *callback = NULL;
struct _store_client *sc;
ssize_t size;
- if (mem->clients == NULL && mem->nclients) {
- debug_trap("InvokeHandlers: NULL mem->clients");
- return;
- }
+ assert(mem->clients != NULL || mem->nclients == 0);
/* walk the entire list looking for valid callbacks */
for (i = 0; i < mem->nclients; i++) {
sc = &mem->clients[i];
e);
return;
}
- if (mem->e_current_len > e->object_len)
- debug_trap("storeSwapInHandle: Too much data read!");
+ assert(mem->e_current_len <= e->object_len);
/* complete swapping in */
storeSetMemStatus(e, IN_MEMORY);
put_free_8k_page(mem->e_swap_buf);
storeLog(STORE_LOG_SWAPIN, e);
debug(20, 5) ("storeSwapInHandle: SwapIn complete: '%s' from %s.\n",
e->url, storeSwapFullPath(e->swap_file_number, NULL));
- if (mem->e_current_len != e->object_len) {
- debug_trap("storeSwapInHandle: Object size mismatch");
- debug(20, 0) (" --> '%s'\n", e->url);
- debug(20, 0) (" --> Expecting %d bytes from file: %s\n", e->object_len,
- storeSwapFullPath(e->swap_file_number, NULL));
- debug(20, 0) (" --> Only read %d bytes\n",
- mem->e_current_len);
- }
+ assert(mem->e_current_len == e->object_len);
e->lock_count++; /* lock while calling handler */
InvokeHandlers(e); /* once more after mem_status state change */
e->lock_count--;
int n_released = 0;
int n_locked = 0;
int i;
- static time_t last_warning = 0;
+ static int last_warning = 0;
static time_t last_check = 0;
int pages_needed;
/* These will be neg-cached objects */
n_released += storeRelease(e);
} else {
- debug_trap("storeGetMemSpace: Bad Entry in LRU list");
+ fatal_dump("storeGetMemSpace: Bad Entry in LRU list");
}
}
i = 3;
if (sm_stats.n_pages_in_use > store_pages_max) {
- if (squid_curtime - last_warning > 600) {
+ if (sm_stats.n_pages_in_use > last_warning * 1.05) {
debug(20, 0) ("WARNING: Exceeded 'cache_mem' size (%dK > %dK)\n",
sm_stats.n_pages_in_use * 4, store_pages_max * 4);
- last_warning = squid_curtime;
+ last_warning = sm_stats.n_pages_in_use;
debug(20, 0) ("Perhaps you should increase cache_mem?\n");
i = 0;
}
continue;
if (BIT_TEST(e->flag, KEY_PRIVATE))
continue;
- if ((dirn = storeDirNumber(e->swap_file_number)) >= Config.cacheSwap.n_configured) {
- debug_trap("storeWriteCleanLogss: dirn out of range");
- continue;
- }
+ dirn = storeDirNumber(e->swap_file_number);
+ assert(dirn < Config.cacheSwap.n_configured);
if (fd[dirn] < 0)
continue;
sprintf(line, "%08x %08x %08x %08x %9d %s\n",
/*
- * $Id: tools.cc,v 1.113 1997/07/14 05:57:55 wessels Exp $
+ * $Id: tools.cc,v 1.114 1997/07/14 23:45:07 wessels Exp $
*
* DEBUG: section 21 Misc Functions
* AUTHOR: Harvest Derived
syslog(LOG_ALERT, "%s", message);
#endif
fprintf(debug_log, "FATAL: %s\n", message);
- if (opt_debug_stderr)
+ if (opt_debug_stderr && debug_log != stderr)
fprintf(stderr, "FATAL: %s\n", message);
fprintf(debug_log, "Squid Cache (Version %s): Terminated abnormally.\n",
version_string);
/*
- * $Id: tunnel.cc,v 1.55 1997/06/18 01:43:45 wessels Exp $
+ * $Id: tunnel.cc,v 1.56 1997/07/14 23:45:04 wessels Exp $
*
* DEBUG: section 26 Secure Sockets Layer Proxy
* AUTHOR: Duane Wessels
xfree);
return;
}
- if (opt_no_ipcache)
- ipcacheInvalidate(sslState->host);
if (sslState->proxying)
sslProxyConnected(sslState->server.fd, sslState);
else
/*
- * $Id: wais.cc,v 1.78 1997/06/19 22:51:57 wessels Exp $
+ * $Id: wais.cc,v 1.79 1997/07/14 23:45:08 wessels Exp $
*
* DEBUG: section 24 WAIS Relay
* AUTHOR: Harvest Derived
if (status == COMM_ERR_DNS) {
storeAbort(waisState->entry, ERR_DNS_FAIL, dns_error_message, 0);
comm_close(fd);
- return;
} else if (status != COMM_OK) {
storeAbort(waisState->entry, ERR_CONNECT_FAIL, xstrerror(), 0);
comm_close(fd);
- return;
+ } else {
+ commSetSelect(fd, COMM_SELECT_WRITE, waisSendRequest, waisState, 0);
}
- if (opt_no_ipcache)
- ipcacheInvalidate(waisState->relayhost);
- commSetSelect(fd,
- COMM_SELECT_WRITE,
- waisSendRequest,
- waisState, 0);
}
static void