DW:
- In storeDiskdSend() we used to loop on storeDiskdDirCallback(sd)
if we were over the magic2 limit. There were two problems with
that approach. The loop was at CPU speed; there were no delays.
When this condition occurs, Squid could hog the CPU when it would
be better to give some cycles to the diskd processes. Also, we
need to check callbacks for *all* swap directories, not just the
current one.
This patch calls storeDirCallback() instead. It also adds an
exponentially increasing delay between calls, with a 500ms limit.
select is used as a somewhat portable microsecond sleep timer.
hno [Tue, 27 Jun 2000 14:41:30 +0000 (14:41 +0000)]
Complete rewrite of the removal policy list, to work along the
same lines as the filesystem list. Now a list of calls to
storeReplAdd() is generated, which adds the policies to a dynamic
list, and storeCreateRemovalPolicy searches this list for the
requested policy name.
This also allows for a seemless integration of loadable modules
at any time. All that is needed to have filesystems or policies
in loadable modules is to write the few lines of code required
to bring in the shared object, and to call the appropriate
registering function (storeFsAdd or storeReplAdd).
adrian [Tue, 27 Jun 2000 02:17:12 +0000 (02:17 +0000)]
The last two changes from modio:
* bring ufs to the latest incarnation of ufs-style object/file/bitmap
removal.
* Make the use of truncate() in diskd.c dependant upon #if USE_TRUNCATE,
like it should be.
wessels [Mon, 26 Jun 2000 10:57:16 +0000 (10:57 +0000)]
DW:
- Made the store dir selection algorithm configurable via
'store_dir_select_algorithm'. There are currently two options:
'least-load' (storeDirSelectSwapDirLeastLoad(), the default),
and 'round-robin' (storeDirSelectSwapDirRoundRobin()).
- Added counter stats to the storeCreate() function to find out
how often it fails and succeeds.
wessels [Mon, 26 Jun 2000 04:41:21 +0000 (04:41 +0000)]
DW:
- Support for extension methods via squid.conf. The admin
can define up to 20 additional methods with the
'extension_methods' wordlist. Methods are converted to
uppercase, and put into the RequestMethodStr[] array,
replacing some placeholders.
wessels [Wed, 21 Jun 2000 13:32:13 +0000 (13:32 +0000)]
DW:
- Added a special checks for large files. I've been seeing a
system crash followed by a reboot that seems to corrupt the swap
log. Squid believes that the disk holds some really large files.
It complains about using being over the high water mark and
proceeds to delete files as fast as it can. To prevent that,
we call stat() on sufficiently large files (>128KB) and reject
those that are missing or have the wrong size.
hno [Sat, 10 Jun 2000 01:59:52 +0000 (01:59 +0000)]
Minor bugfix to the textual output of configure for the removal policies
(said store modules not removal policies. Typical case of copy'n paste
decease)
hno [Wed, 7 Jun 2000 01:34:30 +0000 (01:34 +0000)]
Minor corrections of the formatting of the boilerplate section:
* One and only one blank line first in the files
* added the copyright bolierplate where it was missing
* a few missing debug section "none" statements
* author was missing on some files..
hno [Wed, 31 May 2000 14:57:07 +0000 (14:57 +0000)]
Corrected --disable-unlinkd. It didn't correctly parse the arguments
and always enabled unlinkd..
Excended the makefile trickery used for --disable-unlinkd to also
apply to dnsserver and pinger. Now no helpers are built or installed
unless requested.
Note: The makefile trickery will probably fail on old UNIX:es if no
helpers are to be installed. Need to find a way to test if a variable
contains anything else besides whitespace.. Workaround: Don't use
--disable-unlinkd or use --disable-internal-dns.
The error message Squid sent when the client did not send a initial
request in a timely manner confused browsers using persistent connections.
It is better to simply close the connection, forcing the user agent to retry
any pending request.
Fixes some bogous bogous MD5 key mismatch warnings when using
the aufs or diskd stores. This is due to their asyncronous nature where
objects might get removed from the cache while they are being read from
disk.
Also rearranged the ChangeLog somewhat since Duane apparently have made
an internal Squid-2.4.DEVEL3 release..
hno [Tue, 30 May 2000 05:36:23 +0000 (05:36 +0000)]
Workaround/fix for a race condition between storeSwapOut and
stmemFreeDataUpto. The freeing of memory data could cause
entry->mem->swapout.memnode to reference a freed memory chunk..
wessels [Mon, 29 May 2000 09:10:39 +0000 (09:10 +0000)]
DW:
- Running the current code on an older 2.4 cache results in unlink
errors. During 2.4 development, we changed the way swap file
numbers are assigned and stored. The high 16 bits used to encode
the SD index number. There used to be a call to storeDirProperFileno
here that re-assigned the index bits. Now, for backwards
compatibility, we just need to mask it off.
wessels [Mon, 29 May 2000 07:53:58 +0000 (07:53 +0000)]
DW:
- The 'flag' parameter of storeDirValidFileno got deleted when it
became storeDirFSValidFileno (at least for diskd and ufs).
This flag is important for rebuilding. When the flag is set, it
enables the out-of-range check against the filemap size. Without
this check, the filemap does not grow during the rebuild procedure.
Instead, all objects with file numbers larger than the default (16k?)
get declared invalid and most of the cached objects are lost.
wessels [Mon, 29 May 2000 06:52:31 +0000 (06:52 +0000)]
DW:
- I'm getting a cbdata assertion when trying to 'cbdataFree' a
store_client. Its probably from this call to storeUnregister
with http->sc instead of http->old_sc. Regardless, its a good
idea to always NULL http->sc after calling unregister.
wessels [Sun, 28 May 2000 23:00:13 +0000 (23:00 +0000)]
DW:
- Somebody "moved" store_pages_max, store_swap_high, and store_swap_low
to globals.c, but didn't delete them from store.c. This caused a
divide by zero bug in storeDiskdDirMaintain.
wessels [Tue, 16 May 2000 13:05:50 +0000 (13:05 +0000)]
DW:
- Synced HEAD with SQUID_2_3 branch as of SQUID_2_3_STABLE3. Can't
say it was fun. I wouldn't be surprised if some conflicts got
resolved incorrectly.
wessels [Fri, 12 May 2000 09:43:00 +0000 (09:43 +0000)]
DW:
- The removal of storeClientListSearch broke validation requests.
A clientHttpRequest (http) can register itself with two StoreEntrys.
One is the old entry that needs validation, and the other is
the one to hold the validation response from the origin server.
With the new scheme, clientHttpRequest needs and 'old_sc' to go
with 'old_entry'.
wessels [Fri, 12 May 2000 09:32:24 +0000 (09:32 +0000)]
DW:
- When diskd got MODIO'ified, this important bit got dropped for some
reason. If we don't drain the queue sometimes in MsgSend, its
quite possible to run out of shared memory buffers. Probably event
more important, we don't want to have too many messages outstanding
without processing some replies back from the diskd daemons.
wessels [Fri, 12 May 2000 04:20:57 +0000 (04:20 +0000)]
DW:
- Jens-S reports internal DNS code happily resolves ".foo.com" while
external DNS gives an error. This patch makes internal DNS return
a "the domain name does not exist" error message.
wessels [Thu, 11 May 2000 09:05:23 +0000 (09:05 +0000)]
DW:
Benno Rice (benno@netizen.com.au) reports "two instances where
read handlers were treating their fd_table read data as a pointer
to an int and attempting to increment it, even though NULL was
passed, or somesuch"
adrian [Sun, 7 May 2000 22:18:19 +0000 (22:18 +0000)]
Killing the abuse of storeClientListSearch() in the code. Now the
client list per memObject is a dlink_list rather than a single linked
list. storeClientListAdd() returns a store_client * which is then
used whenever storeClientCopy()/storeUnregister() is called.
adrian [Sat, 6 May 2000 22:44:26 +0000 (22:44 +0000)]
brought over from modio - storeExpiredReferenceAge() isn't applicable
in the current storage layout. It will result in soon to be expired
objects (LRU) entering the digest, but there isn't a hook in the
current code to check this cleanly, so the code has been commented out.
adrian [Wed, 3 May 2000 23:15:38 +0000 (23:15 +0000)]
MODIO_1 commit. This change (including documentation) implements a more
modular storage directory system, which leaves object replacement and IO
up to the storage modules.
There is a lot of repeated code in the FS modules and some tidying up
is in the pipeline.
The documentation for this new API is in doc/Programming-Guide/prog-guide.sgml .
hno [Wed, 3 May 2000 03:35:24 +0000 (03:35 +0000)]
hno squid-2.3.STABLE1.strict_authenticate_ip_ttl.patch [variant there of]
Squid-2.3.STABLE1: strict authenticate_ip_ttl option
Changed authenticate_ip_ttl to have an strict option, enforcing that
the user comes from one IP address only.
Changes from the patch: Added another squid.conf directive for enabling
this rather than overloading the authenticate_ip_ttl option with negative
values..
hno [Wed, 3 May 2000 03:21:05 +0000 (03:21 +0000)]
hno squid-2.3.STABLE1.http_reply_null_character.patch
Squid-2.3.STABLE1: Handle NULL characters in the server reply headers
Squid failed to detect the end of the servers HTTP headers if the server
wrongly responds with headers containing a NULL character. This could
cause abnormal amount of used cache_mem during the request. (the server
in question was mp3 streaming, virtuallu unlimited in size)