<article>
<title>Squid 3.0 release notes</title>
<author>Squid Developers</author>
-<date>$Id: release-3.0.sgml,v 1.7 2003/06/12 23:56:38 wessels Exp $</date>
+<date>$Id: release-3.0.sgml,v 1.8 2003/06/19 13:11:59 robertc Exp $</date>
<abstract>
This document contains the release notes for version 3.0 of Squid.
<item>Complain if open of /dev/null fails; avoids infinite loop in ipcCreate().
<item>Properly quote the quoting character '%' in log_quote() and username_quote().
<item>in icmpRecv(), Handle the case when recv() returns EAGAIN and do not treat it like an error.
+ <item>Update squid to build with gcc/g++ 3.3 with no warnings.
</itemize>
<sect>Changes to squid.conf
/*
- * $Id: radix.h,v 1.16 2003/01/23 00:36:47 robertc Exp $
+ * $Id: radix.h,v 1.17 2003/06/19 13:12:00 robertc Exp $
*/
#ifndef SQUID_RADIX_H
SQUIDCEXTERN void squid_rn_init (void);
-SQUIDCEXTERN int squid_rn_inithead(void **, int);
+SQUIDCEXTERN int squid_rn_inithead(struct squid_radix_node_head **, int);
SQUIDCEXTERN int squid_rn_refines(void *, void *);
SQUIDCEXTERN int squid_rn_walktree(struct squid_radix_node_head *, int (*)(struct squid_radix_node *, void *), void *);
SQUIDCEXTERN struct squid_radix_node *squid_rn_addmask(void *, int, int);
## Process this file with automake to produce Makefile.in
#
-# $Id: Makefile.am,v 1.10 2003/03/10 04:56:21 robertc Exp $
+# $Id: Makefile.am,v 1.11 2003/06/19 13:12:00 robertc Exp $
#
SUBDIRS = libTrie
+AM_CFLAGS = @SQUID_CFLAGS@
+AM_CXXFLAGS = @SQUID_CXXFLAGS@
+
if ENABLE_XPROF_STATS
XPROF_STATS_SOURCE = Profiler.c
else
/*
- * $Id: MemPool.c,v 1.16 2003/02/08 01:45:47 robertc Exp $
+ * $Id: MemPool.c,v 1.17 2003/06/19 13:12:00 robertc Exp $
*
* DEBUG: section 63 Low Level Memory Pool Management
* AUTHOR: Alex Rousskov, Andres Kroonmaa
}
-/* removes empty Chunks from pool */
static void
-memPoolCleanOne(MemPool * pool, time_t maxage)
+memPoolConvertFreeCacheToChunkSpecific(MemPool * const pool)
{
- MemChunk *chunk, *freechunk, *listTail;
- void **Free;
- time_t age;
-
- if (!pool)
- return;
- if (!pool->Chunks)
- return;
-
- memPoolFlushMetersFull(pool);
+ void *Free;
/*
* OK, so we have to go through all the global freeCache and find the Chunk
* any given Free belongs to, and stuff it into that Chunk's freelist
lastPool = pool;
pool->allChunks = splay_splay((const void **)&Free, pool->allChunks, memCompObjChunks);
assert(splayLastResult == 0);
- chunk = pool->allChunks->data;
+ MemChunk *chunk = pool->allChunks->data;
assert(chunk->inuse_count > 0);
chunk->inuse_count--;
- pool->freeCache = *Free; /* remove from global cache */
- *Free = chunk->freeList; /* stuff into chunks freelist */
+ pool->freeCache = *(void **)Free; /* remove from global cache */
+ *(void **)Free = chunk->freeList; /* stuff into chunks freelist */
chunk->freeList = Free;
chunk->lastref = squid_curtime;
}
+}
+
+/* removes empty Chunks from pool */
+static void
+memPoolCleanOne(MemPool * pool, time_t maxage)
+{
+ MemChunk *chunk, *freechunk, *listTail;
+ time_t age;
+
+ if (!pool)
+ return;
+ if (!pool->Chunks)
+ return;
+
+ memPoolFlushMetersFull(pool);
+ memPoolConvertFreeCacheToChunkSpecific(pool);
/* Now we have all chunks in this pool cleared up, all free items returned to their home */
/* We start now checking all chunks to see if we can release any */
/* We start from pool->Chunks->next, so first chunk is not released */
/*
- * $Id: radix.c,v 1.19 2003/01/23 00:37:01 robertc Exp $
+ * $Id: radix.c,v 1.20 2003/06/19 13:12:00 robertc Exp $
*
* DEBUG: section 53 Radix tree data structure implementation
* AUTHOR: NetBSD Derived
}
int
-squid_rn_inithead(void **head, int off)
+squid_rn_inithead(struct squid_radix_node_head **head, int off)
{
register struct squid_radix_node_head *rnh;
register struct squid_radix_node *t, *tt, *ttt;
addmask_key = cplim = rn_ones + squid_max_keylen;
while (cp < cplim)
*cp++ = -1;
- if (squid_rn_inithead((void **) &squid_mask_rnhead, 0) == 0) {
+ if (squid_rn_inithead(&squid_mask_rnhead, 0) == 0) {
fprintf(stderr, "rn_init2 failed.\n");
exit(-1);
}
/*
- * $Id: rfc1738.c,v 1.24 2003/01/23 00:37:01 robertc Exp $
+ * $Id: rfc1738.c,v 1.25 2003/06/19 13:12:00 robertc Exp $
*
* DEBUG:
* AUTHOR: Harvest Derived
do_escape = 1;
}
/* RFC 1738 says any non-US-ASCII are encoded */
- if (((unsigned char) *p >= (unsigned char) 0x80) &&
- ((unsigned char) *p <= (unsigned char) 0xFF)) {
+ if (((unsigned char) *p >= (unsigned char) 0x80)) {
do_escape = 1;
}
/* Do the triplet encoding, or just copy the char */
/*
- * $Id: ACLReplyHeaderStrategy.h,v 1.1 2003/02/25 12:22:34 robertc Exp $
+ * $Id: ACLReplyHeaderStrategy.h,v 1.2 2003/06/19 13:12:01 robertc Exp $
*
*
* SQUID Web Proxy Cache http://www.squid-cache.org/
ACLReplyHeaderStrategy(ACLReplyHeaderStrategy const &);
private:
- static ACLReplyHeaderStrategy Instance_;
+ static ACLReplyHeaderStrategy *Instance_;
ACLReplyHeaderStrategy(){}
ACLReplyHeaderStrategy&operator=(ACLReplyHeaderStrategy const &);
ACLReplyHeaderStrategy<header> *
ACLReplyHeaderStrategy<header>::Instance()
{
- return &Instance_;
+ if (!Instance_)
+ Instance_ = new ACLReplyHeaderStrategy<header>;
+
+ return Instance_;
}
template <http_hdr_type header>
-ACLReplyHeaderStrategy<header> ACLReplyHeaderStrategy<header>::Instance_;
+ACLReplyHeaderStrategy<header> * ACLReplyHeaderStrategy<header>::Instance_(NULL);
#endif /* SQUID_REPLYHEADERSTRATEGY_H */
/*
- * $Id: ACLRequestHeaderStrategy.h,v 1.3 2003/02/25 12:22:34 robertc Exp $
+ * $Id: ACLRequestHeaderStrategy.h,v 1.4 2003/06/19 13:12:01 robertc Exp $
*
*
* SQUID Web Proxy Cache http://www.squid-cache.org/
ACLRequestHeaderStrategy(ACLRequestHeaderStrategy const &);
private:
- static ACLRequestHeaderStrategy Instance_;
+ static ACLRequestHeaderStrategy *Instance_;
ACLRequestHeaderStrategy(){}
ACLRequestHeaderStrategy&operator=(ACLRequestHeaderStrategy const &);
ACLRequestHeaderStrategy<header> *
ACLRequestHeaderStrategy<header>::Instance()
{
- return &Instance_;
+ if (!Instance_)
+ Instance_ = new ACLRequestHeaderStrategy<header>;
+
+ return Instance_;
}
template <http_hdr_type header>
-ACLRequestHeaderStrategy<header> ACLRequestHeaderStrategy<header>::Instance_;
+ACLRequestHeaderStrategy<header> * ACLRequestHeaderStrategy<header>::Instance_ (NULL);
#endif /* SQUID_REQUESTHEADERSTRATEGY_H */
/*
- * $Id: HttpHdrRange.cc,v 1.34 2003/06/18 12:24:02 robertc Exp $
+ * $Id: HttpHdrRange.cc,v 1.35 2003/06/19 13:12:01 robertc Exp $
*
* DEBUG: section 64 HTTP Range Header
* AUTHOR: Alex Rousskov
HttpHdrRangeIter::updateSpec()
{
assert (debt_size == 0);
+ assert (valid);
if (pos.incrementable()) {
debt(currentSpec()->length);
/*
- * $Id: asn.cc,v 1.92 2003/03/06 06:21:37 robertc Exp $
+ * $Id: asn.cc,v 1.93 2003/06/19 13:12:04 robertc Exp $
*
* DEBUG: section 53 AS Number handling
* AUTHOR: Duane Wessels, Kostas Anagnostakis
if (0 == inited++)
squid_rn_init();
- squid_rn_inithead((void **) &AS_tree_head, 8);
+ squid_rn_inithead(&AS_tree_head, 8);
cachemgrRegister("asndb", "AS Number Database", asnStats, 0, 1);
}
/*
- * $Id: delay_pools.cc,v 1.39 2003/05/20 12:17:39 robertc Exp $
+ * $Id: delay_pools.cc,v 1.40 2003/06/19 13:12:05 robertc Exp $
*
* DEBUG: section 77 Delay Pools
* AUTHOR: Robert Collins <robertc@squid-cache.org>
bool
VectorMap<Key,Value>::indexUsed (unsigned char const index) const
{
- assert (index <= IND_MAP_SZ);
return index < size();
}