UPCOMING CHANGES: - Send refresh values from refresh_pattern lines as 'Cache-Control: max-stale XXX' in HTTP requests. - Experiment with returning network probe measurments in ICP replies. Changes to squid-1.1.beta17 (November 12, 1996): - Fixed NULL friends coredump in neighbors_open(). - Added setting HAVE_TEMPNAM back to the configure script. - Fixed h_errno bug on NeXTStep (frank@langen.bull.de). - Fixed expiresMoreThan() bug causing all UDP_MISS replies. - Changed 'background.c' to 'event.c' and merged all periodic functions into an event queue. - Renamed httpParseHeaders() to httpParseReplyHeaders(). - Added support for sending HTTP/1.1 'Cache-Control: max-age=X' in requests. The max-age value is taken from the 'refresh_pattern' rules. - Added support for parsing max-age in client request. - Split icpUdpSend() into simpler icpUdpSend() plus icpCreateMessage(). - Force storeAbort() for dispatched objects in asciiLifetimeHandle(). - Fixed firewall-related bug when the DNS lookup fails. - Fixed '#define HAVE_GETRUSAGE' bug (Takahiro Yugawa). - Made storeStartDeleteBehind() quiet for 'no-proxy' neighbors. - Fixed log_quote() signed/unsigned bug (Ron Gomes). Changes to squid-1.1.beta16 (November 8, 1996): - Fixed type of Config.level{One,Two}Dirs. - Fixed calling storeRegister and storeUnregister with NULL a entry. - Fixed objcache "squid.conf" request and now require a password for it (Jan.Harkes@cwi.nl). - Added check for dotted-quads in matchInsideFirewall() (Andreas Lamprecht). - Fixed up some HTTP/1.1 Cache-Control parsing (Ed Knowles). - Fixed IP ACL memset() bug when -DPURIFY=1. - Resurrected storeEntryValidToSend(). - Moved storeSetPrivateKey() calls to storeReleaseRequest(). - Added separate config line (neighbor_type_domain) for modifying neighbor type (parent vs. sibling) for certain domains. Adding it to cache_host_domain doesn't provide needed flexibility. - Added User-Agent log patch (Joe Ramey). - Added httpd-accel Host: patch (Miguel A.L. Paraz). - Changed ident lookup stuff to require the lookup before checking ACL's. If you have 'ident_lookup on' then this may cause noticable delay while waiting for the ident lookup. - Fixed storeSwapOutHandle() FMR bug. - Stopped inserting incorrect Host: header for proxy-HTTP requests. Changes to squid-1.1.beta15 (): - Fixed entry->clients[].fd initialization bug causing all large objects to get stuck. - Changed /www.nlanr.net/Squid/ to /squid.nlanr.net/Squid/. Changes to squid-1.1.beta14 (): - Added pw_encrypt() check to configure. - Added 'cache_stop_relist' for a regular expression based stoplist. - Fixed checkRefresh() to not cause IMS request for objects which have not yet expired, but are past the LM-factor. - Fixed asciiConnLifetimeHandle() to force storeAbort() for pending objects. - Made lots of variables and args 'const' (Markus Gyger). - Added cachemgr password support in squid.conf (Yaroslav M. Levchenko). Each cachemgr operation may have a separate password. Shutdown and all "log" operations must be password-protected. - Removed debug_trap() calls in squid_error_entry(). - Removed InvokeHandlers() call from StoreAbort(). - Added icpHandleAbort() to deliver abort messages, if at all. - Added passthrough module (pass.c) for POST, et. al. - Fixed purify bugs in storeCloseLog() and storeSwapInHandle(). - Merged store 'pending list' into 'client list.' - Made number of first- and second-level swap directories configurable (Ralph Loader). Changes to squid-1.1.beta13 (November 1, 1996): - Fixed base64_code[] typo bug (Joe Ramey). - Fixed errors being returned as empty objects. - Changed order of sanity checks in neighborsUdpAck(). - Made swap log pathname configurable with 'store_swap_log'. - Made 'http_accel virtual 80' same as -V on command line. - Fixed string termination bug in base64_decode() (Joe Ramey). Changes to squid-1.1.beta12 (October 31, 1996): - Fixed ICMP 'pinger' failure detection. - Fixed handling of no-cache for negative-cached objects. - Replaced protoUnregister() call in icpDetectClientClose(). - Fixed calling storeReleaseRequest() on unlocked objects. Changes to squid-1.1.beta11 (October 29, 1996): - Fixed rfc1123() to use actual RFC1123 time format. - Made Store Hash parameters configurable - store_objects_per_bucket - store_avg_objects_size - Fundamental changes to object TTLs; now think in terms of refresh times. Replaced 'ttl_pattern' with 'refresh_pattern'. - Dropped 'http', 'ftp', and 'gopher' config options. - Added a single 'maximum_object_size' value. - Moved storeStartDeleteBehind() calls from http/ftp/gopher to storeAppend(). - Moved storeClientListAdd() call from store to client/icp because of storeClientCopy() race condition between IMS replies and objects in delete behind mode. - renamed TCP_EXPIRED* to TCP_REFRESH*. - Stopped appending error messages to partially delivered objects. - Removed protoUnregister() call in icpDetectClientClose() as probable cause of storeReleaseRequest() warnings. Changes to squid-1.1.beta10 (October 24, 1996): - Fixed neighborsUdpAck() coredump bug and made debug messages more consistent. - Removed old REQ_ACCEL test (Miguel A.L. Paraz) - Fixed process RSS value for SGI (Ed Knowles). - Fixed parseAddressLine() to use gethostbyname(3) because its called before ipcache_init(). (Miguel A.L. Paraz) - Fixed announce bug since beta7 causing caches to be announced regardless of 'announce_to' setting. (Paul Southworth) - Fixed pinger 'last_check_time' bug. - Changed storeEntry->flag and storeEntry->refcount back to 32-bit ints. - Removed extra "\r\n" for abort error messages. - Numerous hash fixes from Mark Treacy. - Renamed rfc850 to rfc1123. - Changed storeRelease to not make recursive call for HEAD objects. - Changed return value semantics of storeRelease(). Changes to squid-1.1.beta9 (October 21, 1996): - Added 'make depend' target to Makefiles. - Fixed changing the wrong instance of 'opt_catch_signals' in tools.c for beta8tools.c for beta8. - Fixed xmemcpy macros in include/config.h (Ed Knowles). - Fixed logging of "TCP_EXPIRED_MISS/304." Changes to squid-1.1.beta8 (): - Added client_db.c; keeps stats on clients, use cachemgr to view client list. - Stop sending ICP_OP_DENIED to clients if 95% of their queries are denied (then they'll think we're dead). - Fixed objects getting stuck in VM when handling aborted requests in icpHandleIMSReply(). - If IMS verification fails, send the old object and log it as TCP_EXP_FAIL_HIT. - Added Host: header to HTTP requests. - Disable dnsservers with 'dns_children 0' in the config file. - Disable ftpget with 'ftpget_program none' in the config file. Also ftpget is disabled for http_accel mode. - Changed cachemgr stats/objects listing format. - Added some missing "entry->refcount++" - Changed StoreEntry->timestamp to be the last verification time. (was the stored-on-disk time). - Fixed stuck objects from "304 Not Modified" responses without final blank line. - Added failure detection to icmpRecv(). - Fixed backwards logic in debug_trap(). - Fixed neighbor caches remaining in 'DEAD' state. Reorganized handling ICP replies so neighborsUdpAck gets called for most every reply. Changes to squid-1.1.beta7 (October 14, 1996): - Combined and renamed comm_set_select_handler() functions. - Fixed netdbPingSite() not checking n->next_ping_time. - Fixed acl.c to use regular gethostbyname() because IP cache isn't initialized while reading config file. - Linked ftpget with debug.o and removed lib/debug.c, lib/log.c. - Fixed matchDomainName() coredump for late ICP packets. - Removed date string from syslog messages. - Fixed ftpget BASE HREF. - Fixed pinger to check squid socket every 10 seconds. Changes to squid-1.1.beta6 (): - Fixed lots of function prototypes, etc (Ed Knowles). - Added multicast patch (Martin Hamilton). - Replaced 'struct hostent' with 'struct ipcache_addrs' in IP cache. - Added ipcacheCycleAddrs() to round-robin IP addresses. - Added ipcacheRemoveBadAddr() to remove addresses from failed connect()'s. - Changed comm_connect() to comm_nbconnect() and removed other nonblocking connection handling code from other modules. - Improved cache memory usage. Now cache_mem specifies the size of the in-memory data pool. Hot objects use whatever space is not used by in-transit objects. - Removed 'max_hot_object_size' config option. - Fixed virtual-host coredump bug (Aaron Hopkins). Changes to squid-1.1.beta5 (October 7, 1996): - Fixed coredump in storeFreeMemory(). - Fixed displaying repeated IP addresses in IP cache contents. - Added parent/sibling modifiers to cache_host_domain lines. - Added 'miss_access' to restrict fetching HTTP MISS requests. Use this to force your peer caches to use you as a sibling and not as a parent. - Added browser ACL patch (Carson Gaspar). - Added reading ACLs from file patch (Arjan de Vet). - Squid-1.0 changes up to 1.0.18. - Added release/cleanup functions to net_db.c. - Added 'minimum_direct_hops' config option. Changes to squid-1.1.beta4 (September 26, 1996): - Fixed coredump in icpStateFree() when calling checkFailureRatio(). - Added more stuff to net_db.c. - Fixed memory leak in stat_ipcache_get(). - Changed __P back to _PARAMS. - Fixed authorization parsing bug in ftp.c (Yoichi Shinoda). - Allow ICP socket on priveledged ports. - Added trap for STORE_PENDING objects when lock_count == 0. - Replaced 'cache_hot_vm_factor' with 'max_hotvm_obj_size'. - Moved ICMP socket to external 'pinger' program. - Moved tvSubMsec() to lib/util.c. - Moved accessLogTime() to debug.c. - Fixed handling of race condition in icpHandleIMSReply(). - Fixed "\r\n\0" bug in gopherSendRequest(); - Fixed cachemgr output for non-table browsers (Cord Beermann). - Moved accept() for dnsserver into Squid. - New SVR4 config stuff in contrib directory (Markus Gyger). - Includes squid-1.0 changes up to 1.0.17. - Fixed storeWriteCleanLog() bug which caused released objects to be kept. - Added *FreeMemory() routines. Changes to squid-1.1.beta3 (September 16, 1996): - s/()/(void)/ - Fixed 8k page leak in icmpRecv(). - Use strerror() if available instead of sys_errlist[]. - Misc ANSI-related cleanup. - Added 'cache_stoplist' to specify things which should never get saved to disk. - Merged some parsing routines into parseWordlist(). - Fixed icpHandleIMSReply() bug when HTTP reply headers received in multiple reads. - Changed all ipcache_nbgethostbyname() handler functions to be void. - Fixed bug when storeLockObject() fails for UDP_HIT_OBJ replies. - Simplified storeGet(). - Removed meta_data.hash_links member. - Includes squid-1.0 changes up to 1.0.16. - s/__STRICT_ANSI__/__STDC__/g Changes to squid-1.1.beta2 (September 12, 1996): - Switched to ANSI style coding. - Fixed UDP_HIT_OBJ objects ignoring 'proxy-only' setting. - Added setting cachemgr.cgi fields from query string (Neil Murray). - Split log type TCP_IFMODSINCE into TCP_IMS_HIT and TCP_IMS_MISS - Replaced proto_hit() and proto_miss() with proto_count() which looks at log_type argument to calcultate hits and misses. - Split CacheInfo into HTTPCacheInfo and ICPCacheInfo. - Placed call to proto_count() just after log_append() so we only need it in one place. - Made a lot of proto.c functions static and added prototypes. - Fixed icpProcessRequest() bug. Need to check EXPIRED before IMS. - Fixed aclDestroyDenyInfoList() to NULL free'd lists. - Fixed storeDirClean() to unlink files which should be directories (Cord Beerman). - Added ICMP support. Source ping will use ICMP packets if compiled with -DUSE_ICMP=1 and started with root privleges. Changes to squid-1.1.beta1 (September 12, 1996): - Fixed stupid coredump bug in storeGetSwapSpace(). - Cleaned up gopher.c; prototypes, make functions static, etc. - Added READ_DEFERRED entry flag. Only extend lifetime when first entering deferred mode. - Added debug_trap() to replace some fatal_dump()'s. Now use debug_trap for non-fatal errors. If -C option is set, then debug_trap is the same as fatal_dump. Changes to squid-1.1.alpha18: - Fixed storeCheckPurgeMem() to both 'purge' *and* 'release' objects as needed. - Fixed up RWStateCallbackAndFree() to prevent it from getting called twice. - Added 'deny_info' support for redirecting denied requests to a specific URL (maex@space.net). - Fixed protoUnregister() to not abort objects being swapped in. - Fixed parent-stays-dead-bug by removing PING_WAITING check in icpHandleIcpV?(). - Changed debug log timestamp format. - Fixed coredump-causing bugs in icpHandleIMSReply(). - Fixed FMR bug in neighborsUdpAck() for UDP_HIT_OBJ replies. - Fixed up InvokeHandlers() to clear handler before calling. - Added -k signal option to signal a running Squid (Markus Gyger). - Removed dynamic_array code. Changes to squid-1.1.alpha17: - Added more IMS support. Now Squid issues IMS requests for expired objects in the cache. Log type will be either TCP_EXPIRED_HIT if the server sends "304 Not Modified" or TCP_EXPIRED_MISS if the server send a new object. - Added Config.expireAge and 'expire_age' to config. - Fixed storeGetMemSpace() bug; need to check storeCheckPurgeMem() instead of storeEntryLocked(). - Renamed icp_hit_or_miss() to icpProcessRequest(). - Changed mkrfc850() to use normal variable instaed of a pointer. - Removed store_entry member from fd_table[] in comm.h. - Changed httpSendRequest to not tack Squid onto the 'User-Agent' line, Use HTTP/1.1 'Forwarded' instead. - Removed icpProcessHIT() which only called icpSendMoreData(). - Removed icpProcessIMS() which only called icpGetHeadersForIMS(). - Removed some 'Reset header fields for reply' crap. - added old_entry member to icpStateData for handling IMS requests. - Added 'locks' member to ipcache_entry; need to lock an ipcache entry during ipcache_call_pending(). - Removed ipcache_call_pending_badname(). - Cleaned up setting/clearing IP_LOOKUP_PENDING bit. - Removed storeEntryLocked() trap in storePurgeMem(). - Added storeCheckExpired(). - Removed storeWalkThrough() and removeOldEntry(), changed storePurgeOld() to do the walking through instead. - Added storeConfigure() so HUP signal affects store_swap size. - Replaced some parsing functions with parseMinutesLine(). - Added StoreEntry flag bit ENTRY_NEGCACHED. - Added storeNegativeCache(). Changes to squid-1.1.alpha16: - Fixed ipcache TTL bug from new ipcache_parsebuffer(). - Copied recent ipcache.c changes to fqdncache.c - Copied icpHandleIcpV2() fix to icpHandleIcpV3(). - incorporate squid-1.0.12 changes. Changes to squid-1.1.alpha15: - Removed 'bad swap_status' trap in icpHandleIcpV2. Now skip ICP replies for StoreEntry's with ping_status != PING_WAITING. - Fixed numerous compiler problems. Changes to squid-1.1.alpha14: - Fixed ENTRY_DISPATCHED bug. ENTRY_DISPATCHED was not always getting set (e.g. for requests matching hierarchy_stoplist). This could cause multiple calls to storeAbort() for the same entry. - With ENTRY_DISPATCHED now fixed, call squid_error_entry() from protoUnregister() for StoreEntries which have not been dispatched. - Fixed 'quick_abort' parsing bug. - NULL terminate too-long URL strings in urlParse(). Still need fix to somehow handle these. - Added shadow password patch from John Saunders - Added _dns_ttl_ hack from bne@CareNet.hu to get real TTL values from DNS queries. See Release-Notes-1.1.txt for more info. - Added better '304 Not Modified' reply from Jaeyeon Jung . - Rewrote ipcache_parsebuffer(). - Fixed stupid clientProxyAuthCheck() bugs. - Made IP cache size configurable with 'ipcache_size'. - Fixed bug parsing 'cache_swap_low'. - Added -b option to ftpget to limit data transfer rate (bytes/sec). Specify on 'ftpget_options' in config file. - Miscellaneous filedescriptor management cleanup. - Renamed function getFromCache() to protoStart(). - Added delays when forking dnsservers, redirectors, and ftpget. - Includes 1.0 changes up to 1.0.11. Changes to squid-1.1.alpha13: - oops, there was no alpha13. Changes to squid-1.1.alpha12: - Rewrote storeGetMemSpace(). - Fixed hot_vm accounting; only count objects which are added to the IN_MEMORY table. - Changed protoUndispatch() to never call squid_error_entry(). Should fix storeSwapOutHandle() and 'HELP! Someone is swapping out a bad entry' coredumps. - Report all error pages to the debug log. - Added -i option which forces IP cache entry to be invalidated just after an object retrieval begins. - Includes all squid-1.0 changes up to squid-1.0.10. - Added patch from srb@cuci.nl (Stephen R. van den Berg) for - ttl_force_pattern - quick_abort min pct max - Added a proxy authentication patch from Jon Thackray . Must add -DUSE_PROXY_AUTH=1 to src/Makefile. - Cleaned up calling maintenance functions from main(). Changes to squid-1.1.alpha11: - Fixed sscanf() bug in storeDirClean() - Fixed coredump in squid_error_entry() on Config.errHtmlText. - Added redirector stats entry to cachemgr.cgi. - Call ipcache_purgelru() during an idle timeout. - Changed fqdnFromAddr() to copy inet_ntoa() result into a static buffer. - Fixed storeDirClean() printf format. Changes to squid-1.1.alpha10: - Fixed directory increment bug in storeDirClean(). - Misc little changes trying to track town random coredumps. - Includes all squid-1.0 changes up to squid-1.0.8. Changes to squid-1.1.alpha9: - Fixed parsing of redirected URLs. - Changed URL redirection to pass in client address, ident, and method. - Fixed NULL pointer coredump in log_append(). - Don't swap negative-cache objects to disk (storeCheckSwappable()) - Only purge MemObject if entry is swapped to disk. - Includes all squid-1.0 changes up to squid-1.0.7 - Fixed purify free memory errors in clientAccessCheck(). Changes to squid-1.1.alpha8: - Removed all references to hierarchy.log. - Changed hierarchy_log_append() to hierarchyNote() and added _hierarchyLogData structure. - Fixed "tty input" bug where a reverse lookup request was written to stdout. - Cleaned up pointers in protoUnregister(). - Includes all squid-1.0 changes up to squid-1.0.6. Changes to squid-1.1.alpha7.BuGless: - cache_swap 0 is allowed (proxy only server, no swapping), mainly intended for fast maintenance startups where the system already has to be running, but the disk(s) have not been fsck'd yet. - quick_abort actually works now - quick_abort functionality made conditional - ttl_pattern storage wasn't being cleaned upon a reread of the config file (the patterns were added only, got duplicates) - ttl_force_pattern a new config option to override the settings of certain pages despite (or because) of enforced low expiry times - Reduced the struct sentry size. Moved some attributes to mem_obj, eliminated some. On typical 32-bit machines the size was 52 bytes, now it's 32. - Reduced /cache/log file size (still compatible with old format) Changes to squid-1.1.alpha7: - Added 'tcp_recv_bufsize' option to config. - Changed NEIGHBOR to SIBLING where appropriate. - Split UDP_HIT_OBJ into {PARENT,SIBLING}_UDP_HIT_OBJ - Misc casts and cleanup from running Insight. - Replaced all get*() functions with direct references to Config structure. - Removed 'http_stop', 'ftp_stop', and 'gopher_stop' from config. - Added 'ssl_proxy' config for forwarding all SSL requests to another proxy. - Includes all squid-1.0 changes up to squid-1.0.5. Changes to squid-1.1.alpha6: - Changed storage manager to use a two level directory structure. This makes squid-1.1 incompatible with squid-1.0! - Added last modification time to the StoreEntry structure, and the swap log. - Changed how memory passed to comm_write() gets freed. Now pass in a free handler function which gets called when the RWStateData structure is destroyed. - Other misc cleanup. - Added a reverse-address-lookup cache (``fqdncache''). - Added support for threaded ACLs for destination IP addresses and source hostnames. - Use aclMatchDomainList() instead of aclMatchWord() for domain names. - Renamed cachemgr 'stats/general' to 'stats/ipcache'. - Added 'log_fqdn' option to config file. - Added 'client_netmask' to config file. Changes to squid-1.1.alpha5: - Got Asynchronous I/O stuff to compile and run on IRIX 5.3 - Cleaned up diskHandleWrite() - Added free() handler to struct dwrite_q so diskHandleWrite() can free memory after its been written. - Changed file_open() to not allow files to be opened O_RDWR. - Changed file_open() to always set O_APPEND for O_WRONLY files. - Includes all squid-1.0 changes up to squid-1.0.2. Changes to squid-1.1.alpha4: - Fixed Asynchronous Disk I/O routines to basically work. - Fixed memory write bugs when using the redirector. - Added support for non-anonymous FTP urls without needing a password in the URL. Changes to squid-1.1.alpha4: - Changed cachemgr detailed filedescriptor info to be a separate item. - 'no-cache' reload now discards bad IP cache entries too. - Added 'echo request' URL hack: http://cachehost:3128/echo - Added URL redirector feature. - Addeed 'ident_lookup' option to config file - Fixed http to never rely on blocking IP cache lookups. - Removed need for locked IP cache entries. - Changed free page stacks to always free pages if more than 'max' are allocated. Changes to squid-1.1.alpha3: - Added Asynchronous Disk I/O routines from Pete Bentley. (NOTE, not yet working for IRIX 5.3). - Made squid native access log the default format. Changes to squid-1.1.alpha2: - Added support for RFC931/ident ============================================================================== Changes to squid-1.0.18 (October 7, 1996): - Added INADDR_NONE to cachemgr.c for Solaris. - Added checks to deal with Harvest Cached neighbors which don't handle Squid's ICP version 2. Changes to squid-1.0.17 (September 24, 1996): - Fixed cachemgr.cgi to handle an arbitrary IP address (Ron Gomes) - Fixed syslog() calls to use syslog(X, "%s", buf) (Yoichi Shinoda). - Copied ipcache locking stuff from v1.1. - Copied httpConnect() from v1.1 for non-blocking DNS lookups. - Fixed "\r\n\0" bug in gopherSendRequest(); Changes to squid-1.0.16 (September 16, 1996): - Fixed shadow passwd support (John Saunders). - Added checkFailureRatio() to detect high fail:success ratios and go into ICP "hit only" mode for 5 minutes when the ratio exceeds 1. - Added ip_acl_destroy() to reset 'local_ip' and 'firewall_ip' on HUP signal. Changes to squid-1.0.15 (September 13, 1996): - Fixed stupid bugs from moving icpState->flags to request->flags. Changes to squid-1.0.14 (September 13, 1996): - Added '#if DELAY_HACK' code for Mike Groeneweg . - Fixed debug bug in ttlSet(). - Moved icpState->flags to request->flags. - Fixed edgeWouldBePinged() to skip SIBLINGS and NO-CACHE requests. - Fixed bad SET/TEST in httpProcessReplyHeader() (Miguel A.L. Paraz). Changes to squid-1.0.13 (September 12, 1996): - Fixed ftpget parsing PASV reply bug (Carson Gaspar). - Forced include of for NeXT (Holger Hoffstaette). - Promulgate tcp_outgoing_addr to ftpget with -o option (Edward Moy). - add Date: header to Squid-generated Gopher objects (Geoffrey Keating). - cachemgr.cgi HTML fixes (Cord Beermann). - Collapsed some config parsing functions to parseOnOff(). - Added config option: memory_pools on|off - Added config option: udp_hit_obj on|off - Added config option: forwarded_for on|off - Copied better stmem.c and stack.c routines from v1.1 code. - Added support for HTTP/1.1 Cache-Controls 'private' and 'no-cache'. - Copied dnsserver "hello/alive" test from v1.1 code. Changes to squid-1.0.12 (September 3, 1996): - Fixed urlCheckRequest() to allow CONNECT/SSL requests. - Change default socket send/receive buffers to 16k (in configure) instead of 8k, mainly for Solaris. - Fixed urlParse() to remove trailing dots from hostnames. - Added 'ttl_pattern/i' config tag for case-insensitive regular expressions. - Fixed swapin_complete_handler FMW bug in storeSwapInHandle(). - Removed 'Invalid object detected' trap in storeValidToSend(). Changes to squid-1.0.11 (August 30, 1996): - Fixed ENTRY_DISPATCHED bug. Now set ENTRY_DISPATCHED only in getFromCache(). - Added missing newlines to a number of debug messages. - NULL-terminate long URL's in urlParse(). - Changed configure to remove libmalloc for FreeBSD - Changed ftpget to assume a single space between date and filename in Unix sytle listings. - Added urlCheck() to check for supported method/protocol combinations and return "501 Not Implemented" when appropriate. - Added ftpget check for negative port numbers in PASV reply. - Added shadow password support for cachemgr shutdown. Changes to squid-1.0.10 (August 26, 1996): - Fixed INADDR_NONE not being set for ftpget.c. - Remove "Connection: Keep-Alive" lines from HTTP requests since Squid doesn't support them. - Fixed IP Address/netmask bug. Now 1.2.3.4/255.255.255.0 is equivalent to 1.2.3.0/255.255.255.0. Changes to squid-1.0.9 (August 22, 1996): - Cleaned up ipcache_purgerlu(). - Fixed ipcache_gethostbyname() to release expired entries. - Added check for numeric addresses to ipcache_nbgethostbyname(). - Added Date: field to ftpget's HTTP header output. - Added temporary hack to httpProcessReplyHeaders() to allow caching of non-HTTP objects fetched from neighbors when the header does not have Date, Expires, or Last-Modified. - Added a check for a valid ICP socket before sending ICP queries. - Fixed SSL code to unregister DNS lookups if client aborts. - Removed lib/host_cache.c from distribution. - Made IP cache stats output sorted by last reference. - Added ICP internet-draft to docs directory. Changes to squid-1.0.8 (August 19, 1996): - Added ftpget fixes from carson@lehman.com and moy@parc.xerox.com. - Fixed -s option to enable syslog logging. - Added 'err_html_text' for configurable error messages. - Fixed protoDispatchDNSHandle() to not try a direct fetch if host is beyond firewall_ip list. - Changed storeDirClean() to handle one directory per call and not keep the dirhandle open between calls. - Changed .zip MIME type to "application/x-zip-compressed". - Added new 'url_regex' ACL type, regular expression match over the whole URL. - Removed xrealloc() call from storeClientListAdd(). Changes to squid-1.0.7 (August 14, 1996): - Added "store_clean" routines to periodically remove orphaned swap files. - Increased StoreEntry->method_t from 3 to 4 bits, probably fixes storeGenerate*Key() coredumps. - Added debugging to examine_select(). - Added peer address to debugging for Ignored ICP packets. Changes to squid-1.0.6 (August 12, 1996): - Fixed coredump in icpStateFree() for bad requests. - Fixed configure bug in determining FD_SETSIZE. - Fixed garbage collection to stop if SIGTERM received. - Fixed pid file to be written just before 'ready to serve requests'. - Fixed CheckQuickAbort() lock_count bug. - Fixed setting the hierarchy code for access.log when the hierarchy.log is disabled. - Fixed urlParse() to fail for URLs longer than MAX_URL bytes. - Fixed icpDetectClientClose() to detect TCP half-close and not abort the connection. Changes to squid-1.0.5 (July 25, 1996): - Added ICP_OP_RELOADING to be used instead of ICP_OP_DENIED for -Y option. - Moved hierarchy_code for access.log from MemObject to request_t so simultaneous client readers don't get the same hierachy code. Changes to squid-1.0.4 (July 24, 1996): - Fixed ftpget logic/precedence bug - Fixed ttlSet() to choose TTL as offset from when the object was originally served, not the current time. - Fixed configure bug with setting GETTIMEOFDAY_NO_TZP. - Removed unnecessary call to ipcache_gethostbyname() in sslConnect(). - Fixed stupid memset() bug in gopher.c causing a huge block of stack memory to be zeroed. Changes to squid-1.0.3 (July 18, 1996): - Fixed FTP to send 'Ascii' or 'Binary' based on MIME encoding, not content-type. - Changed icpHierarchical() to allow IMS requests to neighbors if they all support Squid's private keys. - Fixed icpUdpSend() to not ask for a HIT_OBJ reply if the HTTP request included 'Pragma: no-cache'. Changes to squid-1.0.2 (July 16, 1996): - Fixed HTTP code in access.log for TCP_IFMODSINCE requests. - Fixed SSL to not read again until previous write is complete. - Added CPU usage percentage in cachemgr 'info' output. - Fixed bug when removing a neighbor. Forgetting to decrement friends->n causes a duplicate ICP query to be sent in neighborsUdpPing(). - Increased some MAX_URL sized character buffers to prevent overflows. Changes to squid-1.0.1 (July 8, 1996): - Fixed ftpget server looping on socket EOF condition. - Fixed SA_RESETHAND undefined bug. - Fixed half-hour timezone offset bug. - Fixed parse_rfc850() to return -1 instead of 0 upon error. - Added patch for Motorola systems from Tony Lorimer. - Added support for HTTP PUT method. - Added check for for HP-UX. - Added GNU General Public License. - Changed ttlSet() to use Date field if Last-Modified is absent. - Changed http.c to not save objects from neighbors which do not have Date, Last-Modified, or Expires values. - Changed some large local character arrays to static. Changes to squid-1.0.0 (July 1, 1996): - Fixed beta17 "fd_lifetime" typo bug - Added 'firewall_ip_list' to configuration options - Set resolver options to disable searching default domains and parent domains. - Added blocking-rebuild -F option. - Fixed storeMaintainSwapSpace to be called every 10 seconds. - Fixed ICP_HIT_OBJ bug causing objects to get stuck in VM. - Fixed matching the ends of domain names (e.g. bar.com no longer matches foobar.com). - Fixed checking return code from fprintf() while writing the clean swap log. - Fixed fatal_dump from storeSwapoutHandle running out of disk space. - Added disabling of a neighbor cache if 95% of replies are UDP_DENIED. - Added accounting for misc memory/data structures - Added 'no-query' option for 'cache_host' config line - Added error reporting to SSL requests. - Fixed SSL bug, client abort was not closing the server side connection. - Fixed checking hierarchy_stoplist bug. - Fixed ipcache error messages by giving each entry its own string. - Use sigaction() instead of signal() if available. - Fixed ipcache bug causing some lookups to get stuck in PENDING state if all dnsservers are busy. - Fixed domain name matching bug when using '.com' instead of 'com'. - Fixed close_handler coredump bug in comm.c. - Removed unnecessary DNS lookup of hostnames in WAIS URLs. Changes to squid-1.0.beta17 (June 12, 1996): - Fixed another ipcache coredump problem where an entry could be released between writing to and reading from dnsserver. - Fixed store.c bug of purging aborted objects. - Cleaned up checkLifetimes() function to make it simpler. - Added visible_hostname support to ftpget. - Fixed null edge dereferencing bug for UDP_HIT_OBJ. Changes to squid-1.0.beta16 (June 10, 1996): - Fixed two coredump-causing bugs in ipcache_unregister(). - Changed 'close_handler' to a linked list. - Changed freeing of protodispatch_data structures to use new close_handler (attached to client FD). - Fixed URL handling to accomodate browswers which do not handle relative URL parsing. Changes to squid-1.0.beta15 (June 9, 1996): - Fixed storeSwapoutHandle coredump bug - Fixed DNS lookup failure of neighbor hosts after a few hours of operation - Changed memcpy() to memmove() for overlapping memory copies - Changed store rebuidling to unlink the log-last-clean file in case of a crash during rebuild - Added forwarding loop detection - Changed all memcpy to use xmemcpy which is memmove, bcopy, or memcpy. - Fixed coredump bug from partial dnsserver reads, manifest on FreeBSD and NetBSD. Changes to squid-1.0.beta14 (June 7, 1996): - Fixed coredump bug in icp.c when generating ``Not Modified'' replies. - Fixed SSL bug which assumed the requested host name would already be in the IP cache. - Fixed names of generated HTTP reply headers. Changes to squid-1.0.beta13 (June 7, 1996): - Fixed coredump bug where StoreEntry key was free'd too soon. - Fixed UDP_HIT_OBJ bug: cancel the hierarchy timeout and set the ping_status to DONE for UDP_HIT_OBJ replies. Changes to squid-1.0.beta12 (June 6, 1996): - Fixed problem when using udp_outgoing_addr where no ICP packets would be recieved because they were getting sent to the "outgoing" instead of the "incoming" socket. - Fixed objects hanging around in cache after a keychange. - Added ability to restrict neighbor caches with ACLs. ('cache_host_acl'). - Fixed ssl FD mismatch bug. - Fixed INADDR_NONE bug on 64bit systems. - Fixed store rebuilding bug; temporary log file was not being truncated. - Made all external processes communicate with TCP sockets (no more Unix domain sockets). - Semi-major rewrite of ipcache implementation. - Fixed a couple memory bugs found by purify. - Fixed sending large (>8192 bytes) HTTP requests. - Added "lazy" server IP address ACL checks (type 'dst'). - Changed handling of IMS requests. Now will return "304 Not Modified" if the requested object is in the cache and not expired. Changes to squid-1.0.beta11 (June 1, 1996): - Fixed serious memory leak of MemObject->reply structures. Changes to squid-1.0.beta10 (May 31, 1996): - Fixed bug when request arrives in fragmented IP packets. - Fixed ACL bug which denied cache manager access while in httpd_accel mode. - Changed ftpget to "fail nicely" for sites which do not allow PORT requests (if compiled with PASVONLY). - Fixed Unix domain socket off-by-one bug in ftpget. - Fixed lingering sockets after shutdown by SIGTERM. - Added dnsserver use histogram to ipcache stats. - Changed domain ACL's to match only the end of the hostname, not just anywhere in the string. - Fixed setuid bugs when pid_filename was not defined - Fixed zero-sized object getting stuck in VM. - Configure checks for working UNIX domain stream sockets - Rotate cache.log before the others - SIGUSR2 now toggles between full and normal debugging - Close and restart ftpget server during logfile rotation - Added memory pools for request_t and MemObject data structures. - Added new address binding options for more control Changes to squid-1.0.beta9 (May 23, 1996): - Fixed storeToString() coredump bug on 'swap_buf' - Added back the CIDR notation functionality to decoding IP address ACLs. - Fixed ftpget listing parsing coredump bug. - Fixed neighborsUdpAck() coredump for late-arriving ICP replies. Changes to squid-1.0.beta8 (May 22, 1996): - More friendly CFLAGS and LDFLAGS for configure - ACL_ALLWEEK bugfix - Added missing increment of UDP connection counter. - Changed ftpget select to check for EWOULDBLOCK/EAGAIN (workaround for broken Solaris select(2)). - Fixed MALLINFO calls for Linux - Fixed strerror() problems on SunOS 4.1.x - Fixed DefaultAnnounceRate; set to zero by defult. - Changed all port variables to u_short. - Created AF_UNIX versions of comm_open(), comm_connect(). - Changed ftpget server to use UNIX domain socket. - Removed RESET_SIGNAL_HANDLER check--always reset the signal handler. - Added instrumentation of basic IPCache stats. - Fixed calculation of neighbor average RTT. - Added 'outbound_addr_list' to config - Change getFirstParent() to getFirstUpParent(). - Changed ftpget to use an additional pipe() for crash detection - Added ICP_OP_DENIED message type - Added patches for Nextstep port from Luke Howard - Added a lifetime to HTTP server connections being deferred. - Added IP address ranges in 'src' ACLs - Added FQDN's in 'src' ACLs - Fixed request structure free-memory-read/coredump bug. - Changed icp.c to select on client socket to detect aborts. - Better compliance with HTTP/1.1 *DRAFT* regarding which reply codes can be cached. - Added 'hierarchy_stoplist' configuration option. - Changed mallopt option M_MXFAST to 512 bytes. - Added -Y option to only return UDP_HIT or UDP_DENIED during store reload. - Added UDP_HIT_OBJ type. Just like a UDP_HIT, but object data is returned in the UDP packet if it will fit; saves a TCP connection. Not compiled in by default, add -DUDP_HIT_WITH_OBJ to src/Makefile DEFINES. Changes to squid-1.0.beta7: - Fixed comm_udp_sendto continuous loop bug - Fixed URLs-with-colon-but-no-port-number bug - Fixed sending ICP queries for HEAD requests - Changed 'server_list' output. Added RTT, Fetches, Hits, Misses, and percents. - Fixed setuid bug causing some logs to be owned by root. - Fixed virtual host mode (-V option) - Added read(2) instrumentation for HTTP and FTP. - Changed neighbor initialization to continue if DNS lookup fails. - Lint cleanup Changes to squid-1.0.beta6: - Fixed null error message coredump in ftpget. - Added -m Method option to `client'. - Fixed ftpget server bug with missing trailing slash. - Removed 'connect_ports' from config, use general ACLs instead. - Changed requested listen queue length to 1/4 of getMaxFD(). - Rewrote SSL/CONNECT handlers. Now doesn't use a StoreEntry. - Fixed some aborted objects getting stuck in VM bug. - Fixed ftpget PASV reply sscanf to work for VMS ftpd. - Changed FTP URL parsing to use urlParse(). - Changed ftpget to skip RETR command if URLs ends with '/'. - Changed ftpget to display README at the bottom if there are other server messages. - Changed ftpget to not reopen a new data connection if one is already open. - Fixed handling of FTP URLs with spaces (and other unsafe characters) - Changed ftpget to only generate BASE HREF if the FTP URL does not end with '/'. Changes to squid-1.0.beta5: - Fixed cachemgr to send 'HTTP/1.0' on request so it works with beta4 fixes to icp.c. Changes to squid-1.0.beta4: - Added a handler to restart the ftpget server. - Fixed access checks for ICP by parsing the requested URL. - Added "magic marker" to ftpget-generated errors so they can be negative-cached. - Added a small run-time check to configure to see if signal handlers should be restarted after invocation (ala SYSV). - Determine Maximum filedescriptors in configure and change FD_SETSIZE if needed. - Changed read stall algorithm for HTTP. No don't wait until the object is in DELETE_BEHIND mode to stall the server read and wait for the client to catch up. Also changed from 4k to 16k read buffer. - Fixed HTTP request parsing to check for blank line at the end of all requests. Symptoms were "connection reset" messages. Changes to squid-1.0.beta3: - Added ftpget '-C minport:maxport' option - Fixed PROTO_MAX fencepost bug in stat_init(). - Fixed Fixed CheckQuickAbort() coredump. - Fixed disabling store.log and hierarchy.log when set to "none" - Fixed numerous problems related to setuid(). - Fixed 'check_cache.pl' to use new swaplog format (without "FILE"). - Fixed ACL coredumps when checking NULL words. - Changed pid_filename to be written and unlinked as root. - Added "-i seconds" option to 'client' for testing IMS GET. - Fixed a bug where an IMS request caused the valid object to get ejected from the cache. - Fixed continual DEAD_PARENT/REVIVE bug - Fixed ERR_INVALID_URL bug for URLs with a password field. - Added to Release-Notes info about converting 'cache/log' and difference between stoplists and ttl_pattern. Changes to squid-1.0.beta2: - Fixed /bin/csh "$#argv" leftover in RunCache. - Fixed ACL day-of-week bitmask bug. - Fixed missing checks for WAIS in some places. - Fixed chdir(swappath(0)) bug; do chdir() after storeInit(). - Changed enumerated structure members to be defined outside of the structure itself (for AIX). - Changed ftpget to fork before reading the request and make sure the entire request is read. Changes to squid-1.0.beta1 (Apr 19, 1996) from Harvest cached-1.4.pl3: - Added a "server mode" to ftpget. Now the (much smaller) ftpget process forks for each FTP request. - Added support for If-Modified-Since GET requests. - Added support for SSL and https objects. - Added background processing for rebuilding the disk store while serving requests. Cache can now serve requests immediately. - Added a 'reconfigure' feature activated by SIGHUP. The config file is re-read and most changes will take effect. - Added an internal flag for using private keys with ICP queries to neighbors. If any neighbor returns a reqnum field of zero, then disable using private keys. But still use private keys for things with bypass the ICP query step (such as POST and IMS-GET). - Added a function to verify content-lengths. Objects with mismatched (but non-zero) content lenghts will be ejected. - Added clean shutdown mode. On SIGTERM the incoming HTTP socket is closed. Active clients are given a lifetime of 30 seconds (configurable). Process exits when all sockets are closed. - Added support for large POST objects. - Added "store.log" which logs RELEASE/SWAPIN/SWAPOUT events. - Added announce feature to squid; no longer external program. If enabled, a running cache will announce itself every 24 hrs. - Added support for FTP URLs with non-default ports. - Added new Access Control List scheme. - Added Forwarded: header to proxy HTTP requests (HTTP/1.1 feature). - Added weights neighbors. - Added urlParse() which strips off default ports and makes hostnames all lowercase. - Added (section,level) debugging and 'debug_options' config line. - Added 'pid_filename' to configuration file. - Added 'visible_hostname' to configuration file. - added 'ftp_user' to configuration file. - added 'dns_positive_ttl' to configuration file. - added 'dns_negative_ttl' to configuration file. - Added 'shutdown_lifetime' to configuration file. - Fixed bug where cache process would "spin" on large objects being deferred. - Fixed byte order conversion bug on setting echo port. - Changed meaning of command line -b (buffered logs) option. Now the default behaviour is unbuffered logs, use -b to make them buffered. - Changed WAIS code to always be fully compiled in. - Changed the storage manager to use the notion of private and public keys. Requests are now private until the reply headers have been read. - Changed access logging significantly. Entries to "access.log" are written when the client connection closes. Every connection is logged exactly once, always with a valid size. - Changed access log format (non-common) to include request method and sub-second timestamps. - Changed handing of ECONNRESET (connection reset) errors. Now treated like any other read error. - Changed 'rotate logs' to be activated by SIGUSR1. - Changed configure script to look specifically for tm_gmtoff and set HAVE_TM_GMTOFF. - Changed configure script to look specifically extended mallinfo structure and set HAVE_EXT_MALLINFO - Changed ICP reply code to use negative TTL value as UDP_HIT threshold so we never return a HIT on neg-cached objects. - Changed ftpget to use select(2) on I/O for timeouts. ftpget now exits immediately if stdin goes away. - Changed handling of '-z' option. Now only execute 'rm -rf ...' if -U option also given. - Removed the command line -d (debug) option. Use 'debug_options' in config file. - Removed all code and references to binary port. - Removed dual logging to stderr/cache.log. - Removed old IP access controls ('proxy_allow', etc.)