-Special thanks go to people who have volunteered their time, effort, and ideas to make this software available.
+Special thanks go to people who have volunteered their time, effort,
+and ideas to make this software available.
Henrik Nordstrom <hno@hem.passagen.se>
Mark Treacy <mark@aone.com.au>
Michael Lupp <mike@nemesis.saar.de>
Development of this caching software is funded by the National Science
-Foundation (grant NCR-9521745). Paid staff members on the caching
-project are:
+Foundation (grants NCR-9616602 and NCR-9521745). Paid staff members on
+the caching project are:
- Duane Wessels <wessels@nlanr.net>
- Alex Rousskov <rousskov@nlanr.net>
+ Duane Wessels <wessels@ircache.net>
+ Alex Rousskov <rousskov@ircache.net>
+ Glenn Chisholm <glenn@ircache.net>
K Claffy <kc@nlanr.net>
Hans-Werner Braun <hwb@nlanr.net>
- Replaced comm_select FD scanning loops with global fd_set
structures. Inspired by Jeff Mogul's patch for squid 1.1.
-Changes to Squid-2.0 (September 25, 1998):
+Changes to Squid-2.0 (October 2, 1998):
- Added NAT/Transparent hijacking code from Quinton Dolan.
- Added actual filesystem usage to cachemgr 'storedir' page.
- Only works for some operating systems.
+ Only works for operating systems which support statvfs().
- Fixed HTCP compile-time bugs.
- Fixed quick_abort bugs. Configured values are stored as
Kbytes, not bytes.
+ - Removed fwdAbortFetch(). It breaks quick_abort and seems
+ mostly useless.
- Changed storeDirSelectSwapDir() to skip swap directories
when their utilization is over the high water mark ratio.
- Fixed off-by-one bug for dead neighbor detection (Joe Ramey).
send a "200" response instead of "206" (because we cannot
handle complex ranges, even for hits) Note: Support for
complex ranges requires storage of partial objects.
- - removed mib-2.system group from squid.
- - removed the ability to iterate through: ipcache/dnscache.
- - added ipcache/dnscache/fqdncache basic statistics.
- - converted SQUID-MIB to SMIv2.
- - moved SQUID-MIB to enterprises section of the tree in preparation
+ - Removed SNMP mib-2.system group from squid.
+ - Removed SNMP ability to iterate through ipcache and friends.
+ - Added SNMP ipcache/fqdncache basic statistics.
+ - Converted SQUID-MIB to SMIv2 (RFC 1902).
+ - Moved SQUID-MIB to enterprises section of the tree in preparation
of the split into PROXY-MIB & SQUID-MIB.
- - corrected minor errors in SQUID-MIB.
- - moved uptime into cacheSystem from cacheConfig.
- - corrected a number of get-next-request bugs, a snmpwalk should now
+ - Corrected minor errors in SQUID-MIB.
+ - Moved uptime into cacheSystem from cacheConfig.
+ - Corrected a number of get-next-request bugs, snmpwalk should now
return all objects and not skip some.
+ - Fixed netdbClosestParent() so it won't return sibling
+ peers.
+ - Fixed a bug with secondary clients on entries with
+ ENTRY_BAD_LENGTH set. We should release the
+ bad entry to prevent secondary clients jumping on.
+ - Changed MIB to prevent parse warnings at startup.
Changes to squid-1.2.beta25 (September 21, 1998):
/*
- * $Id: StatHist.cc,v 1.12 1998/07/22 20:36:54 wessels Exp $
+ * $Id: StatHist.cc,v 1.13 1998/10/03 03:56:51 wessels Exp $
*
* DEBUG: section 62 Generic Histogram
* AUTHOR: Duane Wessels
statHistBin(const StatHist * H, double v)
{
int bin;
+#if BROKEN_STAT_HIST_BIN
+ return 0;
+ /* NOTREACHED */
+#endif
v -= H->min; /* offset */
- if (v < 0.0) /* too small */
+ if (v <= 0.0) /* too small */
return 0;
bin = (int) (H->scale * H->val_in(v) + 0.5);
if (bin < 0) /* should not happen */
/*
- * $Id: client_side.cc,v 1.405 1998/09/30 02:53:18 wessels Exp $
+ * $Id: client_side.cc,v 1.406 1998/10/03 03:56:52 wessels Exp $
*
* DEBUG: section 33 Client-side Routines
* AUTHOR: Duane Wessels
} else if (!storeEntryValidToSend(e)) {
http->entry = NULL;
return LOG_TCP_MISS;
- } else if (EBIT_TEST(e->flags, ENTRY_SPECIAL)) {
+ }
+ if (EBIT_TEST(e->flags, ENTRY_SPECIAL)) {
/* Special entries are always hits, no matter what the client says */
http->entry = e;
return LOG_TCP_HIT;
+ }
#if HTTP_VIOLATIONS
- } else if (r->flags.nocache_hack) {
- http->entry = NULL;
+ if (r->flags.nocache_hack) {
+ /* if nocache_hack is set, nocache should always be clear, right? */
+ assert(!r->flags.nocache);
ipcacheReleaseInvalid(r->host);
- return LOG_TCP_CLIENT_REFRESH_MISS;
+ /* continue! */
+ }
#endif
- } else if (r->flags.nocache) {
+ if (r->flags.nocache) {
http->entry = NULL;
ipcacheReleaseInvalid(r->host);
return LOG_TCP_CLIENT_REFRESH_MISS;
* that is also a HIT. Thus, let's prevent HITs on complex Range requests */
http->entry = NULL;
return LOG_TCP_MISS;
- } else {
- http->entry = e;
- return LOG_TCP_HIT;
}
+ http->entry = e;
+ return LOG_TCP_HIT;
}
static void
SQUID-MIB DEFINITIONS ::= BEGIN
--
--- $Id: mib.txt,v 1.16 1998/09/23 21:21:08 glenn Exp $
+-- $Id: mib.txt,v 1.17 1998/10/03 03:56:53 wessels Exp $
--
+
IMPORTS
enterprises, Unsigned32, TimeTicks, Gauge32, Counter32,
MODULE-IDENTITY, OBJECT-TYPE
"Move to SMIv2. Prepare to split into proxy/squid."
::= { nlanr 1 }
--- Do NOT remove the following line
-
-- v 1.16 1998/09/22 glenn@ircache.net
+--
+-- This is a hack to get around a problem with the current
+-- version of the SNMP library. Remove the following seven lines
+-- before using with SNMP tools.
+--
+org OBJECT IDENTIFIER ::= { iso 1 }
+dod OBJECT IDENTIFIER ::= { org 6 }
+intenet OBJECT IDENTIFIER ::= { dod 1 }
+private OBJECT IDENTIFIER ::= { intenet 4 }
+enterprises OBJECT IDENTIFIER ::= { private 1 }
+nlanr OBJECT IDENTIFIER ::= { enterprises 3495 }
+squid OBJECT IDENTIFIER ::= { nlanr 1 }
+
--
-- OID Assignments
--
/*
- * $Id: neighbors.cc,v 1.255 1998/09/29 01:32:59 wessels Exp $
+ * $Id: neighbors.cc,v 1.256 1998/10/03 03:56:54 wessels Exp $
*
* DEBUG: section 15 Neighbor Routines
* AUTHOR: Harvest Derived
if (opcode > ICP_END)
return;
opcode_d = icp_opcode_str[opcode];
- neighborUpdateRtt(p, mem);
+ if (p)
+ neighborUpdateRtt(p, mem);
/* Does the entry exist? */
if (NULL == entry) {
debug(12, 3) ("neighborsUdpAck: Cache key '%s' not found\n",
/*
- * $Id: store.cc,v 1.464 1998/09/21 07:01:26 wessels Exp $
+ * $Id: store.cc,v 1.465 1998/10/03 03:56:56 wessels Exp $
*
* DEBUG: section 20 Storage Manager
* AUTHOR: Harvest Derived
e->mem_obj->object_sz = e->mem_obj->inmem_hi;
e->store_status = STORE_OK;
assert(e->mem_status == NOT_IN_MEMORY);
- if (!storeEntryValidLength(e))
+ if (!storeEntryValidLength(e)) {
EBIT_SET(e->flags, ENTRY_BAD_LENGTH);
+ storeReleaseRequest(e);
+ }
#if USE_CACHE_DIGESTS
if (e->mem_obj->request)
e->mem_obj->request->hier.store_complete_stop = current_time;