ChangeLog
上传用户:liugui
上传日期:2007-01-04
资源大小:822k
文件大小:71k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. Changes to Squid-2.2 ():
  2. - Removed all SNMP specific ACL code
  3.   SNMP now uses generic squid ACL's
  4. - Removed view-based access crontrol
  5. - Cleaned up and simplified SNMP section of squid.conf
  6. - Changed the SNMP code to use a tree stucture.
  7. - Added objects to MIB:
  8. Request Hit Ratio's
  9. Byte Hit Ratio's
  10. Number of Clients
  11. - Changed SNMP Agent to return object instances correctly.
  12. - Added our own assert() macro so we can use debug() instead of
  13.   printing to stderr.
  14. - Added eventFreeMemory().
  15. - Fixed ipcCreate() bug when debug_log has FD <= 2.
  16. - Changed watchChild() and related code in main.c so that
  17.   Squid can behave more like a proper daemon process.
  18. - Added 'prefer_direct' option (enabled by default) so that
  19.   people can give parents higher preference than direct.
  20. - Fixed ipc.c close() bug for async IO.  On FreeBSD,
  21.   comm_close() doesn't work for child processes when async IO is
  22.   used.
  23. - Fixed setting the public key for large ``icons'' (Henrik
  24.   Nordstrom).
  25. - Rewrote peer digest module to fix memory leaks on reconfigure
  26.   and clean the code. Increased "current" digest version to 5
  27.     ("required" version is still 3). Revised "Peer Select" cache 
  28.     manager stats.
  29. - Added "-k parse" command line option: parses the config file
  30.   but does not send a signal unlike other -k options.
  31. - Revamped storeAbort() calling.  Only store_client.c has all
  32.   the right information to determine if the request should
  33.   be aborted.  Now client and server modules just storeUnregister
  34.   without ever needing to call storeAbort.
  35. - Small change of Squid output for FTP (Andrew Filonov,
  36.   Henrik Nordstrom).
  37. - clientGetsOldEntry() sends old entry if new request status
  38.   is in the 500-range (Henrik Nordstrom).
  39. - Changed configure so it works with IRIX6.4 C compiler (broken?)
  40.   option -OPT:fast_io=ON.
  41. - Fixed comm_connect_addr() non-blocking connections for
  42.   SONY NEWSOS (Makoto MATSUSHITA).
  43. - Changed "#ifdef __STDC__" to "#if STDC_HEADERS" as recommended
  44.   by autoconf documentation.
  45. - Fixed client-side cache-control max-age (Henrik Nordstrom).
  46. - Added a new error page: ERR_SHUTTING_DOWN.  fwdStart() returns
  47.   this error if it is called while squid is in the process of
  48.   shutting down.
  49. - Added support for linuxthreads package under FreeBSD (Tony Finch).
  50. - Fixed HP-UX StatHist.c assertions by making the "hbase_f"
  51.   functions non-static (Michael Pelletier).
  52. - Fixed logging of authenticated usernames even if the
  53.   authorization is not cached (Dancer).
  54. - Fixed pconnPush() bug that prevented holding on to
  55.   persistent connections (Manfred Bathelt).
  56. - Pid file now rewritten on SIGHUP.
  57. - Numerous Ident changes:
  58. - Ident lookups will now be done on demand if you use the
  59.   'ident' ACL type.
  60. - The 'ident_lookup on|off' option has been replaced with
  61.   an access list, so you can do lookups only for some
  62.   client addresses.
  63. - Added an 'ident_timeout' option to specifiy the amount
  64.   of time to wait for an ident lookup.
  65. - Added a (local) hit rate to mempool metering.
  66. - FTP Restarts (REST command) is now supported.
  67. - Check for libintl.a on SCO3.2.
  68. - Disable poll() on SCO3.2.
  69. - Numerous Async IO enhancements from Henrik.
  70. - Removed cache_mem_low and cache_mem_high options (Henrik
  71.   Nordstrom).
  72. - Replaced 'persistent_client_posts' with 'broken_posts' access
  73.   list.
  74. - Rewrote the anonymizer.
  75. - Removed the http_anonymizer option.
  76. - Added the anonymize_headers option to allow individual
  77.   referencing of headers for addition or removal. See
  78.   'anonymize_headers' in squid.conf for additional
  79.   configuration.
  80. - Fixed config file parser's handing of optional directives.
  81.   Some people might get new warnings about unknown config
  82.   directives.
  83. - Added 'myip' ACL type.  This is the local IP address for
  84.   connected sockets (Luyer).
  85. - Fixed parsing of FTP DOS directory listings with spaces
  86.   (Nordstrom).
  87. - Numerous DELAY_POOL changes/fixes from David Luyer:
  88. - Makes no-delay neighbors for DELAY_POOLS work by
  89.   using a fd_set with the connections to no-delay
  90.   peers marked in it.
  91. - Makes IP addresses ending in 0 and 255, and
  92.   network number 255, work with individual and
  93.   network delay pools (they were previously not
  94.   permitted, and documented as such).
  95. - Massive overhaul of delay pools code - dynamically
  96.   allocated delay pools, as many as required.
  97. - delayPoolsUpdate stops running if DELAY_POOLS is
  98.   configured but no delay pools are configured.
  99. - Initial delay pool levels are now configurable
  100.   as a percentage of the maximum for the pool in
  101.   question (used to be all set to 1 second worth
  102.   of traffic).  Pools are restored to this level
  103.   on reconfiguratoin.
  104. - Changed storeClientCopy to give a swap-in failure if 
  105.   the number of open disk FD's is above the 'max_open_disk_fds'
  106.   limit.  Otherwise, a very loaded cache will end up with
  107.   all disk files open for reading, and none for writing.
  108. - Added lib/inet_ntoa.c from BSD Unix for systems that have
  109.   broken inet_ntoa().  (Erik Hofman).
  110. - Added more specific FTP error messages for "permission
  111.   denied, "file not found," and "service unavailable."
  112.   (Tony Finch)
  113. - Added xisspace(), xisdigit(), etc, macros to cast function
  114.   args and eliminate compiler warnings.
  115. - Fixed case-sensitive comparisons of domain names (Henrik
  116.   Nordstrom).
  117. - Added proxy-authentication to cachemgr.cgi's requests
  118.   (Henrik Nordstrom).
  119. - Changed Squid to *truncate* rather than *unlink* purged
  120.   swap files.  Can be reversed by undefining 
  121.   USE_TRUNCATE_NOT_UNLINK in src/defines.h.
  122. - Changed internal icon headers to use Cache-control
  123.   Max-age instead of Expires.
  124. - Changed storeMaintainSwapSpace behavior to be adjusted
  125.   smoothly, instead of discretely, between store_swap_low
  126.   and store_swap_high.  This includes the number of
  127.   objects to scan, number to remove, and time until the
  128.   next storeMaintainSwapSpace event.
  129. - Fixed a quick_abort bug that incorrectly calculated
  130.   content lengths.
  131. Changes to Squid-2.1 (November 16, 1998):
  132. - Changed delayPoolsUpdate() to be called as an event.
  133. - Replaced comm_select FD scanning loops with global fd_set
  134.   structures.  Inspired by Jeff Mogul's patch for squid 1.1.
  135. - Moved functions common to dns.c, redirect.c, authenticate.c,
  136.   ipcache.c, and fqdncache.c into helper.c.
  137. - Changed storeClientCopy2() so that it keeps sending the remainder
  138.   of a STORE_ABORTED request, instead of cutting off the client as
  139.   soon as the object becomes aborted.
  140. - Fixed combined ipf-transparent proxy and a local http-accelerator
  141.   operation (Quinton Dolan).
  142. - Rewrote base64_decode.c because of potential buffer overrun
  143.   bugs.
  144. - Configurable handling of whitespace in request URI's.
  145.   See 'uri_whitespace' in squid.conf.
  146. - Added ability to generate HTTP redirect messages from
  147.   the redirector output by prepending "301:" or "302:" to the
  148.   new url.  See FAQ 4.16 for more details.
  149. - Eliminated refreshWhen() which was out-of-sync with refreshCheck()
  150.   potentially causing under-utilized cache digests
  151. - Maintain refreshCheck statistics on per-protocol basis so we
  152.   can tell why ICP or Digests return too many misses, etc.
  153. - Fixed delay_pools.c class2/class3 typo (Simon Woods).
  154. - Changed squid.conf's default access controls to deny all
  155.   HTTP requests.  Admins must write ACL rules to specifically
  156.   allow their local clients.
  157. - Patched French error messages (Mathias HERBERTS).
  158. - NextStep porting fixes by Mike Laster:
  159. - use xstrdup() in cf_gen.c
  160. - check for putenv() in configure
  161. - #define S_ISDIR macro
  162. - Added --disable-poll configure option (Henrik Nordstrom).
  163. - Fixed internal URL hostname case bugs (Henrik Nordstrom).
  164. - Patched ftp.c so we never cache autenticated FTP requests
  165.   (Henrik Nordstrom).
  166. - Fixed FTP authentication. We tried to unescape authentication
  167.   given by basic authentication which is not URL escaped
  168.   (Henrik Nordstrom).
  169. - Fixed HTTP version for common logfile format (Henrik Nordstrom).
  170. - Added 'redirect_rewrites_host_header' option to disable rewriting
  171.   of Host header for redirector responses (Henrik Nordstrom).
  172. - Allow semi-customized error message signatures (Henrik Nordstrom).
  173. - Fixed bug with errors for unsupported requests (Henrik Nordstrom).
  174. - Fixed handling of blank lines in ACL input files (Henrik
  175.   Nordstrom).
  176. - Changed proxy_auth ACL type to consist of a list of valid
  177.   users. REQUIRED == any (same as ident ACL). ACL type user
  178.   changed to ident since this is what it really is.
  179.   (Henrik Nordstrom).
  180. - Fixed long URL bugs; make sure 'log_uri' never exceeds
  181.   MAX_URL bytes.
  182. - Allow comments in external ACL files (Gerhard Wiesinger).
  183. - Added 'range_offset_limit' configuration option.  Requests
  184.   with ranges that start after this value will be passed
  185.   on unmodified, and Squid will not cache the response
  186.   (Henrik Nordstrom).
  187. - Added Client HTTP Hit byte counters to 'counters' output
  188.   (Douglas Swarin).
  189. - Got Squid to compile with --enable-async-io on FreeBSD.
  190. - Fixed infinite loop bug for cachemgr 'config' option.
  191. - Fixed cachability bugs for replies with Pragma: no-cache.
  192. - Made content-type multipart/x-mixed-replace uncachable.
  193. - Y2K fix for parsing dates in "Wed Jun  9 01:29:59 1993 GMT"
  194.   format (Richard Kettlewell).
  195. - Fixed passing -s option to dnsserver processes (Alvaro Jose
  196.   Fernandez Lago).
  197. - Changed proxy_auth to work on internal objects and when in
  198.   accelerator mode. (Henrik Nordstrom)
  199. - Added login=user:password option to cache_peer directive to
  200.   be used from a dial-up cache where the parent requires proxy
  201.   authentication. (Henrik Nordstrom)
  202. - If you want to "auto-login", then use a URL on the form
  203.   http://username:password@server/.... Squid now picks this up
  204.   when going direct, and turns it into basic WWW
  205.   authentication.  It is also possible to do automatic login to
  206.   certain servers by using a redirector to add the needed
  207.   authentication information.  (Henrik Nordstrom)
  208. - Changed refreshCheck() so that objects with negative age
  209.   are always stale.
  210. - Fixed "plain" FTP listings (Henrik Nordstrom).
  211. - Fixed showing banner/logon message for top-level FTP
  212.   directories (Henrik Nordstrom).
  213. * Changes below have been made to SQUID_2_1_PATCH1
  214. - Fixed pinger packet size assertion.
  215. - Fixed WAIS forwarding.
  216. - Fixed dnsserver coredump bug caused by using both -D and
  217.   -s options.
  218. * Changes below have been made to SQUID_2_1_PATCH2
  219. - Fixed EBIT macro bugs when the bitmask is a 64-bit long.
  220. - Fixed proxy auth NULL password bug.
  221. - Fixed queueing of multiple peerRefreshDNS events.
  222. - Added a stack of StoreEntry objects to be released after
  223.   store rebuild completes.
  224. - Fixed NULL pointer bugs with too-large requests (found by
  225.   Martin Lathoud).
  226. - Fixed reading replies from buggy ident servers.  Replies
  227.   might not have terminating CR or LF (Henrik Nordstrom).
  228. - Changed internal StoreEntry key so that the request method
  229.   is encoded as a single octet.  Encoding an enumerated type
  230.   has size and byte-order incompatibilities, especially for
  231.   cache digests.
  232. - Fixed storeEntryLocked so that SPECIAL, but PRIVATE entries
  233.   are not always locked.  This fixes having multiple
  234.   store_digest's stuck in memory.
  235. - Fixed clientProcessOnlyIfCachedMiss so it unlocks and
  236.   unregisters from "cache hit" entries.
  237. * Changes below have been made to SQUID_2_1_PATCH3
  238. - Fixed memory leak in clientHandleIMSReply for
  239.   storeClientCopy failures.
  240. Changes to Squid-2.0 (October 2, 1998):
  241. - Added NAT/Transparent hijacking code from Quinton Dolan.
  242. - Added actual filesystem usage to cachemgr 'storedir' page.
  243.   Only works for operating systems which support statvfs().
  244. - Fixed HTCP compile-time bugs.
  245. - Fixed quick_abort bugs.  Configured values are stored as
  246.   Kbytes, not bytes.
  247. - Removed fwdAbortFetch().  It breaks quick_abort and seems
  248.   mostly useless.
  249. - Changed storeDirSelectSwapDir() to skip swap directories
  250.   when their utilization is over the high water mark ratio.
  251. - Fixed off-by-one bug for dead neighbor detection (Joe Ramey).
  252. - fixed bugs in Content-Range header generation
  253. - changed the way Range requests are handled:
  254. - do not "advertise" our ability to process ranges at
  255.   all
  256. - on hits, handle simple ranges and forward complex
  257.   ones
  258. - on misses, fetch the whole document for simple ranges
  259.   and forward range request for complex ranges
  260.   The change is supposed to decrease the number of cases when
  261.   clients such as Adobe acrobat reader get confused when we
  262.   send a "200" response instead of "206" (because we cannot
  263.   handle complex ranges, even for hits) Note: Support for
  264.   complex ranges requires storage of partial objects.
  265. - Removed SNMP mib-2.system group from squid.
  266.         - Removed SNMP ability to iterate through ipcache and friends.
  267.         - Added SNMP ipcache/fqdncache basic statistics.
  268.         - Converted SQUID-MIB to SMIv2 (RFC 1902).
  269.         - Moved SQUID-MIB to enterprises section of the tree in preparation
  270.           of the split into PROXY-MIB & SQUID-MIB.
  271.         - Corrected minor errors in SQUID-MIB.
  272.         - Moved uptime into cacheSystem from cacheConfig.
  273.         - Corrected a number of get-next-request bugs, snmpwalk should now
  274.           return all objects and not skip some.
  275. - Fixed netdbClosestParent() so it won't return sibling
  276.   peers.
  277. - Fixed a bug with secondary clients on entries with
  278.   ENTRY_BAD_LENGTH set.  We should release the
  279.   bad entry to prevent secondary clients jumping on.
  280. - Changed MIB to prevent parse warnings at startup.
  281. * Changes below have been made to SQUID_2_0_PATCH1
  282. - Fixed a forwarding loop bug.  Even though we were detecting
  283.   a loop, it was not being broken.
  284. - Try to prevent sibling forwarding loops by NOT forwarding a
  285.   request to a sibling if we have a stale copy of the object.
  286.   Validation requests should only be sent to parents (or
  287.   direct).
  288. - Fixed ncsa_auth hash bugs when re-reading password file.
  289. - Changed clientHierarchical() so that by default SSL/CONNECT
  290.   requests do NOT go to neighbor caches.
  291. - Changed clientHandleIMSReply() to not call storeAbort()
  292.   because there can be more than one client hanging on the
  293.   StoreEntry.  This hopefully fixes "store_status !=
  294.   STORE_ABORTED" assertions.
  295. - Added temporary fix to httpMakePublic() to prevent assertions
  296.   (!EBIT_TEST(e->flags, RELEASE_REQUEST)) in storeSetPublicKey().
  297. * Changes below have been made to SQUID_2_0_PATCH2
  298. - PATCH1 introduced a seriously stupid bug which prevented ICP
  299.   queries for all requests.  Fixed by checking
  300.   request->hierarchical in peerSelectFoo().
  301. Changes to squid-1.2.beta25 (September 21, 1998):
  302. - Fixed async IO bugs from adding filedescriptor arg to AIOCB
  303.   callbacks (Henrik Nordstrom).
  304. - Fixed store_swapout.c assertion.  We were freeing object data
  305.   past the swapout_done offset.  This probably happens (only?)
  306.   when an object changes from cachable to uncachable while
  307.   it is being swapped out.
  308. - Added MEM_CLIENT_SOCK_BUF type so we can change the size
  309.   of the buffers used for writing data to the client sockets.
  310. - Added configure check for libbind.a.  If found, it will be
  311.   used instead of libresolv.a.
  312. - Changed fwdStart() to always allow internally generated
  313.   requests, such as for peer digests.  These requests are
  314.   known to fwdStart() because the address arg is set to
  315.   'no_addr'.
  316. - Completed initial HTCP implementation.  It works, but is not
  317.   tested much.
  318. - Added counters for I/O syscalls.
  319. - Fixed httpMaybeRemovePublic.  With broken ICP neighbors
  320.   (netapp) Squid doesn't use private keys.  This caused us
  321.   to remove almost every object from the cache.
  322. - Added 'asndb' cachemgr stats to show AS Number tree.
  323. - Fixed AS Number byte-order bug for netmasks.
  324. - Fixed comm_incoming calling rate for high loads (Stewart
  325.   Forster).
  326. - Give always_direct higher precedence than never_direct
  327.   (Henrik Nordstrom).
  328. - Changed PORT ACL type to accept ranges.  Now you can easily
  329.    deny, for example, all priveleged ports except 80, 70, 21,
  330.    etc.
  331. - ARP ACL fixes for Linux (David Luyer).
  332. - Replaced various "EBIT" flags bitfileds with structures of
  333.   "int:1" members.
  334. - Changed storeKeyPrivate and storeKeyPublic to be a bit more
  335.   efficient by removing snprintf().  This causes an
  336.   incompatibility with old cache keys, however.  To transition,
  337.   we will look up both the new and old style keys for about the
  338.   next 30 days.  After that, if you haven't run this (or a
  339.   future) version, your cache contents will be lost.
  340. - Made the client-side write buffer size configurable with
  341.   a #define in defines.h.  By default it is still 4096 bytes.
  342. - Removed redirectUnregister().  It should be unnecessary
  343.   because of cbdata locks.
  344. - Fixed multiple HEAD request brokennesses (Henrik Nordstrom).
  345. - Changed non-blocking connect(2) code to call getsockopt()
  346.   instead of connect() again.  This is the approach recommended
  347.   by Stevens, and fixes bugs on BSD-ish systems when subsequent
  348.   connect() calls loop with EAGAIN status.
  349. - Added MD5 cache keys to memory pool accounting.
  350. - Added code to track number of open DISK descriptors and stop
  351.   swapping out objects if the number of disk descriptors becomes
  352.   too large.  For now the limit must be manually configured with
  353.   the 'max_open_disk_fds'.  By default, there is no limit.
  354. - Stopped encoding a request method in the high byte of the ICP
  355.   reqnum field.  Instead queried cache keys are copied to a
  356.   static array, indexed by the reqnum, modulo the array size.
  357.   Now we just use the request number to lookup a cache key,
  358.   instead of rebuilding it from the ICP reply URL and method,
  359.   unless we have netapp neighbors--they don't do reqnum
  360.   properly.
  361. - Fixed reconfigure memory access bugs in redirect.c.
  362. - Ignore unreasonably large ICP RTT values which cause overflow
  363.   bugs in calculating the average RTT (thanks Niall!)
  364. Changes to squid-1.2.beta24 (August 21, 1998):
  365. - Added Bulgarian error pages by Evgeny Gechev.
  366. - Changed StoreEntry->lock_count to a u_short.
  367. - Replaced urlcmp with strcmp
  368. - Fixed pragma no-cache ejecting ENTRY_SPECIAL objects
  369.   (Henrik Nordstrom).
  370. - Eliminated unneeded BASE HREF on "root" directories (Henrik
  371.   Nordstrom).
  372. - Fixed peerDigestFetchFinish() assertion caused by forwarding
  373.   failures (e.g. miss_access rules).
  374. - Changed signal handlers with ASYNC_IO and Linux so that
  375.   -k command line options work (Miquel van Smoorenburg).
  376. - Rewrote shutdown code to use events instead of setting 
  377.   FD timeouts.
  378. - Fixed cachemgr 'objects' (statObjects()) by adding a check
  379.   for READ_AHEAD_GAP, and calling storeCheckSwapout() in
  380.   storeBufferFlush().  Otherwise, the read-past pages would
  381.   never be freed.
  382. - Fixed DNSSERVER shutdown bugs.  The re-opened dnsserver processes
  383.   were being closed by the dnsServerShutdown event.
  384. - Modified storeHashInsert() to insert PRIVATE objects at
  385.   the tail of the LRU list, and PUBLIC objects at the head.
  386.   Thus, PRIVATE objects get kicked out quicker.
  387. - Added David Luyer's DELAY_POOLS code.
  388. - Fixed a bug due to HEAD replies which lack the end-of-headers
  389.   line.
  390. - Made proxy-auth realm string configurable (Bob Franklin)
  391. - Changed default mime time to a viewable one (Henrik Nordstrom).
  392. - configure fixes for Sony's NEWS-OS 6.x (Makoto MATSUSHITA).
  393. - Fixed 'you are running out of filedescriptors' bug which
  394.   could cause the HTTP incoming connection handler to not
  395.   be reset.
  396. - Changed syslog logging.  Now squid debug levels 0 and 1 go
  397.   to syslog.  Level 0 gets LOG_WARNING and level 1 gets LOG_NOTICE
  398.   (this needs more work!)
  399. - Fixed memory access errors in statAvgTick().
  400. - Fixed duplicate requestUnlink() bug in forward.c
  401. - Fixed possible memory access bugs from not setting e->mem_obj
  402.   = NULL in destroy_MemObject().
  403. - Deleted TCP_IMS_MISS tag.  Always use TCP_IMS_HIT instead.
  404. - Modified headersEnd and httpMsgIsolateHeaders to account
  405.   for funky line terminations such as CRCRNL.
  406.   (``but Netscape and IE _tolerate_ this'')
  407. - Fixed carp functions (Eric Stern).
  408. - Replaced internal proxy_auth code with extern authentication
  409.   module (Arjan de Vet).
  410. - moved hash.c to libmiscutil.a.
  411. - Fixed handling of ICP queries with whitespace in URLs.
  412.   Now we return ICP error and escape the URL before logging.
  413. - Added configure check for socklen_t (David Luyer).
  414. - Removed USE_SPLAY #defines; it is now standard.
  415. - Added FD arg to async IO callbacks (AIOCB) so we can eliminate
  416.   temporary disk_ctrl_t structures.
  417. - Changed ENOSPC disk write errors to reduce specific cache_dir
  418.   sizes, and not just the size of the cache as a whole.
  419. - Added httpMaybeRemovePublic() to purge public objects for
  420.   certain responses even though they are uncachable.  This is
  421.   needed, for example, when an initially cachable object
  422.   later becomes uncachable.
  423. - Added refresh_pattern options to ignore client reloads
  424.   (Henrik Nordstrom)
  425. - Relocated disk.c code which combines blocks for writing
  426.   (Stewart Forster).
  427. Changes to squid-1.2.beta23 (June 22, 1998):
  428. - Added Turkish error pages by Tural KAPTAN.
  429. - Added basic support for Range requests. For most cachable
  430.   requests, Squid replies with an "Accept-Ranges" header. Upon
  431.   receiving a potentially cachable Range request for a not
  432.   cached object, Squid requests the whole object from origin
  433.   server and then replies with specified range(s) to the
  434.   client. Multi-range requests are supported. Adjacent
  435.   overlapping ranges are merged. If-Range requests are
  436.   supported.  Limitations:  Multi-range requests with out of
  437.   order ranges are not supported.
  438. - Made md5.c use standard memcpy and memset if they are
  439.   avaliable.
  440. - Memory pools will now shrink if Squid is run-time
  441.   reconfigured with smaller value of memory_pools_limit tag.
  442. - Added counter for number of clients (Tomi Hakala).
  443. - Changed neighbor UP/DOWN algorithm to require 10 failed TCP
  444.   connections for UP->DOWN transition.
  445. - Added 'unique_hostname' configuration option when its
  446.   necessary to have multiple machines with the same visible
  447.   hostname.
  448. - Fixed pumpReadFromClient() to not read too many bytes on
  449.   persistent connections.
  450. - We can now cache HTTP replies with Set-Cookie.  These evil
  451.   headers are now filtered out for cache hits on the client
  452.   side.
  453. - Fixed SNMP bugs caused by using snmpwalk.
  454. - Fixed snmp system Group; all objects are now returned.
  455. - Fixed snmp system Group sysDescr and sysContact.
  456. - Fixed snmp system Group sysObjectID it now returns a OBJECT
  457.   IDENTIFIER.
  458. - Allocate FwdState from mem pools.
  459. - Minor HTCP progress.
  460. - Moved 'miss_access' ACL check from client_side.c to forward.c
  461. - Fixed logging of usernames for requests which require
  462.   proxy-authentication.
  463. - Fixed HTTP request parser to accept lowercase HTTP identifier
  464.   (Oskar Pearson).
  465. - Fixed FTP listings to always include links to the parent
  466.   directory (Henrik Nordstrom).
  467. - Fixed FTP to show an "empty" listing instead of showing
  468.   a "document contains no data" error (Henrik Nordstrom).
  469. - Fixed refreshCheck() bug.  Often it was checking the
  470.   refresh patterns against the string "[null_mem_obj]"
  471.   because we moved URLs to MemObject.
  472. - Added CARP support by Eric Stern.
  473. - Fixed select-spin bug when an ICP reply actually gets queued
  474.   and we failed to execute the write callback.
  475. - Fixed a storeCheckSwapOut bug.  We were freeing up to
  476.   the queued offset instead of the done offset.  This
  477.   resulted in a small chunk of object data not being in
  478.   memory and not yet written to disk.  A client could
  479.   recieve a partial object because file_read() unexpectedly
  480.   returns EOF.
  481. - Fixed proxy-authentication hangs (Henrik Nordstrom).
  482. - Fixed request_t->flags bug causing authenticated, proxied
  483.   responses to be cached (Arjan de Vet).
  484. - Fixed MIME types for .tgz extension (Henrik Nordstrom).
  485. - Added view and download options to FTP listings (Henrik
  486.   Nordstrom).
  487. - Modified configure to allow using pre-installed libdlmalloc.a
  488.   (Masashi Fujita).
  489. - Fixed cachemgr 'objects' implementation.
  490. - Changed refreshCheck() algorithm.   For cached objects, we
  491.   now check, in the following order:
  492. * request max-age
  493. * response Expires (if present)
  494. * refresh_pattern max-age
  495. * response Last-Modified compared to refresh_pattern
  496.   LM-factor (only if Last-Modified is present)
  497. * refresh_pattern min-age
  498. - Changed Copyrights.
  499. Changes to squid-1.2.beta22 (June 1, 1998):
  500. - do not cut off "; parameter" from "digitized" Content-Type 
  501.   http fields
  502. - Added X-Request-URI for persistent connection debugging 
  503.   (Henrik Nordstrom)
  504. - Added Polish error pages from Maciej Kozinski.
  505. - Fixed hash_first/hash_next bugs with **Current pointer.
  506.   Replaced with *next pointer.
  507. - Fixed PUT/POST bugs in client (Henrik Nordstrom).
  508. - Deny forwarding loops in httpd accel mode (Henrik Nordstrom).
  509. - Fixed eventRun "spin" bug when event delta time == 0.
  510. - Fixed setting Last Modified time on cached entries when
  511.   receiving a 304 reply.
  512. - Added while loop in httpAccept().
  513. - Added while loop in icpHandleUdp().
  514. - Fixed some small memory leaks.
  515. - Fixed single-bit-int flag checks (Henrik Nordstrom).
  516. - Replaced "complex" (offset accounting) calls to snprintf with MemBuf
  517. - Do not send only-if-cached cc directive with requests 
  518.           for peer's digests.
  519. - Added "automatic tuning" for incoming request rate, i.e.
  520.   how often to check HTTP and ICP sockets.  See comm.c
  521.   comments for details.
  522. Changes to squid-1.2.beta21 (May 22, 1998):
  523. - Added Italian error pages by Alessio Bragadini.
  524. - Added Estonian error pages by Toomas Soome.
  525. - Added Russian (koi-r) error pages by Andrew L. Davydov.
  526. - Added Czech error pages by Jakub Nantl.
  527. - Fixed asnAclInitialize calling to prevent coredump.
  528. - Fixed FTP directory parsing again.
  529. - Made FTP directory listing "Generated" tagline like
  530.   the one for error pages.
  531. - Fixed an assertion coredump in statHistCopy from 
  532.       reconfiguring with different #peers in squid.conf
  533. - Ignore leading whitespace on requests (and replies).  RFC
  534.   2068 section 4.1, robustness (Henrik Nordstrom)
  535. - Fixed keep_alive bug.  We did not always honour reply
  536.   headers, but rather assumed connections could be persistent.
  537. - Fixed reading whois output for AS numbers, especially when
  538.   they are longer than 4 KB.
  539. - Removed 'cache_stoplist_pattern' configuration option.  This
  540.   feature is now handled by 'no_cache'.
  541. - If a URN resolves to only one URL, just return it immediately
  542.   instead of giving the user a "choice" (Andy Powell).
  543. - Fixed year-2000 bug in lib/iso3307.c (Henrik Nordstrom).
  544. - Changed squid-internal object names.
  545. - Added netdb exchange protocol.
  546. - Fixed wordlistDestroy() uninitialized pointer bug in
  547.   ftpParseControlReply.
  548. - Fixed redirector subprocess to show real program name.
  549. - Changed URN menu output to be sorted.
  550. - Added fast select(2) timeouts when using ASYNC_IO.
  551. - Added ARP ACL support for Linux (David Luyer).
  552.         - Added binary http headers to requests
  553.         - request_t objects are now created and destroyed in a consistent way
  554.         - Fixed cache control printf bug
  555.         - Added a lot of new http header ids
  556.         - Improved Connection: header handling; now both Connection and
  557.           Proxy-Connection headers are checked for connection directives
  558.         - Connection request header is now handled correctly regardless
  559.           of its position and the number of entries
  560. - Only replies with valid Content-Length can be sent with keep-alive
  561.   connection directive (Henrik Nordstrom)
  562.         - Better handling of persistent connection "clues" in HTTP headers;
  563.   the decision now depends on HTTP version (and User-Agent exceptions)
  564.         - Removed handling of "length=" directive in IMS headers;
  565.           the directive is not in the HTTP/1.1 standard;
  566.           standing by for objections
  567.         - allowed/denied headers are now checked using bit masks instead of
  568.           strcmp loops
  569.         - removed Uri: from allowed headers; Uri is deprecated in RFC 2068
  570. - removed processing of Request-Range header (not in specs?)
  571. - Fixed byte-order bugs in cacheDigestHashKey.
  572. - Changed hash_remove_link() to return void.
  573. - Changed ipcache_gethostbyname() to return NULL if
  574.   i->addrs.count == 0.
  575. - Added millisecond-timing to select/poll loops and event
  576.   queue.
  577. - Changed 'peerPingTimeout' value to be twice the average
  578.   of all the peer ICP RTT's.
  579. - Added 'half_closed_clients' option to force closing of
  580.   client connections which might only be half-closed.
  581. - Fixed matchDomainName coredump bug.
  582. - Don't cache HTTP replies with Vary: headers until we
  583.   get content negotiation working.
  584. - Fixed SSL proxying to forward full HTTP request headers.
  585. - Changed storeGetMemSpace().  Only purge down to the HIGH
  586.   water mark; move locked entries to the head of the inmem
  587.   list.
  588. - Changed clientReadRequest() to locally handle any
  589.   "squid-internal-static" URL for any host.
  590. - Disable persistent connections for client connections
  591.   from broken Netscape User-Agent, version 3.* (Stewart Forster)
  592. Changes to squid-1.2.beta20 (April 24, 1998):
  593. - Improved support for only-if-cached cache control directive.
  594. - Enabled 304 replies for ENTRY_SPECIAL objects (e.g., icons).
  595. - Fixed 'quick_abort' percent calculation bug.
  596. - Fixed quick_abort FPE bug.
  597. - Changed more errno-checking functions to use ignoreErrno().
  598. - Added ERESTART to ignoreErrno() because of report from
  599.   a Solaris system.
  600. - Fixed '#elsif' typo.
  601. - Fixed MemPool assertion by moving memInit() to before
  602.   configuration parsing functions.
  603. - Fixed default 'announce_period' value (was 1 day, should
  604.   be 0) (Joe Ramey).
  605. - Added configure warning for low filedescriptors and pointer
  606.   to FAQ.
  607. - Fixed httpBodySet() bug causing URN related coredumps.
  608. - Changed ipcacheCycleAddr() to always cycle through all all
  609.   available addresses, and not just advance when one of
  610.   them goes BAD.
  611. - Fixed squid-internal bug for mixed-case hostnames (Henrik
  612.   Nordstrom).
  613. - Fixed ICP counting probelm.  icpUdpSend() arg should be
  614.   LOG_ICP_QUERY instead of LOG_TAG_NONE.
  615. - Added some additional fault toleranse on FTP data channels
  616.   (Henrik Nordstrom).
  617. - Corrected error reporting on FTP "hacks" (Henrik Nordstrom).
  618. - Added lock/unlock for StoreEntry during storeAbort().
  619. - Added filemap bit usage stats to cachemgr 'storedir' and
  620.   'info'.
  621. - Replaced 'cache_stoplist' with 'no_cache' Access list.
  622. - Fixed (hopefully) remaining swapfile-open-at-exit bugs.
  623. - Fixed default hierarchy_stoplist to be ``default if none.''
  624. - Fixed 'fake a recent reply' hack for detecting DEAD
  625.   and ALIVE neighbors (Joe Ramey).
  626. - Fixed FTP directory parsing bugs (Joe Ramey).
  627. - Fixed ftpTraverseDirectory coredump for NULL ftpState->filepath
  628.   (Joe Ramey).
  629. - Fixed daylight savings time bug (again).
  630. - A lot of Cache Digests additions, fixes, and tuning. 
  631.   Cache Digests are still "very experimental".
  632. - Fixed snprintf() bug.  When len == 1, snprintf() would treat
  633.   the buffer as unknown size, emulating sprintf() behaviour.
  634. - Made Error page language configurable with configure script
  635.   (Henrik Nordstrom).
  636. - Fixed squid-internal URLs when http_port == 80.
  637. - Remember the client address on redirected requests (Henrik
  638.   Nordstrom).
  639. - Don't rebuild the request if the redirector returned the same
  640.   URL (Henrik Nordstrom).
  641. - Rewrite Host: header on redirected requests (Henrik
  642.   Nordstrom).
  643. - Include port (if non-standard) in generated Host: headers
  644.   (Henrik Nordstrom).
  645. - Fixed rfc1123 timezone hacks for Windows NT
  646.   (Henrik Nordstrom).
  647. - Added Russian Error pages by Ilia Zadorozhko.
  648. - Added totals for ICP and HTTP hits to cachemgr client_list
  649.   output.
  650. - Changed error message to 'Generated TIME by HOST (SQUID/VER)'
  651.   because any string with an '@' must be an email address.
  652. - Fixed POST for content-length == 0.
  653. - Fixed "huge 304 reply" loop bug.
  654. - Fixed --enable-splaytree compile bugs.
  655. - Removed ASN lookup code in peer_select.c.
  656. Changes to squid-1.2.beta19 (Apr 8, 1998):
  657. - Squid-1.2.beta19 compiles and runs on Windows/NT with
  658.   Cygnus Gnu-WIN32 b19 (Henrik Nordstrom).
  659. - Added French Error pages by Frank DENIS.
  660. - Added Dutch Error pages by Mark Visser
  661. - Added German Error pages by Bernd P. Ziller, Jens Frank,
  662.   and Anke S.
  663. - Added support for only-if-cached cache-control directive.
  664. - Added RELAXED_HTTP_PARSER #define to allow requests which are
  665.   missing the HTTP identifier on the request line (e.g. buggy
  666.   SpyGame queries).  RELAXED_HTTP_PARSER is undefined by default.
  667. - Fixed disk.c FD leak for delayed closes in
  668.   diskHandleWriteComplete().
  669. - Fixed cache announcement feature.
  670. - Fixed httpReadReply() to retry failed HTTP requests on
  671.   persistent connections when read() returns -1, not only
  672.   when it returns 0.
  673. - Fixed cbdata memory counting leak.  cbdataUnlock() always
  674.   called free(), never memFree().
  675. - Fixed storeDirWriteCleanLogs() malloc bug on Alphas.
  676. - Fixed `++loopdetect < 10' assertion due to
  677.   clientHandleIMSReply bug for invalid/partial HTTP
  678.   replies.
  679. - Added preliminary code for HTCP.
  680. - Renamed 'aux' dir to 'cfgaux' for legacy DOS machines.
  681. - Added "snmp_community" as an ACL type.
  682. - Cleaned up proxy-auth acl implementation and removed
  683.   memory leaks.
  684. - Added generic 'hashFreeItems()' function for efficiently
  685.   freeing hash table pointers.
  686. - Added whoisTimeout() for ASN code.
  687. - Removed BINARY TREE code.
  688. - Fixed forgetting to reset Config.Swap.maxSize in
  689.   configDoConfigure.
  690. - Fixed httpReplyUpdateOnNotModified() arguments-in-wrong-order
  691.   bug which caused not modified replies to not get updated.
  692. - Fixed client_side.c bugs which could cause data to be written
  693.   to the client in the wrong order for persistent connections.
  694.   clientPurgeRequest() and clientHandleIMSComplete() must not
  695.   call comm_write().  Instead they must create and write to
  696.   StoreEntry's.
  697. - Fixed ICP query service time counting bug(s).
  698. - replaced 'char *mime_headers_end()' with 'size_t headersEnd()'
  699.   to fix buffer overruns.  This also requires adding 'buf_sz'
  700.   args to some functions like clientBuildReplyHeader().
  701.   But we can eliminate the need to NULL-terminate the
  702.   buffer beforehand.
  703. - Changed commConnectCallback() to reset the FD timeout to
  704.   zero before notifying about the connection.  This requires
  705.   commSetTimeout() calls in numerous places to reinstall
  706.   timeouts.
  707. - Changed comm_poll_incoming() to be called less frequently
  708.   (every 15 I/O's instead of every 7 FD's) (Michael O'Reilly).
  709. - Removed HAVE_SYSLOG case for debug() macro.  Almost all
  710.   systems do have syslog(), but more importatnly the
  711.   _db_level value is needed for debugging to stderr.
  712. - Rewrote squid/dnsserver interface to use smaller, single-line
  713.   messages.
  714. - Rewrote 'dns' cachemgr output to use a table format.
  715. - Rewrote a lot of dnsserver.c.
  716. - Added eventAddIsh() for semi-random event scheduling.
  717. - Fixed an ftpTimeout bug for sessions which use PORT
  718.   commands.
  719. - Fixed ftp.c to recognized invalid PASV replies (e.g.
  720.   port == 0).
  721. - Removed hash_insert().  All hasing uses hash_join() now.
  722. - Renamed hash_unlink() to hash_remove_link().
  723. - Added hashPrime() to find closes prime hash table size
  724.   to a given value.
  725. - Fixed Keep-Alive ratio counting bug which prevented
  726.   persistent connections from being used between cache
  727.   peers.
  728. - Changed icmp.c to NOT queue messages sent from squid to
  729.   the pinger program.
  730. - Changed icp_v2.c to NOT queue ICP messages by default.
  731.   But they will be queued and resent once if the first
  732.   send fails.  Counters.icp.queued_replies counts the
  733.   number of messaages queued.
  734. - Cleaned up ICP logging.
  735. - Added identTimeout().
  736. - Fixed ipcache reply counting bug.  Overcounted dnsserver
  737.   replies for partial replies.
  738. - Added urlInternal() for building internal Squid URLs.
  739. - Changed peerAllowedToUse() to check both 'cache_peer_domain'
  740.   AND 'cache_peer_acl' configurations.  This should be changed
  741.   in the fugure to use ONLY cache_peer_acl.
  742. - Changed DEAD/REVIVED neighbor detection to avoid reporting
  743.   so many false deaths.  (Joe Ramey).
  744. - Added some preliminary code to support "cache digests."
  745. - Fixed pumpClose() coredumps (?).
  746. - Updated cachemgr 'info' output to show median service
  747.   times for various categories.
  748. - Fixed ABW bug in storeDirWriteCleanLogs().  sizeof(off_t)
  749.   != sizeof(int) for Alphas.
  750. - Fixed potential alignment problem in storeDirWriteCleanLogs().
  751. - Fixed store_rebuild.c to NOT replace current, but
  752.   not-swapped-out StoreEntry's with on-disk entries.
  753. - Changed storeCleanup() to call storeRelease on invalid
  754.   entries which don't have a swapfile (i.e. no unlink()
  755.   penalty).
  756. - Fixed storeSwapInStart() to fail for unvalidated
  757.   entries.
  758. - SNMP changes:
  759.   .  renovated mib and added descriptions and comments
  760.   .  added hit and byte counters to client_db , for
  761.      cacheClientTable
  762.   .  cacheClientTable, netdbTable, cachePeerTable,
  763.      cacheConnTable now indexed by ip address. hash_lookup was
  764.      enhanced to allow for subsequent hash_next's similar to
  765.      hash_first, to speed up getnext's in tables which refer to
  766.      hash-table structures.
  767.   .  added generic (well, sorf of) table indexing functionality
  768.   .  added makefile dependencies for snmplib and cache_snmp.h
  769.   .  WaisHost, WaisPort, Timeouts removed
  770.   .  FdTable split into FdTable and ConnTable. FdTable simplified
  771.   .  PeerTable and PeerStat merged and put into new cacheMesh
  772.      group
  773.   .  cacheClientTable added for client statistics and accounting 
  774.      (cacheMesh 2)
  775.   .  cacheSec and cacheAccounting groups removed 
  776.   .  fixed acl bug when communities not defined
  777.   .  snmp_acl now survives bad configuration
  778. Changes to squid-1.2.beta18 (Mar 23, 1998):
  779. - Added v1.1 'test_reachability' option.
  780. - Fixed hash4() len == 0 bug.
  781. - Fixed Config.Swap.maxSize reconfigure bug.
  782. - Fixed ICP query bug determining request method.
  783. - Moved ICP's storeGet() cache lookup into neighborsUdpAck()
  784.   so that we know neighbors are alive even when they send
  785.   us replies for unknown entries.
  786. - Changed configure script to add '-std1' for Digital Unix cc.
  787. - Fixed SNMP sizeof(int) / sizeof(long) bugs for 64-bit
  788.   systems.
  789. - Added support for 'Cache-Control: Only-If-Cached' request header.
  790. - Fixed CheckQuickAbort() bugs for multiple clients on one
  791.   StoreEntry.  Also changed storePendingNClients() to return
  792.   mem->nclients instead of counting the number of store_client
  793.   entries with pending callback functions.
  794. Changes to squid-1.2.beta17 (Mar 17, 1998):
  795. - SNMP MIB version check changed to non-rcs.
  796. - Added memory pools for variable size objects (strings).
  797.   There are three pools; for small, medium, and large objects.  
  798. - Extended String object to use memory pools.  Most fixed size char
  799.   array fields will be replaced using string pools. Same for most
  800.   malloc()-ed buffers.
  801. - Changed icon handling to use the hostname and port of the squid
  802.   server, instead of the special hostname "internal.squid"
  803.   (Henrik Nordstrom).
  804. - All icons are now configured in mime.conf. No hardcoded icons,
  805.   including gohper icons (Henrik Nordstrom).
  806. - Fixed ICP bug when we send queries, but expect zero
  807.   replies.
  808. - Fixed alignment/casting bugs for ICP messages.
  809. - A generic client-to-server "pump" was added to handle HTTP
  810.   PUT as well as POST methods on the client-cache side. Based on
  811.   "pump" PUT requests can be made to either HTTP or FTP url's.
  812.   Code is still beta and interoperability with browsers etc has
  813.   not been tested.
  814. - Put #ifdefs around 'source_ping' code.
  815. - Added missing typedef for _arp_ip_data (Wesha).
  816. - Added regular-expression-based ACLs for client and server
  817.   domain names (Henrik Nordstrom).
  818. - Fixed ident-related coredumps from incorrect callback data.
  819. - Fixed parse_rfc1123() "space" bug.
  820. - Fixed xrealloc() XMALLOC_DEBUG bug (not calling check_free())..
  821. - Fixed some src/asn.c end-of-reply bugs and memory leaks.
  822. - Fixed some peer->options flag-setting bugs.
  823. - Fixed single-parent feature to work again
  824. - Removed 'single_parent_bypass' configuration option; instead
  825.   just use 'no-query'.
  826. - Surrounded 'source_ping' code with #ifdefs.
  827. - Changed 'deny_info URL' to use a custom Error page.
  828. - Modified src/client.c for testing POST requests.
  829. - Fixed hash4() for SCO (Vlado Potisk).
  830. Changes to squid-1.2.beta16 (Mar 4, 1998):
  831. - Added Spanish error messages from Javier Puche.
  832. - Added Portuguese error messages from Pedro Lineu Orso
  833. - Added a simple but very effective hack to cachemgr.cgi that tries to
  834.   interpret lines with 't' as table records and formats them
  835.   accordingly. With a few exceptions (see source code), first line
  836.   becomes a table heading ("<th>" html tag) and the rest is formated
  837.   with "<td>" tags.
  838. - Added "mem_pools_limit" configuration option. Semantics of
  839.   "mem_pools" option has also changed a bit to reflect new memory
  840.   management policy.
  841. - Reorganized memory pools. Squid now supports a global pool
  842.   limit instead of individual pool limits. Per-pool limits can be
  843.   implemented on top of the current scheme if needed, but it is
  844.   probably hard to guess their values.  Squid distributes pool
  845.   memory among "frequently allocated" objects.  There is a
  846.   configurable limit on the total amount of "idle" memory to be
  847.   kept in reserve. All requests that exceed that amount are
  848.   satisfied using malloc library.  Support for variable size
  849.   objects (mostly strings) will be enabled soon.
  850. - memAllocate() has now only one parameter. Objects are always
  851.   reset with 0s. (We actually never used that parameter before;
  852.   it was always set to "clear").
  853. - Added Squid "signature" to all ERR_ pages. The signature is
  854.   hardcoded and is added on-the-fly. The signature may use
  855.   %-escapes.  Added interface to add more hard-coded responses if
  856.   needed (see errorpage.c::error_hard_text).
  857. - Both default and configured directories are searched for ERR_
  858.   pages now. Configured directory is, of course, searched first.
  859.   This allows you to customize a subset of ERR_ pages (in a
  860.   separate directory) without danger of getting other copies out
  861.   of sync.
  862. - Security controls for the SNMP agent added. Besides
  863.   communities (like password) and views (part of tree
  864.   accessible), the snmp_acl config option can be used to do acl
  865.   based access checks per community.
  866. - SNMP agent was heavily re-written, based on cmu-snmpV1.8. You
  867.   can now walk through the whole mib tree. Several new variables
  868.   added under cacheProtoAggregateStats
  869. - Added rudimental statistics for HTTP headers.
  870. - Adjusted StatLogHist to a more generic/flexible StatHist.
  871.   Moved StatHist implementation into a separate file.
  872. - Added FTP support for PORT if PASV fails, also try the
  873.   default FTP data port (Henrik Nordstrom).
  874. - Fixed NULL pointer bug in clientGetHeadersForIMS when a
  875.   request is cancelled for fails on the client side.
  876. - Filled in some squid.conf comments (never_direct,
  877.   always_direct).
  878. - Added RES_DNSRCH to dnsserver's _res.options when the 
  879.   -D command line option is given.
  880. - Fixed repeated Detected DEAD/REVIVED Sibling messages when
  881.   peer->tcp_up == 0 (Michael O'Reilly).
  882. - Fixed storeGetNextFile's incorrect "directory does not exist"
  883.   errors (Michael O'Reilly).
  884. - Fixed aiops.c race condition (Michael O'Reilly, Stewart
  885.   Forster).
  886. - Added 'dns_nameservers' config option to specify non-default
  887.   DNS nameserver addresses (Maxim Krasnyansky).
  888. - Added lib/util.c code to show memory map as a tree
  889.   (Henrik Nordstrom).
  890. - Added HTTP and ICP median service times to Counters and
  891.   cachemgr average stats.
  892. - Changed "-d" command line option to take debugging level
  893.   as argument.  Debugging equal-to or less-than the argument
  894.   will be written to stderr.
  895. - Removed unused urlClean() function from url.c.
  896. - Fixed a bug that allowed '?' parts of urls to be recorded in
  897.   store.log.  Logged urls are now "clean".
  898. - Cache Manager got new Web interface (cachemgr.cgi). New .cgi
  899.   script forwards basic authentication from browser to squid.
  900.   Authentication info is encoded within all dynamically generated
  901.   pages so you do not have to type your password often.
  902.   Authentication records expire after 3 hours (default) since
  903.   last use. Cachemgr.cgi now recognizes "action protection" types
  904.   described below.
  905. - Added better recognition of available protection for actions
  906.   in Cache Manager. Actions are classified as "public" (no
  907.   password needed), "protected" (must specify a valid password),
  908.   "disabled" (those with a "disable" password in squid.conf), and
  909.   "hidden" (actions that require a password, but do not have
  910.   corresponding cachemgr_passwd entry). If you manage to request
  911.   a hidden, disabled, or unknown action, squid replies with
  912.   "Invalid URL" message. If a password is needed, and you failed
  913.   to provide one, squid replies with "Access Denied" message and
  914.   asks you to authenticate yourself.
  915. - Added "basic" authentication scheme for the Cache Manager.
  916.   When a password protected function is accessed, Squid sends an
  917.   HTTP_UNAUTHORIZED reply allowing the client to authorize itself
  918.   by specifying "name" and "password" for the specified action.
  919.   The user name is currently used for logging purposes only.  The
  920.   password must be an appropriate "cachemgr_passwd" entry from
  921.   squid.conf. The old interface (appending @password to the url)
  922.   is still supported but discouraged.  Note: it is not possible
  923.   to pass authentication information between squid and browser
  924.   *via a web server*. The server will strip all authentication
  925.   headers coming from the browser. A similar problem exists for
  926.   Proxy-Authentication scheme.
  927. - Added ERR_CACHE_MGR_ACCESS_DENIED page to notify of
  928.   authentication failures when accessing Cache Manager.
  929. - Added "-v" (Verbose) and "-H" (extra Headers) options to client.c.
  930. - Added simple context-based debugging to debug.c. Currently,
  931.   the context is defined as a constant string. Context reporting
  932.   is triggered by debug() calls.  Context debugging routines
  933.   print minimal amount of information sufficient to describe
  934.   current context. The interface will be enhanced in the future.
  935. - Replaced _http_reply with HttpReply. HttpReply is a
  936.   stand-alone object that is responsible for parsing, swapping,
  937.   and comm_writing of HTTP replies. Moved these functions from
  938.   various modules into HttpReply module.
  939. - Added HttpStatusLine, HttpHeader, HttpBody.
  940. - All HTTP headers are now parsed and stored in a "compiled"
  941.   form in the HttpHeader object.  This allows for a great
  942.   flexibility in header processing and builds basis for support
  943.   of yet unsupported HTTP headers.
  944. - Added Packer, a memory/store redirector with a printf
  945.   interface.  Packer allows to comm_write() or swap() an object
  946.   using a single routine.
  947. - Added MemBuf, a auto-growing memory buffer with printf
  948.   capabilities.  MemBuf replaces most of old local buffers for
  949.   compiling text messages.
  950. - Added MemPool that maintains a pre-allocated pool of opaque
  951.   objects.  Used to eliminate memory thrashing when allocating
  952.   small objects (e.g.  field-names and field-value in http
  953.   headers).
  954. Changes to squid-1.2.beta15 (Feb 13, 1998):
  955. NOTE: This version has changes which may cause all or part
  956.       of your cache to be lost.  However, you can problably
  957.       save most of it by doing a slow restart.  Specifically:
  958. 1. Kill the running squid-1.2.beta14 process; wait for it to
  959.    fully exit.
  960. 2. Remove all 'swap.state*' files, either in each cache_dir, or
  961.    as defined in your squid.conf
  962. 3. Start squid-1.2.beta15.   The store will be rebuilt from the
  963.    existing swap files, reading the directories and opening
  964.    the files.
  965. - Fixed some problems related to disk (and pipe) write error
  966.   handling.  file_close() doesn't always close the file
  967.   immediately; i.e. when there are pending buffers to write.
  968.   StoreEntry->lock_count could become zero while a write is
  969.   pending, then bad things happen during the callback.
  970. - The file_write() callback data must now be in the callback
  971.   database (cbdata).  We now use the swapout_ctrl_t structure
  972.   for the callback data; it stays around for as long as we are
  973.   swapping out.
  974. - Changed the way write errors are handled by diskHandleWrite.
  975.   If there is no callback function, now we exit with a fatal
  976.   message under the assumption that the file in question is a
  977.   log file or IPC pipe.  Otherwise, we flush all the pending
  978.   write buffers (so we don't see multiple repeated write errors
  979.   from the same descriptor) and let the upper layer decide how
  980.   to handle the failure.
  981. - Fixed storeDirWriteCleanLogs.  A write failure was leaving
  982.   some empty swap.state files, even though it tells us that its
  983.   "not replacing the file."  Don't flush/rename logs which we
  984.   have prematurely closed due to write failures, indiciated by
  985.   fd[dirn] == -1.  Close these files LAST, not before
  986.   renaming.
  987. - Fixed storeDirClean to clean directories in a more sensible
  988.   order, instead of the new "MONOTONIC" order for swap files.
  989. - Merged fdstat.c functions into fd.c.
  990. - Cleaned up some debugging sections.  Some unrelated source
  991.   files were using the same section.
  992. - Removed curly brackets from all cachemgr output.
  993. - Removed unused filemap->last_file_number_allocated member.
  994. - Removed unused fde->lifetime_data member.
  995. - Fixed incorrectly applying htonl() on icp_common_t->shostid.
  996. - Call setsid() before exec() in ipc.c so that child processes
  997.   don't receive SIGINT (etc) when running squid on a tty.
  998. - Changed StoreEntry->object_len to ->swap_file_sz so we
  999.   can verify the disk file size at restart.  Moved object_len
  1000.   to MemObject->object_sz.  Note object_sz is initialized
  1001.   to -1.  If object_sz < 0, then we need to open the swap
  1002.   file and read the swap metadata.
  1003. - Changed store_client->mem to ->entry because we need
  1004.   e->swap_file_sz to set mem->object_sz at swapin.
  1005. - Renamed storeSwapData structure to storeSwapLogData.
  1006. - Fixed storeGetNextFile to not increment d->dirn.  Added
  1007.   check for opendir() failure.
  1008. - Fixed storeRebuildStart to properly link the directory
  1009.   list for storeRebuildfromDirectory mode.
  1010. - Added -S command line option to double-check store
  1011.   consistency with disk files in storeCleanup().
  1012. - Fixed a problem with transactional logging.  In many
  1013.   cases we were adding the public cache key and then
  1014.   logging a delete for the private key.  This is worthless
  1015.   because during rebuild we could not locate the previous
  1016.   public-keyed entry.  Now we assert that only public-keyed
  1017.   entries can be logged to swap.state.  storeSetPublicKey()
  1018.   and storeSetPrivateKey() have been modified to log an
  1019.   ADD or DEL when the key changes.
  1020. - Fixed storeDirClean bug.  Needed to call
  1021.   storeDirProperFileno() so the "dirn bits" get set.
  1022. - Fixed a storeRebuildFromDirectory bug.  fullpath[] and
  1023.   fullfilename[] were static to that function and did
  1024.   not change when the "rebuild_dir" arg did.  Moved these
  1025.   buffers to the rebuild_dir structure.
  1026. - In storeRebuildFromSwapLog, we were calling storeRelease()
  1027.   for cache key collisions.  This only set the RELEASE_REQUEST
  1028.   bit and did not clear the swap_file_number in the filemap or
  1029.   in the StoreEntry, so the swap file could get unlinked later
  1030.   when it was really released.
  1031. - Fixed FTP so that ';type=X' specifically sets the HTTP reply
  1032.   content-type and content-encoding (Henrik Nordstrom).
  1033. - Removed 'icon_content_type' configuration option.  Content
  1034.   types now taken from mime.conf (Henrik Nordstrom).
  1035. - Added additional memory malloc tracing and memory leak
  1036.   detection.  Use --enable-xmalloc-debug-trace configure
  1037.   option and -m command line option  (Henrik Nordstrom).
  1038. Changes to squid-1.2.beta14 (Feb 6, 1998):
  1039. - Replaced snmplib free() calls with xfree().
  1040. - Changed the 'net_db_name' hash table structure to
  1041.   make it easier to move names from one network to another
  1042.   (copied from 1.1 code).
  1043. - Filled in some of the config dump routines (dump_acl,
  1044.   dump_acl_access).
  1045. - Full memory debugging option (--enable-xmalloc-debug-trace)
  1046.   (Henrik Nordstrom).
  1047. - Filled-in and clarified many squid.conf comments (Oskar
  1048.   Pearson).
  1049. - Fixed up handling of SWAP_LOG_DEL swap.state entries.
  1050. Changes to squid-1.2.beta13 (Feb 4, 1998):
  1051. - NOTE: With this version the "swap.state" file format has
  1052.   changed.  Running this version for the first time will
  1053.   cause your current cache contents to be lost!
  1054. - NOTE: this version still has the bug where we don't rewind
  1055.   a swapout file and rewrite the swap meta data.  Objects
  1056.   larger than 8KB will be lost when rebuilding from the swap
  1057.   files.
  1058. - Combined various interprocess communication setup functions
  1059.   into ipcCreate().
  1060. - Removed some leftover ICP_HIT_OBJ things.
  1061. - Removed cacheinfo and proto_count() and friends; these are to
  1062.   be replaced in functionality by StatCounters and 5/60 minute
  1063.   average views via cachemgr.
  1064. - Fixed --enable-acltree configure message (Masashi Fujita).
  1065. - Fixed no reference to @LIB_MALLOC@ in src/Makefile.in
  1066.   (Masashi Fujita).
  1067. - Fixed building outside of source tree (Masashi Fujita).
  1068. - FTP: Format NLST listings, and inform the user that the NLST
  1069.   (plain) format is available when we find a LIST listing that we
  1070.   don't understand (Henrik Nordstrom)
  1071. - FTP: Use SIZE on Binary transfers, and not ASCII. The
  1072.   condition was inversed, making squid use SIZE on ASCII
  1073.   transfers (Henrik Nordstrom).
  1074. - Enable virtual and Host: based acceleration in order to be
  1075.   able to use Squid as a transparent proxy without breaking
  1076.   either virtual servers or clients not sending Host: header
  1077.   the order of the virtual and Host: based acceleration needs
  1078.   to be swapped, giving Host: a higher precendence than virtual
  1079.   host (Henrik Nordstrom).
  1080. - Use memmove/bcopy as detected by configure Some systems does
  1081.   not have memmove, but have the older bcopy implementation
  1082.   (Henrik Nordstrom).
  1083. - Completely rewritten aiops.c that creates and manages a pool
  1084.   of threads so thread creation overhead is eliminated (SLF).
  1085. - Lots of mods to store.c to detect and cancel outstanding
  1086.   ASYNC ops.  Code is not proven exhaustive and there are
  1087.   definately still cases to be found where outstanding disk ops
  1088.   aren't cancelled properly (SLF).
  1089. - Changes to call interface to a few routines to support disk
  1090.   op `tagging', so operations can be cleanly cancelled on
  1091.   store_abort()s (SLF).
  1092. - Implementation of swap.state files as transaction logs.
  1093.   Removed objects are now noted with a negative object size.
  1094.   This allows reliatively clean rebuilds from non-clean
  1095.   shutdowns (SLF).
  1096. - Now that the swap.state files are transaction logs, there's
  1097.   now no need to validate by stat()ing.  All the validation
  1098.   procedure does is now just set the valid bit AFTER all the
  1099.   swap.state files have been read, because by that time, only
  1100.   valid objects can be left.  Object still need to be marked
  1101.   invalid when reading the swap.state file because there's no
  1102.   guarantee the file has been retaken or deleted (SLF).
  1103. - An fstat() call is now added after every
  1104.   storeSwapInFileOpened() so object sizes can be checked.   Added
  1105.   code to storeRelease() the object if the sizes don't match (SLF).
  1106.         - #defining USE_ASYNC_IO now uses the async unlink() rather than
  1107.           unlinkd() (SLF).
  1108. - #defining MONOTONIC_STORE will support the creation of disk
  1109.   objects clustered into directories.  This GREATLY improves disk
  1110.   performance (factor of 3) over old `write-over-old-object'
  1111.   method.  If using the MONOTONIC_STORE, the
  1112.   {get/put}_unusedFileno stack stuff is disabled.  This is
  1113.   actually a good thing and greatly reduces the risk of serving
  1114.   up bad objects (SLF).
  1115. - Fixed unlink() in storeWriteCleanLogs to be real unlink()
  1116.   rather than ASYNC/unlinkd unlinks.  swap.state.new files were
  1117.   being removed just after they were created due to delayed
  1118.   unlinks (SLF).
  1119. - Disabled various assertions and made these into debug warning
  1120.   messages to make the code more stable until the bugs can be
  1121.   tracked down (SLF).
  1122. - Added most of Michael O'Reilly's patches which included many
  1123.   bug fixes.  Ask him for full details (SLF).
  1124. - Moved aio_check_callbacks in comm_{poll|select}().  It was
  1125.   called after the fdset had been built which was wrong because
  1126.   the callbacks were changing the state of the read/write
  1127.   handlers prior to the poll/select() calls (SLF).
  1128. - Fixed ARP ACL memory leaks (Dale).
  1129. - Eliminated URL and SHA cache keys.  Cache keys will always
  1130.   be MD5's now.
  1131. - Fixed up store swap meta data.
  1132. - Changed swap.state logs to a binary format.
  1133. - The swap.state logs are written transaction-style.
  1134. Changes to squid-1.2.beta12 (Jan 30, 1998):
  1135. - Added metadata headers to cache swap files.  This is an
  1136.   incompatible change with previous versions.  Running this
  1137.   version for the first time will cause your current cache
  1138.   contents to be lost.
  1139. - -D_REENTRANT when linking with -lpthreads (Henrik Nordstrom)
  1140. - Show symlink destinations as a hyperlink in FTP listings
  1141.   (Henrik Nordstrom)
  1142. - Fixed not allocating enough space for rewriting URLs with
  1143.   the Host: header (Eric Stern).
  1144. - Year-2000 fixes (Arjan de Vet).
  1145. - Fixed looping for cache hits on HEAD requests.
  1146. - Fixed parseHttpRequest() coredump for 
  1147.           "GET http://foo HTTP/1.0rnrnrn"
  1148. Changes to squid-1.2.beta11 (Jan 6, 1998):
  1149. - Fixed fake 'struct rusage' definition which prevented compling
  1150.   on Solaris 2.4.
  1151. - Fixed copy-by-ref bug for request->headers in
  1152.   clientRedirectDone() (Michael O'Reilly).
  1153. - Workaround for Solaris pthreads closing FD 0 upon fork()
  1154.   (Michael O'Reilly).
  1155. - Fixed shutdown bug with outgoing UDP sockets; we need to
  1156.   disable their read handlers.
  1157. - For comm_poll(), use the fast 50 msec timeout only when
  1158.   USE_ASYNC_IO is defined.
  1159. - Fixed pointer bug when freeing AS# ACL entries.
  1160. - Fixed forgetting to reset Config.npeers to zero in free_peer().
  1161. - Fixed ICP bug causing excessive TIMEOUTs with sibling
  1162.   neighbors.  We must call the ICP reply callback even for
  1163.   sibling misses.
  1164. - Fixed some dnsserver-related reconfigure bugs. Need to 
  1165.   use cbdataLock, etc in fqdncache.c.  Also don't want to
  1166.   use ipcacheQueueDrain() and fqdncacheQueueDrain().
  1167. - Fixed persistent connection bug.  We were incorrectly
  1168.   deciding that non-200 replies without content-length
  1169.   would not have a reply body.
  1170. - Fixed intAverage() precedence bug.
  1171. - Fixed memmove() 'len' arg bug.
  1172. - Changed algorithm for determining alive/dead state of peers.
  1173.   Instead of using a fixed number of unacknowledged ICP
  1174.   replies, it is now based on timeouts.  If there are no ICP
  1175.   replies received from a peer within 'dead_peer_timeout'
  1176.   seconds, then we call it dead.
  1177. - Added calls to getCurrentTime() in
  1178.   comm_{select,poll}_incoming() when ALARM_UPDATES_TIME is not
  1179.   being used.
  1180. - Fixed shutdown bug when the incoming and outgoing ICP socket
  1181.   is the same file descriptor.
  1182. - Added buffered writes for storeWriteCleanLogs() (Stewart
  1183.   Forster).
  1184. - Patches for Qnx4 (Jean-Claude MICHOT).
  1185. - Fixed returning void functions which seems to be a GCC-ism.
  1186. - New configure script options (Henrik Nordstrom):
  1187. --enable-new-storekey=[sha|md5(|url)] (was --enable-hashkey)
  1188. --enable-acltree
  1189. --enable-icmp
  1190. --enable-delay-hack
  1191. --enable-useragent-log
  1192. --enable-kill-parent  (this should be named -hack)
  1193. --enable-snmp
  1194. --enable-time-hack
  1195. --enable-cachemgr-hostname[=hostname]   (new)
  1196. --enable-arp-acl  (new)
  1197. - Added Doug Lea malloc-2.6.4 to the distribution, so that
  1198.   people easily can try a decent malloc package if they syspect
  1199.   their malloc is broken.  --enable-dlmalloc (Henrik Nordstrom).
  1200. - Made XMALLOC_DEBUG_COUNT working again. Requires a small stub
  1201.   function (Henrik Nordstrom).
  1202. - Removed top-level Makefile.  People must now run 'configure'
  1203.   before 'make'.
  1204. - Fixed checkFailureRatio() implementation.
  1205. - Made 'squid -z' behave like the 1.1 version.
  1206. Changes to squid-1.2.beta10 (Jan 1, 1998):
  1207. - Fixed content-length bugs for 204 replies, 304 replies,
  1208.   and HEAD requests (Henrik Nordstrom).
  1209. - Fixed errorAppendEntry() bug in gopherReadReply().
  1210. - Basic support for FTP URL typecodes (;type=X).
  1211. - Support for access controls based on ethernet MAC addresses
  1212.   (Dale).
  1213. - Initial URN support; see
  1214.   http://squid.nlanr.net/Squid/urn-support.html
  1215. - Fixed client-side persistent connections for objects with
  1216.   bad content lengths (Henrik Nordstrom).
  1217. - Fixed bad call to storeDirUpdateSwapSize() for objects which
  1218.   never reach SWAPOUT_DONE state.
  1219. - Fixed up poll() #defines in squid.h (Stewart Forster).
  1220. - Changed poll() timeout from 1000 msec to 50 msec for
  1221.   better performance under low load (Stewart Forster).
  1222. - Changed storeWriteCleanLogs() to write objects in the LRU
  1223.   list order instead of the random hash table order.
  1224. - Fixed FTP bug when data socket connections fail or timeout.
  1225. - Reuse FTP data connection when possible (Henrik Nordstrom).
  1226. - Added configure options (Henrik Nordstrom)
  1227. --enable-store-key=sha|md5
  1228. --enable-xmalloc-statistics
  1229. --enable-xmalloc-debug
  1230. --enable-xmalloc-debug-count 
  1231. --async-io 
  1232. - Fixed confusing with the use/meaning of ERR_CANNOT_FORWARD
  1233.   by creating ERR_FORWARDING_DENIED and changing the
  1234.   content of the ERR_CANNOT_FORWARD text.
  1235. - Fixed pipeline request bug from using strdup() (Henrik
  1236.   Nordstrom).
  1237. - Call clientReadRequest() directly instead of commSetSelect()
  1238.   for pipelined requests (Henrik Nordstrom).
  1239. - Fixed 4k page leak in icpHandleIMSReply();
  1240. - Renamed 'icp*' functions to 'client*' names in client_side.c.
  1241. Changes to squid-1.2.beta8 (Dec 2, 1997):
  1242. - Fixed accessLogLog() to log ident from Proxy-Authorization
  1243.   request header (BoB Miorelli).
  1244. - Fixed #includes, prototypes, etc. in SNMP source files.
  1245. - Moved 'POLLRDNORM' and 'POLLWRNORM' macro checks from
  1246.   include/config.h.in to src/squid.h
  1247. - Moved 'num32' typedefs from src/typedefs.h to
  1248.   include/config.h.in.
  1249. - Moved snmplib/md5.c to lib/md5.c.
  1250. - Added MD5 cache key support.
  1251. - Removed xmalloc() return check in uudeocde.c
  1252. - Added 'ifdef' support to cf_gen.c for optional code (e.g. SNMP)
  1253. - Changed 'client' program to provide easier cache manager access,
  1254.   e.g.: 'client mgr:info'
  1255. - Fixed 'client' to send 'Connection' instead of 'Proxy-Connection'
  1256.   for simulated keep-alive requests.
  1257. - Removed 'fd' arg from clientProcess* functions.
  1258. - Fixed bugs from using errorSend() on persistent/pipelined
  1259.   client connections.  A latter request should not be allowed to
  1260.   write to the client fd until the current request completes.
  1261.   Now use errorAppendEntry() for such situations.
  1262. - Fixed content-length bugs.  We were using content-length == 0
  1263.   to also indicate a lack of content-length reply header.  But
  1264.   'content-length: 0' might appear in a reply, so now use -1 to
  1265.   indicate that no content length given.
  1266. - Split up clientProcessRequest() into smaller chunks so it
  1267.   might be easier to follow.
  1268. - renamed various client_side.c functions to start with 'client'
  1269.   instead of 'icp'.
  1270. - Fixed a 'cbdata leak' from the comm.c close handlers.
  1271. - Fixed a 'cbdata leak' from the comm.c connect routines.
  1272. - Fixed comm_select() and comm_poll() to stop looping on the
  1273.   incoming HTTP/ICP sockets.  If there are fewer than 7 FD's
  1274.   ready for I/O, the incoming sockets might not get service, so
  1275.   comm_select() would be called for up to 7 times until the
  1276.   'incoming_counter' was incremented enough to trigger a call
  1277.   to comm_select_incoming().  Now we make sure
  1278.   comm_select_incoming() gets called if select returns less
  1279.   than 7 ready FD's.
  1280. - Added errorpage '%B' token to generate FTP URLs with a '%2f'
  1281.   inserted at the start of the url-path.  calls ftpUrlWith2f().
  1282.   (Henrik Nordstrom).
  1283. - Changed fqdncache.c to use LRU double-linked list instead of qsort()
  1284.   for replacement and cachemgr output.
  1285. - Changed ipcache.c to use LRU double-linked list instead of qsort()
  1286. - Changed hash_insert() and hash_join() to return void.
  1287.   for replacement and cachemgr output.
  1288. - Moved StoreEntry->method member to MemObject->method.
  1289. - Made StoreEntry->flags 16 bits.
  1290. - Made StoreEntry->refcount 16 bits.
  1291. - Changed URL-based public cache key to always include the request
  1292.   method.
  1293. Changes to squid-1.2.beta7 (Nov 24, 1997):
  1294. - Fixed poll() for Linux (David Luyer).
  1295. - SHA optimizations (David Luyer).
  1296. - Fixed errno clashes with macro on Linux (David Luyer).
  1297. - Fixed storeDirCloseSwapLogs(); logs might not be open.
  1298. - Fixed storeClientCopy2() bug.  Detect when there is
  1299.   no more data to send for objects in STORE_OK state.
  1300. - Fixed FTP truncation bug when ftpState->size == 0, e.g.
  1301.   especially directory listings.
  1302. - Mega FTP fix from Henrik Nordstrom.  A better job of
  1303.   implementing the '%2f' hack.
  1304. - Fixed some pipelined request bugs.  storeClientCopy() was
  1305.   being given the wrong StoreEntry, and we had a race condition
  1306.   which is now handled by storeClientCopyPending().
  1307. - Added initial SNMP support.
  1308. Changes to squid-1.2.beta6 (Nov 13, 1997):
  1309. - Fixed Authorized responses getting swapped out when they
  1310.   don't have Proxy-Revalidate reply header.
  1311. - Fixed Proxy Authentication support.  We never sent back
  1312.   a 407 reply, and were incorrectly incrementing the passwd
  1313.   before comparing it.
  1314. - Fixed stat()ing pathnames for default values before parsing
  1315.   config file (Ron Gomes).
  1316. - Fixed logging request and response headers on separate lines
  1317.   (Ron Gomes).
  1318. - Fixed FTP Authentication message (Henrik Nordstrom).
  1319. - Changed Proxy Authentication to trigger a reread of the passwd
  1320.   file if a password check fails (Henrik Nordstrom).
  1321. - Changed FTP to retry the first CWD with a leading slash if it
  1322.   fails without one.
  1323. Changes to squid-1.2.beta5 (Nov 6, 1997):
  1324. - Track the 'keep-alive ratio' for a peer as the ratio of
  1325.   the number of replies including 'Proxy-Connection: Keep-Alive'
  1326.   compared to the number of requests sent.  If the peer does
  1327.   not support Persistent connections then this ratio will tend
  1328.   toward zero.  If the ratio is less than 50% after 10 requests
  1329.   then we'll stop sending Keep-Alive.
  1330. - Proper support for %nn escapes in FTP, and numerous
  1331.   other fixes (Henrik Nordstrom).
  1332. - Support for Secure Hash Algorithm and framework for other
  1333.   hash functions as cache keys.
  1334. - Fixed SSL snprintf() bug which broke SSL proxying.
  1335. - Fixed store_dir swap log bug from reconfigure (SIGHUP).
  1336. - Fixed LRU Reference Age bug.  The arg to pow() must be
  1337.   minutes, not seconds.
  1338. Changes to squid-1.2.beta4 (Oct 30, 1997):
  1339. - Fixed DST bug in rfc1123.c
  1340. - Changed default http_accel_port to 80.
  1341. - added errorCon() as a ErrorState constructor function
  1342.   (Max Okumoto).
  1343. - Added ERR_FTP_FAILURE message for ftpFail().
  1344. - For FTP, the timeout callback must be moved to the 'data'
  1345.   descriptor when data transfer begins.  Otherwise we are
  1346.   likely to get a timeout on the control descriptor.
  1347. - Fixed double-free bug in httpRequestFree().
  1348. - Fixed store_swap_size counting bug in storeSwapOutHandle().
  1349. Changes to squid-1.2.beta3 (Oct 29, 1997):
  1350. - Initialize _res.options to RES_DEFAULT in dnsserver.c.
  1351. - Fix assertions which assumed 4-byte pointers.
  1352. - Fix missing % in fqdncache.c snprintf().
  1353. Changes to squid-1.2.beta2 (Oct 28, 1997):
  1354. - Fixed aiops.c and async_io.c so that they actually compile
  1355.   with USE_ASYNC_IO (Arjan de Vet).
  1356. - Fixed errState->errno causing problems with some macros
  1357.   (Michael O'Reilly).
  1358. - Fixed memory leaks in pconn.c (Max Okumoto).
  1359. - Enhanced 'client' program with 'ping' behaviour (Ron Gomes).
  1360. - Fixed InvokeHandlers() from calling memCopy() for ALL
  1361.   store_client's with callbacks.  A store_client might be reading
  1362.   from disk.
  1363. - Rewrote storeMaintainSwapSpace().  No longer will we scan one
  1364.   bucket at a time.  Instead we'll maintain a single LRU
  1365.   list.  When an object is 'touched' we move it to the
  1366.   top of this list.  When we need disk space, we delete
  1367.   from the bottom.
  1368. - Removed storeGetSwapSpace().
  1369. Changes to squid-1.2.beta1 ():
  1370. - Reworked storage manager to not keep objects in memory during
  1371.   transit.  In other words, no separate NOVM distribution.
  1372. - Lots of cleanup and debugging for beta release.
  1373. - Use snprintf() everywhere instead of sprintf().
  1374. - The 'in_memory' hash table has been replaced with a
  1375.   doubly-linked list.  New objects are added to the head of
  1376.   the list.  When memory space is needed, old objects are
  1377.   purged from the tail of the list.
  1378. Changes to squid-1.2.alpha7 ():
  1379. - fixes fixes fixes.
  1380. - Made Arjan's PROXY_AUTH ACL patch standard.
  1381. Changes to squid-1.2.alpha6 ():
  1382. - Simpler cacheobj implementation.
  1383. - persistent connection histogram
  1384. - SERVER-SIDE PERSISTENT CONNECTIONS:
  1385.          - Added pconn.c 
  1386.          - Addec Cofig.Timeout.pconn; default 120 seconds
  1387.          - Added httpState->flags
  1388.          - Added flags arg to httpBuildRequestHeader()
  1389.          - Added HTTP_PROXYING and HTTP_KEEPALIVE flags
  1390.          - Added 'Connection' to allowed HTTP headers (http-anon.c)
  1391. - Added 'Proxy-Connection' to allowed HTTP headers
  1392.   (http-anon.c)
  1393. - Merged proxyhttpStart() with httpStart() and created
  1394.   new httpBuildState().
  1395. - New httpPconnTransferDone() detects end-of-data on
  1396.   persistent connections.
  1397. Changes to squid-1.2.alpha5 ():
  1398. - New configuration system.  Everything is generated from
  1399.   'cf.data.pre', including the main parser, setting defaults,
  1400.   outputting current values, and freeing memory.  
  1401.   This also involved moving some of the local data structures
  1402.   (e.g. struct _acl *AclList in acl.c) to the Config
  1403.   structure.  (Max Okumoto)
  1404. - No more '/i' for regular expressions.  Now insert a '-i'
  1405.   to switch to case-insensitive.  Use '+i' for case-sensitive.
  1406. - When you have a variable named the same as its type, sizeof()
  1407.   gets the wrong one (fde).
  1408. - Need to flush unbuffered logs before fork().
  1409. - Added two fields swap log: refcount and e->flag.
  1410. - Removed all the .h files for each .c file.  Now #include stuff
  1411.   is in either: defines.h, enums.h, typedefs.h, structs.h,
  1412.   or protos.h, globals.h.  This greatly reduces dependencies
  1413.   between the various source files.
  1414. - globals.c is generated from globals.h by a Perl script.
  1415. - Started customizable error texts.
  1416. Changes to squid-1.2.alpha4 ():
  1417. - New MIME configuration, regular expression based
  1418. - Added request_timeout config option
  1419. - Multiple HTTP sockets (Lincoln Dale).
  1420. - Moved 'fds_are_n_free' check to httpAccept().
  1421. - s/USE_POLL/HAVE_POLL/; make poll() default if available.
  1422. - Changed storeRegister to use offsets and make immediate
  1423.   callbacks if appropriate.
  1424. - Removed icpDetectClientClose().  Some of that functionality
  1425.   goes into clientReadRequest() and the rest into
  1426.   httpRequestFree().
  1427. - Moved IP lookups to commConnect stuff.
  1428. - Added support for retrying connect().
  1429. - New inline debug() macro (David Luyer).
  1430. - Replace frequent gettimeofday() calls with alarm(3) based
  1431.   clock.  Need to add more gettimeofday() calls to get back
  1432.   high-resolution timestamp logging (Andres Kroonmaa).
  1433. - Added support for Cache-control: proxy-revalidate;
  1434.   based on squid-1.1 patch from Mike Mitchell.
  1435. Changes to squid-1.2.alpha3 ():
  1436. - Implemented persistent connections between clients and squid.
  1437. - Moved various FD tables (comm.c, fdstat.c, disk.c) to a single
  1438.   table in fd.c.
  1439. - Removed use of FD as an identifier in certain callback
  1440.   operations (ipcache, fqdncache).
  1441. - General code cleanup.
  1442. - Fixed typedefs for callback functions.
  1443. - Removed FD lifetime/timeout dichotomy.  Now we only have
  1444.   timeouts, however the lifetime concept/keyword may still
  1445.   linger in certain places.
  1446. - Change Makefile 'realclean' target to 'distclean'
  1447. - Changed config file parsing of time specifications to use
  1448.   parseTimeLine().
  1449. - Removed storetoString.c
  1450. Changes to squid-1.2.alpha2 ():
  1451. - Merged squid-1.1.9, squid-1.1.10 changes
  1452. Changes to squid-1.2.alpha1 ():
  1453. - Unified peer selection algorithm.
  1454. - aiops.c and aiops.h are a threaded implementation of
  1455.   asynchronous file operations (Stewart Forster).
  1456. - async_io.c and async_io.h are complete rewrites of the old
  1457.   versions (Stewart Forster).
  1458. - Rewrote all disk file operations of squid to support
  1459.   the idea of callbacks except where not required (Stewart
  1460.   Forster).
  1461. - Background validation of 'tainted' swap log entries (Stewart
  1462.   Forster).
  1463. - Modified storeWriteCleanLog to create the log file using the
  1464.   open/write rather than fopen/printf (Stewart Forster).
  1465. - Added the EINTR error response to handle badly interrupted
  1466.   system calls (Stewart Forster).
  1467. - UDP_HIT_OBJ not supported, removed.
  1468. - Different sized 'cache_dirs' supported.
  1469. ==============================================================================