wessels [Thu, 23 Oct 1997 22:38:09 +0000 (22:38 +0000)]
narf, the defer_check needs a separate defer_data. Either that or we
have to write N different 'defer' functions for ftp/http/gopher/wais
because their read_data's are all different.
wessels [Thu, 23 Oct 1997 11:13:36 +0000 (11:13 +0000)]
Ripped out old 'comm_set_stall()' stuff. This broke because we would
decide to delay the server side for some fixed amount of time (1s), but
if the condition changed before that time was up, there was no way to
'undo' the stall.
Now we have a 'check_defer' function associated with a FD. We'll
call F->check_defer every time through select().
wessels [Thu, 23 Oct 1997 10:04:54 +0000 (10:04 +0000)]
sigh. Removed mem_obj->e_swap_buf. This caused big problems when
we queue two writes because both writes were sharing the same buf!
Now we get a free 8k page and free it for every call to file_write().
wessels [Wed, 22 Oct 1997 00:40:32 +0000 (00:40 +0000)]
IN ipcacheExpiredEntry() we have this goofy thing where we'll return
an expired entry if it was used within the last 60 seconds. But we
also must require there to be some valid addresses!
wessels [Sat, 18 Oct 1997 05:57:41 +0000 (05:57 +0000)]
- parse the HTTP reply headers at swap in. This means that
storeClientCopyHandleRead() needs to have a MemObject around.
So I added a pointer back to the parent mem_obj from _store_client.
ugh.
- removed lots of OLD_CODE
wessels [Sat, 18 Oct 1997 05:31:10 +0000 (05:31 +0000)]
- Need to use clientCacheHit() for icpHandleIMSReply() as well. This
means making it global. icpHandleIMSReply() might think it is
serving a cache hit, but the swapfile might not be validated yet,
so swapin might fail.
wessels [Fri, 17 Oct 1997 11:20:18 +0000 (11:20 +0000)]
With new storeClientCopy() scheme, the client side might re-request
some data which has already been read from disk (if it didn't get
the full HTTP headers). That means we need to put lseek() back
in; ugh. New fde->disk.offset tracks the current file offset.
Fixed the 'double-read' bug found by Alex Rousskov. Always
make the read callback after each read() call. Don't wait
for the read buffer to full or for EOF.
This means dread_ctrl->offset isn't needed as it was being used
because there will only be one read() per dread_ctrl. ->offset
now becomes the offset requested from the store module, and we
seek if dread_ctrl->offset != fde->disk.offset.
wessels [Fri, 17 Oct 1997 05:59:52 +0000 (05:59 +0000)]
Reamped objects being held in memory during transit. There will be a
smallish windo of data in memory for objects being transferred from the
server side. For cache hits (swap ins) there is no window, we just read
directly into buffers allocated from the client side, given to store.c
via storeClientCopy().
wessels [Wed, 15 Oct 1997 00:31:24 +0000 (00:31 +0000)]
- More cleanup relating to reduced error code set. protostart() doesn't
really need ERR_NOT_IMPLEMENTED.
- Start working on VM_WINDOW code, removed/replaced old DONT_USE_VM defines
- Replaced !DONT_USE_VM defines with USE_ICP_HIT_OBJ.
wessels [Tue, 26 Aug 1997 04:35:50 +0000 (04:35 +0000)]
Misc fixes to eliminate problems at exit (and other things)
- changed storeDirCloseSwapLogs() to take a 'reopen' arg.
if not set, we don't reopen the logs for writing again.
- added FD_CLOSING flag to avoid recursive calls to comm_close().
- added 'non_peers' structure to keep stats on offendors, instead
of logging every bad reply.
wessels [Mon, 25 Aug 1997 09:51:46 +0000 (09:51 +0000)]
Configuration cleanup.
- set up 'DEFAULT_IF_NONE' option for things like http_port
and cache_dir where we want to set a default only if there
is not one or more given in the config file.
- Implemented the configuration dump via cachemanager. All the
easy config types have dump functions; the remainder are
unimplemented.