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.) Changes to 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 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.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.beta5: - Fixed cachemgr to send 'HTTP/1.0' on request so it works with beta4 fixes to icp.c. 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.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.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.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.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.beta11 (June 1, 1996): - Fixed serious memory leak of MemObject->reply structures. 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.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.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.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.