]> git.ipfire.org Git - thirdparty/squid.git/blob - ChangeLog
Updated copyright
[thirdparty/squid.git] / ChangeLog
1 - Added 'max-conn' option to 'cache_peer'
2
3 Changes to squid-2.5
4 - Major rewrite of proxy authentication to support other schemes
5 than basic. First in the line is NTLM support but others can
6 easily be added (digest is on the way). See Programmers Guide.
7 (Robert Collins & Chemolli Francesco)
8 - Reworked how request bodies are passed down to the protocols.
9 Now all client side processing is inside client_side.c, and
10 the pass and pump modules is no longer used.
11 - Optimized searching in proxy_auth and ident ACL types. Should
12 now handle large access lists a lot more efficient.
13 (Francesco Chemolli)
14 - Fixed forwarding/peer loop detection code (Brian Degenhardt) -
15 now a peer is ignored if it turns out to be us, rather than
16 committing suicide
17 - Changed the internal URL code to obey appendDomain for internal
18 objects if it needs appending. This fixes weirdnesses where
19 a machine can think it is "foo.bar.com", and "foo" is requested.
20 (Brian Degenhardt)
21 - Added support for netfilter in linux-2.4. This allows transparent
22 proxy connections to function correctly in the absence of a Host:
23 header. This requires --enable-linux-netfilter to be passed through
24 to configure. (Evan Jones)
25
26 Changes to Squid-2.4.DEVEL4 ():
27
28 - Added --enable-auth-modules=... configure option
29 - Improved ICP dead peer detection to also work when the workload
30 is low
31 - Improved TCP dead peer detection and recovery
32 - Squid is now a bit more persistent in trying to find a alive
33 parent when never_direct is used.
34 - nonhierarchical_direct squid.conf directive to make non-ICP
35 peer selection behave a bit more like ICP selection with respect
36 to hierarchy.
37 - Bugfix where netdb selection could override never_direct
38 - ICP timeout selection now prefers to use parents only when
39 calculating the dynamic timeout to compensate for common RTT
40 differences between parents and siblings.
41 - No longer starts to swap out objects which are known to be above
42 the maximum allowed size.
43 - allow-miss cache_peer option disabling the use of "only-if-cached".
44 Meant to be used in conjunction with icp_hit_stale.
45 - Delay pools tuned to allow large initial pool values
46 - cachemgr filesystem space information changed to show useable space
47 rather than raw space, and platform support somewhat extended.
48 - Logs destination IP in the hierarchy log tag when going direct.
49 (can be disabled by turning log_ip_on_direct off)
50 - Async-IO on linux now makes proper use of mutexes. This fixes some
51 odd pthread segfaults on SMP Linux machines, at a slight performance
52 penalty.
53 - %s can now be used in cache_swap_log and will be substituded with
54 the last path component of cache_dir.
55 - no_cache is now a full ACL check without, allowing most ACL types
56 to be used.
57 - The CONNECT method now obeys miss_access requirements
58 - proxy_auth_regex and ident_regex ACL types
59 - Fixed a StoreEntry memory leak during "dirty" rebuild
60 - Helper processes no longer hold unrelated filedescriptors open
61 - Helpers are now restarted when the logs are rotated
62 - Negatively cached DNS entries are now purged on "reload".
63 - PURGE now also purges the DNS cache
64 - HEAD on FTP objects no longer retreives the whole object
65 - More cleanups of the dstdomain ACL type
66 - Squid no longer tries to do Range internally if it is not supported
67 by the origin server. Doing so could cause bandwidth spikes and/or
68 negative hit ratio.
69 - httpd_accel_single_host squid.conf directive
70 - "round-robin" cache_peer counters are reset every 5 minutes to
71 compensate previously dead peers
72 - DNS retransmit parameters
73 - Show all FTP server messages
74 - squid.conf.default now indicates if a directive isn't enabled in
75 the installed binary, and what configure option to use for enabling it
76 - Fixed a temporary memory leak on persistent POSTs
77 - Fixed a temporary memory leak when the server response headers
78 includes NULL characters
79 - authenticate_ip_ttl_is_strict squid.conf option
80 - req_mime_type ACL type
81 - A reworked storage system that supports storage directories in
82 a more modular fashion. The object replacement and IO is now
83 responsibility of the storage directory, and not of the storage
84 manager.
85 - Fixed a bogous MD5 mismatch warning sometimes seen when using
86 aufs or diskd stores
87 - Added --enable-stacktraces configure option to set PRINT_STACK_TRACE,
88 and extended support for this to Linux/GNU libc.
89 - Disabled the "request timeout" error message sent if the user agent
90 did not provide a request in a timely manner after opening the
91 connection. Now the connection is silently closed. The error message
92 was confusing user agents utilizing persistent connections.
93 - Fixed configure --enable descriptions to match the arg names.
94 - Eliminated compile warnings from auth_modules/MSNT code.
95 - Require first character of hostnames to be alphanumeric.
96 - Made ARP ACL work for Solaris.
97 - Removed storeClientListSearch().
98 - Added counters to track diskd operation success and
99 failures.
100 - Fixed range_offset_limit.
101 - Added code to retry ServFail replies for internal DNS
102 lookups.
103 - Added referer header logging (Jens-S. Voeckler).
104 - Added "multi-domain-NTLM" authentication module, a Perl
105 script from Thomas Jarosch.
106 - Added configurable warning messages for high memory usage,
107 high response time, and high page faults.
108 - Made store dir selection algorithm configurable.
109 - Added support for admin-definable extension methods,
110 up to 20.
111 - Added 'maximum_object_size_in_memory' as a configuration option -
112 this defines the watermark where objects transit from being true
113 hot objects to being in-transit objects in memory. It currently
114 defaults to 8 KB.
115 - Change to the fqdn code which changes how pending DNS requests
116 are treated as private and only become public once they are
117 completed. This can add extra load on DNS servers but prevents
118 all the pending clients blocking if one of the queries got
119 stuck. (Duane Wessels)
120 - Converted more code to use MemPools, from Andres Kroonmaa.
121 - Added more CYGWIN patches from Robert Collins.
122
123 Changes to Squid-2.4.DEVEL3 ():
124
125 - Added Logfile module.
126 - Added DISKD stats via cachemgr.
127 - Added squid.conf options for DISKD magic constants.
128
129 Changes to Squid-2.4.DEVEL2 (Feb 29, 2000):
130
131 Changes to Squid-2.4.DEVEL1 ():
132
133 Changes to Squid-2.3.STABLE4 (July 18, 2000):
134
135 - Fixed --localstatedir configure option (IKEDA Shigeru).
136 - Fixed IPFilter headers on OpenBSD (Nic Bellamy, Brad
137 Smith).
138 - Added pthread_sigmask() check to configure (Daniel
139 Ehrlich).
140 - Added CYGWIN patches from Robert Collins.
141 - Changed internal DNS lookups to retry queries that are
142 returned with RCODE 2 (ServFail).
143 - Added 'virtual port' support (Gregg Kellogg). If
144 'httpd_accel_uses_host_header' is enabled, then we use
145 the port number from the Host header. Otherwise, when
146 'httpd_accel_port' is set to "0" we use the port number
147 of the local end of the client socket.
148 - Fixed a typo in carp.c (Nikolaj Yourgandjiev).
149 - Made Squid accept GET requests that have a "content-length:
150 0" header.
151 - Added a sanity check on the NHttpSockets[] array index
152 (Gregg Kellogg).
153 - Added a friendlier message when Squid can't find any DNS
154 nameserver addresses to use (Daniel Kiracofe).
155 - Added nonstandard WEBDAV methods: BMOVE, BDELETE, BPROPFIND
156 (Craig Whitmore).
157 - Added missing '%c' token replacement in error page
158 generation.
159 - Fixed a bug with 'minimum_object_size' that prevented
160 internal icons from being loaded.
161 - Fixed "extra semicolon" bug in storeExpiredReferenceAge()
162 that could prevent any objects from being replaced.
163 - Make sure that storeDirDiskFull() doesn't actually
164 *increase* the cache size.
165 - Changed a storeSwapMetaUnpack() assertion to a recoverable
166 error condition.
167 - Removed "wccpHereIam" event check that could cause Squid
168 to stop sending HERE_I_AM messages.
169
170 Changes to Squid-2.3.STABLE3 (May 15, 2000):
171
172 - Fixed malloc linking problems on Solaris. The configure
173 script incorrectly set options for dlmalloc.
174 - Added a configure check to remove compiler optimization
175 for GCC 2.95.x.
176 - Updated MSNT authenticator module.
177 - Updated Estonian error pages.
178 - Updated Japanese error pages.
179 - Fixed expires bug in httpReplyHdrCacheInit. It was
180 incorrectly setting expires based on max-age. It was using
181 the current time as a basis, instead of the response date.
182 - Fixed "USE_DNSSERVER" typos.
183 - Added a workaround for getpwnam() problems on Solaris.
184 getpwnam() could fail if there are fewer than 256 FDs
185 available. This causes root to own some disk files.
186 - Added an 'offline_toggle' option via the cache manager.
187 - Added a 'minimum_object_size' option. Files smaller than
188 this size are not stored.
189 - Added 'passive_ftp' option to disable passive FTP transfers.
190 - Added 'wccp_version' option because some Cisco IOS versions
191 require WCCP version 3.
192 - The 'client' program in ping mode (-g) now prints transfer
193 throughput.
194 - Fixed logging of proxy auth username for redirected
195 requests.
196 - Fixed bogus Age values for IMS requests.
197 - Fixed persistent connection timeout for client-side
198 connections. It was hard-coded to 15 seconds, now uses
199 the 'pconn_timeout' value.
200 - Fixed up httpAcceptDefer. It wasn't being used properly
201 and caused high CPU usage when Squid gets close to the FD
202 limit.
203 - Numerous delay_pools fixes and checks.
204 - Fixed SNMP coredumps from running snmpwalk.
205 - Added a check for errno == EPIPE in icmp.c when pinger uses
206 a Unix socket instead of a UDP socket.
207 - Fixed ACL checklist memory initialization bugs.
208 - Cleaned up the MIB file. Replaced contact information and
209 checked description fields.
210 - Removed LRU reference_age hard-coded upper limit.
211 - Fixed async I/O FD leak.
212 - Made getMyHostname() more robust.
213 - Fixed domain list matching bug. "x-foo.com" wasn't properly
214 compared to ".foo.com" and confused splay tree ordering.
215 - Added a check for whitespace in hostnames and optionally
216 strip whitespace if 'uri_whitespace' setting allows.
217 - Added status code and checking to ASN/whois queries.
218
219 Changes to Squid-2.3.STABLE2 (Mar 2, 2000):
220
221 - Changed Copyright text.
222 - Changed configure so that some IRIX-6.4 hacks apply to
223 all IRIX-6.* versions.
224 - Cleaned up HTML bugs in error pages.
225 - Told configure to check for netinet/if_ether.h, which
226 is used in ARP ACL code, but might not be required.
227 - Added "Cookie" to known HTTP headers so it can be
228 used in anonymizer configuration.
229 - Added optional TCP_REDIRECT log code for logging
230 of 301/302 responses returned by Squid.
231 - Added a check for a currently running Squid process.
232 If the pid file exists, and the pid is running,
233 Squid complains and refuses to start another instance.
234 - Changed async I/O scope to PTHREAD_SCOPE_PROCESS for
235 IRIX.
236 - Fixed a bug with the PURGE method. The purge enable
237 flag was not getting cleared during reconfigure.
238 Also required PURGE method to be used in http_access
239 list before enabling.
240 - Fixed async I/O assertions for file open errors.
241 - Fixed internal DNS assertion when unpacking truncated
242 messages.
243 - Fixed anonymize_headers bug that caused all headers
244 to be allowed after a reconfigure.
245 - Fixed an access denied bug for accelerator-only installations.
246 - Fixed internal DNS initialization so that it uses
247 'dns_nameservers' settings in squid.conf if set.
248 - Fixed 'maxconn' ACL bug that caused it to work backwards
249 (Pedro Ribeiro).
250 - Fixed syslog bug for daemon mode on Linux.
251 - Fixed 'http_port' parsing bugs.
252 - Fixed internal DNS byte ordering bugs for PTR queries.
253 - Fixed internal DNS queue getting stuck during periods
254 of low activity (Henrik).
255 - Fixed byte ordering bugs for parsing EPLF FTP listings
256 on 64-bit systems.
257 - Fixed 'request_body_max_size' bug that caused all
258 POST, PUT requests to be denied if max size is set
259 to zero.
260 - Fixed 'redirector_access' bug when using 'myport' ACLs.
261 - Fixed CARP neighbor selection bugs for down peers.
262 - Added 'client_persistent_connections' and
263 'server_persistent_connections' flags to disable persistent
264 connections for clients and servers.
265 - Fixed access logging bug that caused many requests to be
266 logged as TCP_MISS.
267 - Added some bounds checking to delay pools code.
268
269 Changes to Squid-2.3.STABLE1 (Jan 9, 2000):
270
271 - Updated PAM authentication module from Henrik Nordstrom.
272 - Updated Bulgarian error messages from Svetlin Simeonov.
273 - Changed ACL routines so that User-Agent (browser) string
274 is always taken from compiled HTTP request headers
275 instead of passed as an argument to aclCreateChecklist.
276 - Added a 'strip' option to the 'uri_whitesace' configuration
277 directive and made it the default behavior. Whitespace
278 found in URI's is now stripped out by default.
279 - Added chroot feature. The 'chroot_dir' config option enables
280 it and specifies the directory.
281 - Changed clientBuildReplyHeader so that the Age header is
282 added only for cache hits, and only when we can calculate
283 a valid, positive age value.
284 - Changed clientWriteComplete and clientGotNotEnough so
285 that they keep persistent connections open for more types
286 of replies that don't have bodies.
287 - Changed filemap.c routines to dynamically grow filemap
288 space as needed.
289 - Added a hack to ftp.c to deal with ftp.netscape.com, which
290 sometimes doesn't acknowledge PASV commands.
291 - Fixed FTP bug with ftpScheduleReadControlReply; there
292 was not always a timeout handler on the control socket
293 after the transfer completed.
294 - Fixed FTP filedescriptor leak from invalid PASV replies.
295 - Changed httpBuildRequestHeader so that it doesn't
296 copy the Host header from the client request. Instead
297 we should generate our own Host header which is known
298 to be correct.
299 - Changed storeTimestampsSet to adjust entry->timestamp
300 if the response includes an Age header.
301 - Removed size limit from storeKeyHashBuckets.
302 - Changed fwdConnectStart from a "heavy" to a "light" event.
303 - Fixed an 'anonymize_headers' bug that affects unknown
304 HTTP headers. With the bug, if you list a header that
305 Squid doesn't know about (such as "Charset"), it would
306 add HDR_OTHER to the allow/deny mask. This caused all
307 unknown headers to be allowed or denied (depending on
308 the scheme you use). Now, with the bug fixed, an unknown
309 header in the 'anonymize_headers' list is simply ignored.
310
311 Changes to Squid-2.3.DEVEL3 ():
312
313 - Added MSNT auth module from Antonino Iannella.
314 - Added --enable-underscores configure option. This allows
315 Squid to accept hostnames with underscores in them. Your
316 DNS resolver may still complain about them, however.
317 - Added --heap-replacement configure option. This enables
318 the alternative cache replacement policies, such as
319 GDSF, and LFUDA.
320 - WCCP establishes and registers with the router faster.
321 - Added 'maxconn' acl type to limit the number of established
322 connections from a single client IP address. Submitted
323 by Vadim Kolontsov.
324 - Close FTP data socket as soon as transfer completes
325 (Alexander V. Lukyanov).
326 - Fixed ftpReadPass() to not clobber ctrl.message when
327 the PASS command fails.
328 - Added a redirect.c patch so squidGuard is able to do
329 per-user access control (Antony T Curtis).
330 - discard the pumpMethod() function, and instead use the
331 fact that the request has a request entity (content-length
332 present) (Henrik).
333 - Reload the MIME icons at reconfigure time (Radu Greab).
334 - Updated Richard Huveneers' SMB authentication module to
335 his version 0.05 package.
336 - Fixed lib/heap.c::heap_delete() bug when deleting the
337 last node.
338 - Fixed an integer conversion bug in
339 lib/rfc1035.c::rfc1035AnswersUnpack().
340 - Fixed lib/rfc1738 routines to encode reserved characters,
341 in addition to encoding the unsafe characters (Henrik).
342 - Changed the interface for splay compare and "walk"
343 functions to take a void pointer, instead of a splayNode
344 pointer (Henrik).
345 - Changed numerous HTTP parsing routines to use ssize_t
346 instead of size_t. This was done because size_t may be
347 signed or unsigned. When it is unsigned, gcc emits
348 numerous "comparison is always true" warnings. At least
349 we know ssize_t is always signed.
350 - Fixed src/HttpHeaderTools::httpHeaderHasConnDir() and
351 friends so that it properly handles multi-value lists.
352 - Added an "end" (ssize_t) parameter to
353 src/HttpReply::httpReplyParse() so that we know exactly
354 where to terminate the header buffer.
355 - Changed src/access_log.c::log_quote() so that it only
356 encodes whitespace characters, and not all URL-special
357 characters (Henrik).
358 - Added local port ACL type ("myport") (Henrik).
359 - Added maximum number of connections per client ("maxconn")
360 as an ACL type.
361 - Fixed proxy authentication username/password parsing to
362 be more robust (Henrik).
363 - Fixed ACL domain/host and domain/domain comparison
364 functions yet again. Eliminated duplicate code so that
365 only src/url.c::matchDomainName() contains this mysterious
366 code.
367 - Changed the 'http_port' option to accept an IP address
368 or hostname as well (Henrik).
369 - Removed 'tcp_incoming_addr' option.
370 - Added an access control list for the redirector
371 ('redirector_access'). Requests which match are sent to
372 the redirector. All requests. are redirected by default.
373 - Added the 'authenticate_ip_ttl' option. It specifies
374 how long a valid proxy authentication credential is
375 bound to a specific address.
376 - Added 280, 488, 591, and 777 to "Safe_ports" ACL.
377 - Removed the unused and highly questionable 'forward_snmpd_port'
378 option.
379 - Added an option to accept DNS messages from unknown nameservers.
380 This may be necessary if replies come from a different address
381 than queries are sent to.
382 - Added #includes for IP Filter files in netinet directory.
383 - Fixed a bug with retrying forwarded IMS requests (Henrik).
384 - Fixed a bug in src/client_side.c::clientInterpretRequestHeaders()
385 where we were checking a cache-control bit before getting the
386 mask from the HTTP headers (pallo@initio.no).
387 - Fixed a bug with "no_cache" access list. If not defined,
388 everything was uncachable by default.
389 - Fixed a bug with timed-out client-side HTTP connections.
390 We didn't cancel the read handler, which could lead to
391 "rwstate != NULL" warnings.
392 - Changed comm_open() to only call fdAdjustReserved() for
393 specific errors (ENFILE, EMFILE);
394 - Fixed NULL pointer bug in idnsParseResolvConf().
395 - Split CACHE_DIGEST_HIT into CD_PARENT_HIT and CD_SIBLING_HIT.
396 - Added DELETE request method.
397 - Added RFC 2518 HTTP status codes.
398 - Fixed handling of URL passwords when we need to rewrite a
399 BASE HREF URL (Henrik).
400 - Fixed a bug with FTP requests where a request gets aborted,
401 but we try to complete it anyway. It would result in a
402 "store_status != STORE_PENDING" assertion. The solution
403 is to check for ENTRY_ABORTED before reading from
404 the control channel too.
405 - Changed FTP to retry a request if Squid fails to establish
406 a PASV data connection (Henrik).
407 - Fixed numerous HTCP memory leaks and an uninitialized memory
408 bug.
409 - Changed httpMaybeRemovePublic() with RFC 2518 and 2616 in
410 mind (Henrik).
411 - Minor fixes for Rhapsody systems.
412 - Define _XOPEN_SOURCE_EXTENDED in squid.h so that AIX systems
413 don't include varargs.h.
414 - Changed src/store_client.c::storeClientType() so that
415 an entry can have more than one STORE_MEM_CLIENT.
416 - Changed src/store_client.c::storeClientReadHeader()
417 to check swapfile metadata (Henrik).
418 - Changed src/url.c::urlCheckRequest() to return FALSE for
419 any "https://" URL. These should always be CONNECT
420 instead. If Squid gets an "https://" URL, it is a browser
421 bug.
422 - Added numerous squid.conf options for controlling cache
423 digests. Previously these were hard-coded in
424 src/store_digest.c. (Martin Hamilton)
425 - Added 'cache_peer' option called 'digest-url' that
426 lets you specify the URL for a peer's digest.
427 (Martin Hamilton)
428 - Added DELAY_POOLS hacks to scan "slow" connections in
429 a random order (David Luyer).
430 - ARP_ACL fixes from Damien Miller. Linux 2.2.x uses a
431 per-interface arp/neighbour cache, whereas 2.0.x uses a
432 unified cache. Under 2.2.x you are required to specify
433 a interface name when looking up ARP table entries with
434 SIOCGARP.
435 - If the process umask is not set (i.e. 0), then Squid
436 changes it to 007.
437
438 Changes to Squid-2.3.DEVEL2 ():
439
440 - Added --enable-truncate configure option.
441 - Updated Czech error messages ()
442 - Updated French error messages ()
443 - Updated Spanish error messages ()
444 - Added xrename() function for better debugging.
445 - Disallow empty ("") password in aclDecodeProxyAuth()
446 (BoB Miorelli).
447 - Fixed ACL SPLAY subdomain detection (again).
448 - Increased default 'request_body_max_size' from 100KB
449 to 1MB in cf.data.pre.
450 - Added 'content_length' member to request_t structure
451 so we don't have to use httpHdrGetInt() so often.
452 - Fixed repeatedly calling memDataInit() for every reconfigure.
453 - Cleaned up the case when fwdDispatch() cannot forward a
454 request. Error messages used to report "[no URL]".
455 - Added a check to return specific error messages for a
456 "store_digest" request when the digest entry doesn't exist
457 and we reach internalStart().
458 - Changed the interface of storeSwapInStart() to avoid a bug
459 where we closed "sc->swapin_sio" but couldn't set the
460 pointer to NULL.
461 - Changed storeDirClean() so that the rate it gets called
462 depends on the number of objects deleted.
463 - Some WCCP fixes.
464 - Added 'hostname_aliases' option to detect internal requests
465 (cache digests) when a cache has more than one hostname
466 in use.
467 - Async I/O NUMTHREADS now configurable with --enable-async-io=N
468 (Henrik Nordstrom).
469 - Added queue length to async I/O cachemgr stats (Henrik Nordstrom).
470 - Added OPTIONS request method.
471
472 Changes to Squid-2.3.DEVEL1 ():
473
474 - Added WCCP support. This adds the 'wccp_router' squid.conf
475 option.
476 - Added internal DNS queries; Most installations can run
477 without the external dnsserver processes.
478 - Rewrote much of the code that stores cache objects on
479 disk. Developed a programming interface that should
480 allow new storage systems to be added easily. This still
481 is pretty ugly and needs a lot of work, however.
482 - Replaced async_io.c "tags" with callback data locks.
483 This probably breaks async IO in a bad way.
484 - Tried to write an Async IO disk storage module.
485 - Added code to replace the StoreEntry linked list with a
486 heap structure. This allows for different replacement
487 algorithms, instead of being stuck with LRU. This adds
488 the 'replacement_policy' squid.conf option. (John Dilley
489 et al).
490 - Fixed HTCP queries by actually checking for freshness
491 based on the HTCP header fields.
492 - Fixed passing of redirector command line arguments.
493 - Added 'request_header_max_size' squid.conf option.
494 - Added 'request_body_max_size' squid.conf option.
495 - Added 'reply_body_max_size' squid.conf option.
496 - Added 'peer_connect_timeout' squid.conf option.
497 - Added 'redirector_bypass' squid.conf option.
498 - Added RFC 2518 (WEBDAV) request methods.
499
500 Changes to Squid-2.2 (April 19, 1999):
501
502 - Removed all SNMP specific ACL code
503 SNMP now uses generic squid ACL's
504 - Removed view-based access crontrol
505 - Cleaned up and simplified SNMP section of squid.conf
506 - Changed the SNMP code to use a tree stucture.
507 - Added objects to MIB:
508 Request Hit Ratio's
509 Byte Hit Ratio's
510 Number of Clients
511 - Changed SNMP Agent to return object instances correctly.
512 - Added our own assert() macro so we can use debug() instead of
513 printing to stderr.
514 - Added eventFreeMemory().
515 - Fixed ipcCreate() bug when debug_log has FD <= 2.
516 - Changed watchChild() and related code in main.c so that
517 Squid can behave more like a proper daemon process.
518 - Added 'prefer_direct' option (enabled by default) so that
519 people can give parents higher preference than direct.
520 - Fixed ipc.c close() bug for async IO. On FreeBSD,
521 comm_close() doesn't work for child processes when async IO is
522 used.
523 - Fixed setting the public key for large ``icons'' (Henrik
524 Nordstrom).
525 - Rewrote peer digest module to fix memory leaks on reconfigure
526 and clean the code. Increased "current" digest version to 5
527 ("required" version is still 3). Revised "Peer Select" cache
528 manager stats.
529 - Added "-k parse" command line option: parses the config file
530 but does not send a signal unlike other -k options.
531 - Revamped storeAbort() calling. Only store_client.c has all
532 the right information to determine if the request should
533 be aborted. Now client and server modules just storeUnregister
534 without ever needing to call storeAbort.
535 - Small change of Squid output for FTP (Andrew Filonov,
536 Henrik Nordstrom).
537 - clientGetsOldEntry() sends old entry if new request status
538 is in the 500-range (Henrik Nordstrom).
539 - Changed configure so it works with IRIX6.4 C compiler (broken?)
540 option -OPT:fast_io=ON.
541 - Fixed comm_connect_addr() non-blocking connections for
542 SONY NEWSOS (Makoto MATSUSHITA).
543 - Changed "#ifdef __STDC__" to "#if STDC_HEADERS" as recommended
544 by autoconf documentation.
545 - Fixed client-side cache-control max-age (Henrik Nordstrom).
546 - Added a new error page: ERR_SHUTTING_DOWN. fwdStart() returns
547 this error if it is called while squid is in the process of
548 shutting down.
549 - Added support for linuxthreads package under FreeBSD (Tony Finch).
550 - Fixed HP-UX StatHist.c assertions by making the "hbase_f"
551 functions non-static (Michael Pelletier).
552 - Fixed logging of authenticated usernames even if the
553 authorization is not cached (Dancer).
554 - Fixed pconnPush() bug that prevented holding on to
555 persistent connections (Manfred Bathelt).
556 - Pid file now rewritten on SIGHUP.
557 - Numerous Ident changes:
558 - Ident lookups will now be done on demand if you use the
559 'ident' ACL type.
560 - The 'ident_lookup on|off' option has been replaced with
561 an access list, so you can do lookups only for some
562 client addresses.
563 - Added an 'ident_timeout' option to specifiy the amount
564 of time to wait for an ident lookup.
565 - Added a (local) hit rate to mempool metering.
566 - FTP Restarts (REST command) is now supported.
567 - Check for libintl.a on SCO3.2.
568 - Disable poll() on SCO3.2.
569 - Numerous Async IO enhancements from Henrik.
570 - Removed cache_mem_low and cache_mem_high options (Henrik
571 Nordstrom).
572 - Replaced 'persistent_client_posts' with 'broken_posts' access
573 list.
574 - Rewrote the anonymizer.
575 - Removed the http_anonymizer option.
576 - Added the anonymize_headers option to allow individual
577 referencing of headers for addition or removal. See
578 'anonymize_headers' in squid.conf for additional
579 configuration.
580 - Fixed config file parser's handing of optional directives.
581 Some people might get new warnings about unknown config
582 directives.
583 - Added 'myip' ACL type. This is the local IP address for
584 connected sockets (Luyer).
585 - Fixed parsing of FTP DOS directory listings with spaces
586 (Nordstrom).
587 - Numerous DELAY_POOL changes/fixes from David Luyer:
588 - Makes no-delay neighbors for DELAY_POOLS work by
589 using a fd_set with the connections to no-delay
590 peers marked in it.
591 - Makes IP addresses ending in 0 and 255, and
592 network number 255, work with individual and
593 network delay pools (they were previously not
594 permitted, and documented as such).
595 - Massive overhaul of delay pools code - dynamically
596 allocated delay pools, as many as required.
597 - delayPoolsUpdate stops running if DELAY_POOLS is
598 configured but no delay pools are configured.
599 - Initial delay pool levels are now configurable
600 as a percentage of the maximum for the pool in
601 question (used to be all set to 1 second worth
602 of traffic). Pools are restored to this level
603 on reconfiguratoin.
604 - Changed storeClientCopy to give a swap-in failure if
605 the number of open disk FD's is above the 'max_open_disk_fds'
606 limit. Otherwise, a very loaded cache will end up with
607 all disk files open for reading, and none for writing.
608 - Added lib/inet_ntoa.c from BSD Unix for systems that have
609 broken inet_ntoa(). (Erik Hofman).
610 - Added more specific FTP error messages for "permission
611 denied, "file not found," and "service unavailable."
612 (Tony Finch)
613 - Added xisspace(), xisdigit(), etc, macros to cast function
614 args and eliminate compiler warnings.
615 - Fixed case-sensitive comparisons of domain names (Henrik
616 Nordstrom).
617 - Added proxy-authentication to cachemgr.cgi's requests
618 (Henrik Nordstrom).
619 - Changed Squid to *truncate* rather than *unlink* purged
620 swap files. Can be reversed by undefining
621 USE_TRUNCATE_NOT_UNLINK in src/defines.h.
622 - Changed internal icon headers to use Cache-control
623 Max-age instead of Expires.
624 - Changed storeMaintainSwapSpace behavior to be adjusted
625 smoothly, instead of discretely, between store_swap_low
626 and store_swap_high. This includes the number of
627 objects to scan, number to remove, and time until the
628 next storeMaintainSwapSpace event.
629 - Fixed a quick_abort bug that incorrectly calculated
630 content lengths.
631 - Added getpwnam() auth module from Erik Hofman.
632 - Added 'coredump_dir' option.
633 - Fixed a peerDestroy() assertion that required peer->digest
634 to be NULL at the end of peerDestroy().
635 - configure script now automatically enables dlmalloc for
636 Solaris/x86.
637 - configure enables poll() on linux 2.2 and later (Henrik).
638 - Icon files are now distributed in binary format, install
639 will not need to run 'sh' and 'uudecode'.
640 - Fixed some bugs with large responses (>READ_AHEAD_GAP) and
641 re-forwarding requests and ENTRY_FWD_HDR_WAIT.
642 fwdCheckDeferRead() will NOT defer reading if the
643 ENTRY_FWD_HDR_WAIT bit is set.
644 - Fixed a "F->flags.open" assertion for aborted FTP PUT's.
645 - Fixed a (double) cast problem that caused statAvgTick()
646 events to be added as fast as possible.
647 - Changed httpPacked304Reply() to not include the Content-Length
648 header for 304 replies that Squid generates. We used to
649 include the length of the cached object, and this broke
650 persistent connections.
651
652 2.2.STABLE2:
653
654 - Fixed configure bug for statvfs() checks. Configure reports
655 "test: =: unary operator expected" or similar because an
656 unquoted variable is not defined.
657 - Fixed aclDestroyAcls() assertion because some ACL types
658 are not listed in the switch statement. Occurs for
659 srcdom_regex and dstdom_regex ACL types during reconfigure.
660 - Typo "applicatoin" in src/mime.conf
661 - The unlinkd daemon never saw the USE_TRUNCATE_NOT_UNLINK
662 #define because it didn't include squid.h.
663 - Fixed commRetryFD() when bind() fails. commRetryFD was
664 closing the filedescriptor, but it is the upper layer's
665 job to close it.
666 - Changed configure's "maximum number of filedescriptors"
667 detection to only use getrlimit() for Linux. On AIX,
668 getrlimit returns RLIM_INFINITY.
669 - Fixed snmpInit() nesting bug.
670 - Fixed a bug with peerGetSomeParent(). It was adding
671 a parent to the FwdServers list, regardless of the
672 ps->direct value. This could cause every request to
673 go to a parent even when always_direct is used.
674 - Changed fwdServerClosed() to rotate the "forward servers"
675 list when a connection establishment fails. Otherwise
676 it always kept trying to connect to the first server
677 int the list.
678
679 2.2.STABLE3:
680
681 - Fixed preprocessor problems for HP-UX in lib/safe_inet_addr.c.
682 - Avoid coredump in aclMatchAcl() if someone tries to use
683 proxy authentication with a non-HTTP request (e.g. icp_access).
684 - Moved 'ident_lookup_access' in squid.conf so it appears
685 after the ACL section.
686 - Fixed typo in squid.conf on "Config.Addrs.snmp_outgoing"
687 - Fixed a case in clientCacheHit() where we thought it
688 was a hit, but the reply status was not 200, so we
689 had to perform a cache miss. We forgot to change the
690 log_type and these were being recorded as TCP_HIT's.
691 - Fixed a void pointer subtraction bug in delayIdPtrHashCmp().
692 - Fixed delay_pools coredump and memory leak bugs from
693 NULL delay_id values.
694 - Fixed a SEGV bug with delay_pools when requesting
695 'objects' or 'vm_objects' from the cachemgr.
696 - Added a workaround for buggy FTP servers that return
697 a size of zero for non-zero-sized objects.
698 - Removed umask(0) call from main().
699 - Fixed a peer selection bug that caused us to never select
700 a neighbor based on ICP replies if the ICP timeout occurs.
701 In conjunction with this, removed the PING_TIMEOUT state.
702 - Fixed a store_rebuild bug that caused us to get stuck trying
703 if a cache_dir subdirectory didn't exist.
704 - Fixed a buffer overrun bug in gb_to_str().
705
706 2.2.STABLE4:
707
708 - Fixed a dread_ctrl leak caused in store_client.c
709 - Fixed a memory leak in eventRun().
710 - Fixed a memory leak of ErrorState structures due to
711 a bug in forward.c.
712 - Fixed detection of subdomain collisions for SPLAY trees.
713 - Fixed logging of hierarchy codes for SSL requests (Henrik
714 Nordstrom).
715 - Added some descriptions to mib.txt.
716 - Fixed a bug with non-hierarchical requests (e.g. POST)
717 and cache digests. We used to look up non-hierarchical
718 requests in peer digests. A false hit may cause Squid
719 to forward a request to a sibling. In combination with
720 'Cache-control: only-if-cached, this generates 504 Gateway
721 Timeout responses and the request may not be re-forwardable.
722 - Fixed a filedescriptor leak for some aborted requests.
723
724
725 Changes to Squid-2.1 (November 16, 1998):
726
727 - Changed delayPoolsUpdate() to be called as an event.
728 - Replaced comm_select FD scanning loops with global fd_set
729 structures. Inspired by Jeff Mogul's patch for squid 1.1.
730 - Moved functions common to dns.c, redirect.c, authenticate.c,
731 ipcache.c, and fqdncache.c into helper.c.
732 - Changed storeClientCopy2() so that it keeps sending the remainder
733 of a STORE_ABORTED request, instead of cutting off the client as
734 soon as the object becomes aborted.
735 - Fixed combined ipf-transparent proxy and a local http-accelerator
736 operation (Quinton Dolan).
737 - Rewrote base64_decode.c because of potential buffer overrun
738 bugs.
739 - Configurable handling of whitespace in request URI's.
740 See 'uri_whitespace' in squid.conf.
741 - Added ability to generate HTTP redirect messages from
742 the redirector output by prepending "301:" or "302:" to the
743 new url. See FAQ 4.16 for more details.
744 - Eliminated refreshWhen() which was out-of-sync with refreshCheck()
745 potentially causing under-utilized cache digests
746 - Maintain refreshCheck statistics on per-protocol basis so we
747 can tell why ICP or Digests return too many misses, etc.
748 - Fixed delay_pools.c class2/class3 typo (Simon Woods).
749 - Changed squid.conf's default access controls to deny all
750 HTTP requests. Admins must write ACL rules to specifically
751 allow their local clients.
752 - Patched French error messages (Mathias HERBERTS).
753 - NextStep porting fixes by Mike Laster:
754 - use xstrdup() in cf_gen.c
755 - check for putenv() in configure
756 - #define S_ISDIR macro
757 - Added --disable-poll configure option (Henrik Nordstrom).
758 - Fixed internal URL hostname case bugs (Henrik Nordstrom).
759 - Patched ftp.c so we never cache autenticated FTP requests
760 (Henrik Nordstrom).
761 - Fixed FTP authentication. We tried to unescape authentication
762 given by basic authentication which is not URL escaped
763 (Henrik Nordstrom).
764 - Fixed HTTP version for common logfile format (Henrik Nordstrom).
765 - Added 'redirect_rewrites_host_header' option to disable rewriting
766 of Host header for redirector responses (Henrik Nordstrom).
767 - Allow semi-customized error message signatures (Henrik Nordstrom).
768 - Fixed bug with errors for unsupported requests (Henrik Nordstrom).
769 - Fixed handling of blank lines in ACL input files (Henrik
770 Nordstrom).
771 - Changed proxy_auth ACL type to consist of a list of valid
772 users. REQUIRED == any (same as ident ACL). ACL type user
773 changed to ident since this is what it really is.
774 (Henrik Nordstrom).
775 - Fixed long URL bugs; make sure 'log_uri' never exceeds
776 MAX_URL bytes.
777 - Allow comments in external ACL files (Gerhard Wiesinger).
778 - Added 'range_offset_limit' configuration option. Requests
779 with ranges that start after this value will be passed
780 on unmodified, and Squid will not cache the response
781 (Henrik Nordstrom).
782 - Added Client HTTP Hit byte counters to 'counters' output
783 (Douglas Swarin).
784 - Got Squid to compile with --enable-async-io on FreeBSD.
785 - Fixed infinite loop bug for cachemgr 'config' option.
786 - Fixed cachability bugs for replies with Pragma: no-cache.
787 - Made content-type multipart/x-mixed-replace uncachable.
788 - Y2K fix for parsing dates in "Wed Jun 9 01:29:59 1993 GMT"
789 format (Richard Kettlewell).
790 - Fixed passing -s option to dnsserver processes (Alvaro Jose
791 Fernandez Lago).
792 - Changed proxy_auth to work on internal objects and when in
793 accelerator mode. (Henrik Nordstrom)
794 - Added login=user:password option to cache_peer directive to
795 be used from a dial-up cache where the parent requires proxy
796 authentication. (Henrik Nordstrom)
797 - If you want to "auto-login", then use a URL on the form
798 http://username:password@server/.... Squid now picks this up
799 when going direct, and turns it into basic WWW
800 authentication. It is also possible to do automatic login to
801 certain servers by using a redirector to add the needed
802 authentication information. (Henrik Nordstrom)
803 - Changed refreshCheck() so that objects with negative age
804 are always stale.
805 - Fixed "plain" FTP listings (Henrik Nordstrom).
806 - Fixed showing banner/logon message for top-level FTP
807 directories (Henrik Nordstrom).
808 * Changes below have been made to SQUID_2_1_PATCH1
809 - Fixed pinger packet size assertion.
810 - Fixed WAIS forwarding.
811 - Fixed dnsserver coredump bug caused by using both -D and
812 -s options.
813 * Changes below have been made to SQUID_2_1_PATCH2
814 - Fixed EBIT macro bugs when the bitmask is a 64-bit long.
815 - Fixed proxy auth NULL password bug.
816 - Fixed queueing of multiple peerRefreshDNS events.
817 - Added a stack of StoreEntry objects to be released after
818 store rebuild completes.
819 - Fixed NULL pointer bugs with too-large requests (found by
820 Martin Lathoud).
821 - Fixed reading replies from buggy ident servers. Replies
822 might not have terminating CR or LF (Henrik Nordstrom).
823 - Changed internal StoreEntry key so that the request method
824 is encoded as a single octet. Encoding an enumerated type
825 has size and byte-order incompatibilities, especially for
826 cache digests.
827 - Fixed storeEntryLocked so that SPECIAL, but PRIVATE entries
828 are not always locked. This fixes having multiple
829 store_digest's stuck in memory.
830 - Fixed clientProcessOnlyIfCachedMiss so it unlocks and
831 unregisters from "cache hit" entries.
832 * Changes below have been made to SQUID_2_1_PATCH3
833 - Fixed memory leak in clientHandleIMSReply for
834 storeClientCopy failures.
835
836 Changes to Squid-2.0 (October 2, 1998):
837
838 - Added NAT/Transparent hijacking code from Quinton Dolan.
839 - Added actual filesystem usage to cachemgr 'storedir' page.
840 Only works for operating systems which support statvfs().
841 - Fixed HTCP compile-time bugs.
842 - Fixed quick_abort bugs. Configured values are stored as
843 Kbytes, not bytes.
844 - Removed fwdAbortFetch(). It breaks quick_abort and seems
845 mostly useless.
846 - Changed storeDirSelectSwapDir() to skip swap directories
847 when their utilization is over the high water mark ratio.
848 - Fixed off-by-one bug for dead neighbor detection (Joe Ramey).
849 - fixed bugs in Content-Range header generation
850 - changed the way Range requests are handled:
851 - do not "advertise" our ability to process ranges at
852 all
853 - on hits, handle simple ranges and forward complex
854 ones
855 - on misses, fetch the whole document for simple ranges
856 and forward range request for complex ranges
857 The change is supposed to decrease the number of cases when
858 clients such as Adobe acrobat reader get confused when we
859 send a "200" response instead of "206" (because we cannot
860 handle complex ranges, even for hits) Note: Support for
861 complex ranges requires storage of partial objects.
862 - Removed SNMP mib-2.system group from squid.
863 - Removed SNMP ability to iterate through ipcache and friends.
864 - Added SNMP ipcache/fqdncache basic statistics.
865 - Converted SQUID-MIB to SMIv2 (RFC 1902).
866 - Moved SQUID-MIB to enterprises section of the tree in preparation
867 of the split into PROXY-MIB & SQUID-MIB.
868 - Corrected minor errors in SQUID-MIB.
869 - Moved uptime into cacheSystem from cacheConfig.
870 - Corrected a number of get-next-request bugs, snmpwalk should now
871 return all objects and not skip some.
872 - Fixed netdbClosestParent() so it won't return sibling
873 peers.
874 - Fixed a bug with secondary clients on entries with
875 ENTRY_BAD_LENGTH set. We should release the
876 bad entry to prevent secondary clients jumping on.
877 - Changed MIB to prevent parse warnings at startup.
878 * Changes below have been made to SQUID_2_0_PATCH1
879 - Fixed a forwarding loop bug. Even though we were detecting
880 a loop, it was not being broken.
881 - Try to prevent sibling forwarding loops by NOT forwarding a
882 request to a sibling if we have a stale copy of the object.
883 Validation requests should only be sent to parents (or
884 direct).
885 - Fixed ncsa_auth hash bugs when re-reading password file.
886 - Changed clientHierarchical() so that by default SSL/CONNECT
887 requests do NOT go to neighbor caches.
888 - Changed clientHandleIMSReply() to not call storeAbort()
889 because there can be more than one client hanging on the
890 StoreEntry. This hopefully fixes "store_status !=
891 STORE_ABORTED" assertions.
892 - Added temporary fix to httpMakePublic() to prevent assertions
893 (!EBIT_TEST(e->flags, RELEASE_REQUEST)) in storeSetPublicKey().
894 * Changes below have been made to SQUID_2_0_PATCH2
895 - PATCH1 introduced a seriously stupid bug which prevented ICP
896 queries for all requests. Fixed by checking
897 request->hierarchical in peerSelectFoo().
898
899 Changes to squid-1.2.beta25 (September 21, 1998):
900
901 - Fixed async IO bugs from adding filedescriptor arg to AIOCB
902 callbacks (Henrik Nordstrom).
903 - Fixed store_swapout.c assertion. We were freeing object data
904 past the swapout_done offset. This probably happens (only?)
905 when an object changes from cachable to uncachable while
906 it is being swapped out.
907 - Added MEM_CLIENT_SOCK_BUF type so we can change the size
908 of the buffers used for writing data to the client sockets.
909 - Added configure check for libbind.a. If found, it will be
910 used instead of libresolv.a.
911 - Changed fwdStart() to always allow internally generated
912 requests, such as for peer digests. These requests are
913 known to fwdStart() because the address arg is set to
914 'no_addr'.
915 - Completed initial HTCP implementation. It works, but is not
916 tested much.
917 - Added counters for I/O syscalls.
918 - Fixed httpMaybeRemovePublic. With broken ICP neighbors
919 (netapp) Squid doesn't use private keys. This caused us
920 to remove almost every object from the cache.
921 - Added 'asndb' cachemgr stats to show AS Number tree.
922 - Fixed AS Number byte-order bug for netmasks.
923 - Fixed comm_incoming calling rate for high loads (Stewart
924 Forster).
925 - Give always_direct higher precedence than never_direct
926 (Henrik Nordstrom).
927 - Changed PORT ACL type to accept ranges. Now you can easily
928 deny, for example, all priveleged ports except 80, 70, 21,
929 etc.
930 - ARP ACL fixes for Linux (David Luyer).
931 - Replaced various "EBIT" flags bitfileds with structures of
932 "int:1" members.
933 - Changed storeKeyPrivate and storeKeyPublic to be a bit more
934 efficient by removing snprintf(). This causes an
935 incompatibility with old cache keys, however. To transition,
936 we will look up both the new and old style keys for about the
937 next 30 days. After that, if you haven't run this (or a
938 future) version, your cache contents will be lost.
939 - Made the client-side write buffer size configurable with
940 a #define in defines.h. By default it is still 4096 bytes.
941 - Removed redirectUnregister(). It should be unnecessary
942 because of cbdata locks.
943 - Fixed multiple HEAD request brokennesses (Henrik Nordstrom).
944 - Changed non-blocking connect(2) code to call getsockopt()
945 instead of connect() again. This is the approach recommended
946 by Stevens, and fixes bugs on BSD-ish systems when subsequent
947 connect() calls loop with EAGAIN status.
948 - Added MD5 cache keys to memory pool accounting.
949 - Added code to track number of open DISK descriptors and stop
950 swapping out objects if the number of disk descriptors becomes
951 too large. For now the limit must be manually configured with
952 the 'max_open_disk_fds'. By default, there is no limit.
953 - Stopped encoding a request method in the high byte of the ICP
954 reqnum field. Instead queried cache keys are copied to a
955 static array, indexed by the reqnum, modulo the array size.
956 Now we just use the request number to lookup a cache key,
957 instead of rebuilding it from the ICP reply URL and method,
958 unless we have netapp neighbors--they don't do reqnum
959 properly.
960 - Fixed reconfigure memory access bugs in redirect.c.
961 - Ignore unreasonably large ICP RTT values which cause overflow
962 bugs in calculating the average RTT (thanks Niall!)
963
964 Changes to squid-1.2.beta24 (August 21, 1998):
965
966 - Added Bulgarian error pages by Evgeny Gechev.
967 - Changed StoreEntry->lock_count to a u_short.
968 - Replaced urlcmp with strcmp
969 - Fixed pragma no-cache ejecting ENTRY_SPECIAL objects
970 (Henrik Nordstrom).
971 - Eliminated unneeded BASE HREF on "root" directories (Henrik
972 Nordstrom).
973 - Fixed peerDigestFetchFinish() assertion caused by forwarding
974 failures (e.g. miss_access rules).
975 - Changed signal handlers with ASYNC_IO and Linux so that
976 -k command line options work (Miquel van Smoorenburg).
977 - Rewrote shutdown code to use events instead of setting
978 FD timeouts.
979 - Fixed cachemgr 'objects' (statObjects()) by adding a check
980 for READ_AHEAD_GAP, and calling storeCheckSwapout() in
981 storeBufferFlush(). Otherwise, the read-past pages would
982 never be freed.
983 - Fixed DNSSERVER shutdown bugs. The re-opened dnsserver processes
984 were being closed by the dnsServerShutdown event.
985 - Modified storeHashInsert() to insert PRIVATE objects at
986 the tail of the LRU list, and PUBLIC objects at the head.
987 Thus, PRIVATE objects get kicked out quicker.
988 - Added David Luyer's DELAY_POOLS code.
989 - Fixed a bug due to HEAD replies which lack the end-of-headers
990 line.
991 - Made proxy-auth realm string configurable (Bob Franklin)
992 - Changed default mime time to a viewable one (Henrik Nordstrom).
993 - configure fixes for Sony's NEWS-OS 6.x (Makoto MATSUSHITA).
994 - Fixed 'you are running out of filedescriptors' bug which
995 could cause the HTTP incoming connection handler to not
996 be reset.
997 - Changed syslog logging. Now squid debug levels 0 and 1 go
998 to syslog. Level 0 gets LOG_WARNING and level 1 gets LOG_NOTICE
999 (this needs more work!)
1000 - Fixed memory access errors in statAvgTick().
1001 - Fixed duplicate requestUnlink() bug in forward.c
1002 - Fixed possible memory access bugs from not setting e->mem_obj
1003 = NULL in destroy_MemObject().
1004 - Deleted TCP_IMS_MISS tag. Always use TCP_IMS_HIT instead.
1005 - Modified headersEnd and httpMsgIsolateHeaders to account
1006 for funky line terminations such as CRCRNL.
1007 (``but Netscape and IE _tolerate_ this'')
1008 - Fixed carp functions (Eric Stern).
1009 - Replaced internal proxy_auth code with extern authentication
1010 module (Arjan de Vet).
1011 - moved hash.c to libmiscutil.a.
1012 - Fixed handling of ICP queries with whitespace in URLs.
1013 Now we return ICP error and escape the URL before logging.
1014 - Added configure check for socklen_t (David Luyer).
1015 - Removed USE_SPLAY #defines; it is now standard.
1016 - Added FD arg to async IO callbacks (AIOCB) so we can eliminate
1017 temporary disk_ctrl_t structures.
1018 - Changed ENOSPC disk write errors to reduce specific cache_dir
1019 sizes, and not just the size of the cache as a whole.
1020 - Added httpMaybeRemovePublic() to purge public objects for
1021 certain responses even though they are uncachable. This is
1022 needed, for example, when an initially cachable object
1023 later becomes uncachable.
1024 - Added refresh_pattern options to ignore client reloads
1025 (Henrik Nordstrom)
1026 - Relocated disk.c code which combines blocks for writing
1027 (Stewart Forster).
1028
1029 Changes to squid-1.2.beta23 (June 22, 1998):
1030
1031 - Added Turkish error pages by Tural KAPTAN.
1032 - Added basic support for Range requests. For most cachable
1033 requests, Squid replies with an "Accept-Ranges" header. Upon
1034 receiving a potentially cachable Range request for a not
1035 cached object, Squid requests the whole object from origin
1036 server and then replies with specified range(s) to the
1037 client. Multi-range requests are supported. Adjacent
1038 overlapping ranges are merged. If-Range requests are
1039 supported. Limitations: Multi-range requests with out of
1040 order ranges are not supported.
1041 - Made md5.c use standard memcpy and memset if they are
1042 avaliable.
1043 - Memory pools will now shrink if Squid is run-time
1044 reconfigured with smaller value of memory_pools_limit tag.
1045 - Added counter for number of clients (Tomi Hakala).
1046 - Changed neighbor UP/DOWN algorithm to require 10 failed TCP
1047 connections for UP->DOWN transition.
1048 - Added 'unique_hostname' configuration option when its
1049 necessary to have multiple machines with the same visible
1050 hostname.
1051 - Fixed pumpReadFromClient() to not read too many bytes on
1052 persistent connections.
1053 - We can now cache HTTP replies with Set-Cookie. These evil
1054 headers are now filtered out for cache hits on the client
1055 side.
1056 - Fixed SNMP bugs caused by using snmpwalk.
1057 - Fixed snmp system Group; all objects are now returned.
1058 - Fixed snmp system Group sysDescr and sysContact.
1059 - Fixed snmp system Group sysObjectID it now returns a OBJECT
1060 IDENTIFIER.
1061 - Allocate FwdState from mem pools.
1062 - Minor HTCP progress.
1063 - Moved 'miss_access' ACL check from client_side.c to forward.c
1064 - Fixed logging of usernames for requests which require
1065 proxy-authentication.
1066 - Fixed HTTP request parser to accept lowercase HTTP identifier
1067 (Oskar Pearson).
1068 - Fixed FTP listings to always include links to the parent
1069 directory (Henrik Nordstrom).
1070 - Fixed FTP to show an "empty" listing instead of showing
1071 a "document contains no data" error (Henrik Nordstrom).
1072 - Fixed refreshCheck() bug. Often it was checking the
1073 refresh patterns against the string "[null_mem_obj]"
1074 because we moved URLs to MemObject.
1075 - Added CARP support by Eric Stern.
1076 - Fixed select-spin bug when an ICP reply actually gets queued
1077 and we failed to execute the write callback.
1078 - Fixed a storeCheckSwapOut bug. We were freeing up to
1079 the queued offset instead of the done offset. This
1080 resulted in a small chunk of object data not being in
1081 memory and not yet written to disk. A client could
1082 recieve a partial object because file_read() unexpectedly
1083 returns EOF.
1084 - Fixed proxy-authentication hangs (Henrik Nordstrom).
1085 - Fixed request_t->flags bug causing authenticated, proxied
1086 responses to be cached (Arjan de Vet).
1087 - Fixed MIME types for .tgz extension (Henrik Nordstrom).
1088 - Added view and download options to FTP listings (Henrik
1089 Nordstrom).
1090 - Modified configure to allow using pre-installed libdlmalloc.a
1091 (Masashi Fujita).
1092 - Fixed cachemgr 'objects' implementation.
1093 - Changed refreshCheck() algorithm. For cached objects, we
1094 now check, in the following order:
1095 * request max-age
1096 * response Expires (if present)
1097 * refresh_pattern max-age
1098 * response Last-Modified compared to refresh_pattern
1099 LM-factor (only if Last-Modified is present)
1100 * refresh_pattern min-age
1101 - Changed Copyrights.
1102
1103 Changes to squid-1.2.beta22 (June 1, 1998):
1104
1105 - do not cut off "; parameter" from "digitized" Content-Type
1106 http fields
1107 - Added X-Request-URI for persistent connection debugging
1108 (Henrik Nordstrom)
1109 - Added Polish error pages from Maciej Kozinski.
1110 - Fixed hash_first/hash_next bugs with **Current pointer.
1111 Replaced with *next pointer.
1112 - Fixed PUT/POST bugs in client (Henrik Nordstrom).
1113 - Deny forwarding loops in httpd accel mode (Henrik Nordstrom).
1114 - Fixed eventRun "spin" bug when event delta time == 0.
1115 - Fixed setting Last Modified time on cached entries when
1116 receiving a 304 reply.
1117 - Added while loop in httpAccept().
1118 - Added while loop in icpHandleUdp().
1119 - Fixed some small memory leaks.
1120 - Fixed single-bit-int flag checks (Henrik Nordstrom).
1121 - Replaced "complex" (offset accounting) calls to snprintf with MemBuf
1122 - Do not send only-if-cached cc directive with requests
1123 for peer's digests.
1124 - Added "automatic tuning" for incoming request rate, i.e.
1125 how often to check HTTP and ICP sockets. See comm.c
1126 comments for details.
1127
1128 Changes to squid-1.2.beta21 (May 22, 1998):
1129
1130 - Added Italian error pages by Alessio Bragadini.
1131 - Added Estonian error pages by Toomas Soome.
1132 - Added Russian (koi-r) error pages by Andrew L. Davydov.
1133 - Added Czech error pages by Jakub Nantl.
1134 - Fixed asnAclInitialize calling to prevent coredump.
1135 - Fixed FTP directory parsing again.
1136 - Made FTP directory listing "Generated" tagline like
1137 the one for error pages.
1138 - Fixed an assertion coredump in statHistCopy from
1139 reconfiguring with different #peers in squid.conf
1140 - Ignore leading whitespace on requests (and replies). RFC
1141 2068 section 4.1, robustness (Henrik Nordstrom)
1142 - Fixed keep_alive bug. We did not always honour reply
1143 headers, but rather assumed connections could be persistent.
1144 - Fixed reading whois output for AS numbers, especially when
1145 they are longer than 4 KB.
1146 - Removed 'cache_stoplist_pattern' configuration option. This
1147 feature is now handled by 'no_cache'.
1148 - If a URN resolves to only one URL, just return it immediately
1149 instead of giving the user a "choice" (Andy Powell).
1150 - Fixed year-2000 bug in lib/iso3307.c (Henrik Nordstrom).
1151 - Changed squid-internal object names.
1152 - Added netdb exchange protocol.
1153 - Fixed wordlistDestroy() uninitialized pointer bug in
1154 ftpParseControlReply.
1155 - Fixed redirector subprocess to show real program name.
1156 - Changed URN menu output to be sorted.
1157 - Added fast select(2) timeouts when using ASYNC_IO.
1158 - Added ARP ACL support for Linux (David Luyer).
1159 - Added binary http headers to requests
1160 - request_t objects are now created and destroyed in a consistent way
1161 - Fixed cache control printf bug
1162 - Added a lot of new http header ids
1163 - Improved Connection: header handling; now both Connection and
1164 Proxy-Connection headers are checked for connection directives
1165 - Connection request header is now handled correctly regardless
1166 of its position and the number of entries
1167 - Only replies with valid Content-Length can be sent with keep-alive
1168 connection directive (Henrik Nordstrom)
1169 - Better handling of persistent connection "clues" in HTTP headers;
1170 the decision now depends on HTTP version (and User-Agent exceptions)
1171 - Removed handling of "length=" directive in IMS headers;
1172 the directive is not in the HTTP/1.1 standard;
1173 standing by for objections
1174 - allowed/denied headers are now checked using bit masks instead of
1175 strcmp loops
1176 - removed Uri: from allowed headers; Uri is deprecated in RFC 2068
1177 - removed processing of Request-Range header (not in specs?)
1178 - Fixed byte-order bugs in cacheDigestHashKey.
1179 - Changed hash_remove_link() to return void.
1180 - Changed ipcache_gethostbyname() to return NULL if
1181 i->addrs.count == 0.
1182 - Added millisecond-timing to select/poll loops and event
1183 queue.
1184 - Changed 'peerPingTimeout' value to be twice the average
1185 of all the peer ICP RTT's.
1186 - Added 'half_closed_clients' option to force closing of
1187 client connections which might only be half-closed.
1188 - Fixed matchDomainName coredump bug.
1189 - Don't cache HTTP replies with Vary: headers until we
1190 get content negotiation working.
1191 - Fixed SSL proxying to forward full HTTP request headers.
1192 - Changed storeGetMemSpace(). Only purge down to the HIGH
1193 water mark; move locked entries to the head of the inmem
1194 list.
1195 - Changed clientReadRequest() to locally handle any
1196 "squid-internal-static" URL for any host.
1197 - Disable persistent connections for client connections
1198 from broken Netscape User-Agent, version 3.* (Stewart Forster)
1199
1200 Changes to squid-1.2.beta20 (April 24, 1998):
1201
1202 - Improved support for only-if-cached cache control directive.
1203 - Enabled 304 replies for ENTRY_SPECIAL objects (e.g., icons).
1204 - Fixed 'quick_abort' percent calculation bug.
1205 - Fixed quick_abort FPE bug.
1206 - Changed more errno-checking functions to use ignoreErrno().
1207 - Added ERESTART to ignoreErrno() because of report from
1208 a Solaris system.
1209 - Fixed '#elsif' typo.
1210 - Fixed MemPool assertion by moving memInit() to before
1211 configuration parsing functions.
1212 - Fixed default 'announce_period' value (was 1 day, should
1213 be 0) (Joe Ramey).
1214 - Added configure warning for low filedescriptors and pointer
1215 to FAQ.
1216 - Fixed httpBodySet() bug causing URN related coredumps.
1217 - Changed ipcacheCycleAddr() to always cycle through all all
1218 available addresses, and not just advance when one of
1219 them goes BAD.
1220 - Fixed squid-internal bug for mixed-case hostnames (Henrik
1221 Nordstrom).
1222 - Fixed ICP counting probelm. icpUdpSend() arg should be
1223 LOG_ICP_QUERY instead of LOG_TAG_NONE.
1224 - Added some additional fault toleranse on FTP data channels
1225 (Henrik Nordstrom).
1226 - Corrected error reporting on FTP "hacks" (Henrik Nordstrom).
1227 - Added lock/unlock for StoreEntry during storeAbort().
1228 - Added filemap bit usage stats to cachemgr 'storedir' and
1229 'info'.
1230 - Replaced 'cache_stoplist' with 'no_cache' Access list.
1231 - Fixed (hopefully) remaining swapfile-open-at-exit bugs.
1232 - Fixed default hierarchy_stoplist to be ``default if none.''
1233 - Fixed 'fake a recent reply' hack for detecting DEAD
1234 and ALIVE neighbors (Joe Ramey).
1235 - Fixed FTP directory parsing bugs (Joe Ramey).
1236 - Fixed ftpTraverseDirectory coredump for NULL ftpState->filepath
1237 (Joe Ramey).
1238 - Fixed daylight savings time bug (again).
1239 - A lot of Cache Digests additions, fixes, and tuning.
1240 Cache Digests are still "very experimental".
1241 - Fixed snprintf() bug. When len == 1, snprintf() would treat
1242 the buffer as unknown size, emulating sprintf() behaviour.
1243 - Made Error page language configurable with configure script
1244 (Henrik Nordstrom).
1245 - Fixed squid-internal URLs when http_port == 80.
1246 - Remember the client address on redirected requests (Henrik
1247 Nordstrom).
1248 - Don't rebuild the request if the redirector returned the same
1249 URL (Henrik Nordstrom).
1250 - Rewrite Host: header on redirected requests (Henrik
1251 Nordstrom).
1252 - Include port (if non-standard) in generated Host: headers
1253 (Henrik Nordstrom).
1254 - Fixed rfc1123 timezone hacks for Windows NT
1255 (Henrik Nordstrom).
1256 - Added Russian Error pages by Ilia Zadorozhko.
1257 - Added totals for ICP and HTTP hits to cachemgr client_list
1258 output.
1259 - Changed error message to 'Generated TIME by HOST (SQUID/VER)'
1260 because any string with an '@' must be an email address.
1261 - Fixed POST for content-length == 0.
1262 - Fixed "huge 304 reply" loop bug.
1263 - Fixed --enable-splaytree compile bugs.
1264 - Removed ASN lookup code in peer_select.c.
1265 - Added warnings if ACL code detects subdomains in SPLAY
1266 trees.
1267 - Rewrote some bits of httpRequestFree() to eliminate
1268 possible bugs that could cause an "e->lock_count" asseertion.
1269 - Added value/bounds checking to _db_init() when setting
1270 the debugLevels[] array.
1271
1272 Changes to squid-1.2.beta19 (Apr 8, 1998):
1273
1274 - Squid-1.2.beta19 compiles and runs on Windows/NT with
1275 Cygnus Gnu-WIN32 b19 (Henrik Nordstrom).
1276 - Added French Error pages by Frank DENIS.
1277 - Added Dutch Error pages by Mark Visser
1278 - Added German Error pages by Bernd P. Ziller, Jens Frank,
1279 and Anke S.
1280 - Added support for only-if-cached cache-control directive.
1281 - Added RELAXED_HTTP_PARSER #define to allow requests which are
1282 missing the HTTP identifier on the request line (e.g. buggy
1283 SpyGame queries). RELAXED_HTTP_PARSER is undefined by default.
1284 - Fixed disk.c FD leak for delayed closes in
1285 diskHandleWriteComplete().
1286 - Fixed cache announcement feature.
1287 - Fixed httpReadReply() to retry failed HTTP requests on
1288 persistent connections when read() returns -1, not only
1289 when it returns 0.
1290 - Fixed cbdata memory counting leak. cbdataUnlock() always
1291 called free(), never memFree().
1292 - Fixed storeDirWriteCleanLogs() malloc bug on Alphas.
1293 - Fixed `++loopdetect < 10' assertion due to
1294 clientHandleIMSReply bug for invalid/partial HTTP
1295 replies.
1296 - Added preliminary code for HTCP.
1297 - Renamed 'aux' dir to 'cfgaux' for legacy DOS machines.
1298 - Added "snmp_community" as an ACL type.
1299 - Cleaned up proxy-auth acl implementation and removed
1300 memory leaks.
1301 - Added generic 'hashFreeItems()' function for efficiently
1302 freeing hash table pointers.
1303 - Added whoisTimeout() for ASN code.
1304 - Removed BINARY TREE code.
1305 - Fixed forgetting to reset Config.Swap.maxSize in
1306 configDoConfigure.
1307 - Fixed httpReplyUpdateOnNotModified() arguments-in-wrong-order
1308 bug which caused not modified replies to not get updated.
1309 - Fixed client_side.c bugs which could cause data to be written
1310 to the client in the wrong order for persistent connections.
1311 clientPurgeRequest() and clientHandleIMSComplete() must not
1312 call comm_write(). Instead they must create and write to
1313 StoreEntry's.
1314 - Fixed ICP query service time counting bug(s).
1315 - replaced 'char *mime_headers_end()' with 'size_t headersEnd()'
1316 to fix buffer overruns. This also requires adding 'buf_sz'
1317 args to some functions like clientBuildReplyHeader().
1318 But we can eliminate the need to NULL-terminate the
1319 buffer beforehand.
1320 - Changed commConnectCallback() to reset the FD timeout to
1321 zero before notifying about the connection. This requires
1322 commSetTimeout() calls in numerous places to reinstall
1323 timeouts.
1324 - Changed comm_poll_incoming() to be called less frequently
1325 (every 15 I/O's instead of every 7 FD's) (Michael O'Reilly).
1326 - Removed HAVE_SYSLOG case for debug() macro. Almost all
1327 systems do have syslog(), but more importatnly the
1328 _db_level value is needed for debugging to stderr.
1329 - Rewrote squid/dnsserver interface to use smaller, single-line
1330 messages.
1331 - Rewrote 'dns' cachemgr output to use a table format.
1332 - Rewrote a lot of dnsserver.c.
1333 - Added eventAddIsh() for semi-random event scheduling.
1334 - Fixed an ftpTimeout bug for sessions which use PORT
1335 commands.
1336 - Fixed ftp.c to recognized invalid PASV replies (e.g.
1337 port == 0).
1338 - Removed hash_insert(). All hasing uses hash_join() now.
1339 - Renamed hash_unlink() to hash_remove_link().
1340 - Added hashPrime() to find closes prime hash table size
1341 to a given value.
1342 - Fixed Keep-Alive ratio counting bug which prevented
1343 persistent connections from being used between cache
1344 peers.
1345 - Changed icmp.c to NOT queue messages sent from squid to
1346 the pinger program.
1347 - Changed icp_v2.c to NOT queue ICP messages by default.
1348 But they will be queued and resent once if the first
1349 send fails. Counters.icp.queued_replies counts the
1350 number of messaages queued.
1351 - Cleaned up ICP logging.
1352 - Added identTimeout().
1353 - Fixed ipcache reply counting bug. Overcounted dnsserver
1354 replies for partial replies.
1355 - Added urlInternal() for building internal Squid URLs.
1356 - Changed peerAllowedToUse() to check both 'cache_peer_domain'
1357 AND 'cache_peer_acl' configurations. This should be changed
1358 in the fugure to use ONLY cache_peer_acl.
1359 - Changed DEAD/REVIVED neighbor detection to avoid reporting
1360 so many false deaths. (Joe Ramey).
1361 - Added some preliminary code to support "cache digests."
1362 - Fixed pumpClose() coredumps (?).
1363 - Updated cachemgr 'info' output to show median service
1364 times for various categories.
1365 - Fixed ABW bug in storeDirWriteCleanLogs(). sizeof(off_t)
1366 != sizeof(int) for Alphas.
1367 - Fixed potential alignment problem in storeDirWriteCleanLogs().
1368 - Fixed store_rebuild.c to NOT replace current, but
1369 not-swapped-out StoreEntry's with on-disk entries.
1370 - Changed storeCleanup() to call storeRelease on invalid
1371 entries which don't have a swapfile (i.e. no unlink()
1372 penalty).
1373 - Fixed storeSwapInStart() to fail for unvalidated
1374 entries.
1375 - SNMP changes:
1376 . renovated mib and added descriptions and comments
1377 . added hit and byte counters to client_db , for
1378 cacheClientTable
1379 . cacheClientTable, netdbTable, cachePeerTable,
1380 cacheConnTable now indexed by ip address. hash_lookup was
1381 enhanced to allow for subsequent hash_next's similar to
1382 hash_first, to speed up getnext's in tables which refer to
1383 hash-table structures.
1384 . added generic (well, sorf of) table indexing functionality
1385 . added makefile dependencies for snmplib and cache_snmp.h
1386 . WaisHost, WaisPort, Timeouts removed
1387 . FdTable split into FdTable and ConnTable. FdTable simplified
1388 . PeerTable and PeerStat merged and put into new cacheMesh
1389 group
1390 . cacheClientTable added for client statistics and accounting
1391 (cacheMesh 2)
1392 . cacheSec and cacheAccounting groups removed
1393 . fixed acl bug when communities not defined
1394 . snmp_acl now survives bad configuration
1395
1396 Changes to squid-1.2.beta18 (Mar 23, 1998):
1397
1398 - Added v1.1 'test_reachability' option.
1399 - Fixed hash4() len == 0 bug.
1400 - Fixed Config.Swap.maxSize reconfigure bug.
1401 - Fixed ICP query bug determining request method.
1402 - Moved ICP's storeGet() cache lookup into neighborsUdpAck()
1403 so that we know neighbors are alive even when they send
1404 us replies for unknown entries.
1405 - Changed configure script to add '-std1' for Digital Unix cc.
1406 - Fixed SNMP sizeof(int) / sizeof(long) bugs for 64-bit
1407 systems.
1408 - Added support for 'Cache-Control: Only-If-Cached' request header.
1409 - Fixed CheckQuickAbort() bugs for multiple clients on one
1410 StoreEntry. Also changed storePendingNClients() to return
1411 mem->nclients instead of counting the number of store_client
1412 entries with pending callback functions.
1413
1414 Changes to squid-1.2.beta17 (Mar 17, 1998):
1415
1416 - SNMP MIB version check changed to non-rcs.
1417 - Added memory pools for variable size objects (strings).
1418 There are three pools; for small, medium, and large objects.
1419 - Extended String object to use memory pools. Most fixed size char
1420 array fields will be replaced using string pools. Same for most
1421 malloc()-ed buffers.
1422 - Changed icon handling to use the hostname and port of the squid
1423 server, instead of the special hostname "internal.squid"
1424 (Henrik Nordstrom).
1425 - All icons are now configured in mime.conf. No hardcoded icons,
1426 including gohper icons (Henrik Nordstrom).
1427 - Fixed ICP bug when we send queries, but expect zero
1428 replies.
1429 - Fixed alignment/casting bugs for ICP messages.
1430 - A generic client-to-server "pump" was added to handle HTTP
1431 PUT as well as POST methods on the client-cache side. Based on
1432 "pump" PUT requests can be made to either HTTP or FTP url's.
1433 Code is still beta and interoperability with browsers etc has
1434 not been tested.
1435 - Put #ifdefs around 'source_ping' code.
1436 - Added missing typedef for _arp_ip_data (Wesha).
1437 - Added regular-expression-based ACLs for client and server
1438 domain names (Henrik Nordstrom).
1439 - Fixed ident-related coredumps from incorrect callback data.
1440 - Fixed parse_rfc1123() "space" bug.
1441 - Fixed xrealloc() XMALLOC_DEBUG bug (not calling check_free())..
1442 - Fixed some src/asn.c end-of-reply bugs and memory leaks.
1443 - Fixed some peer->options flag-setting bugs.
1444 - Fixed single-parent feature to work again
1445 - Removed 'single_parent_bypass' configuration option; instead
1446 just use 'no-query'.
1447 - Surrounded 'source_ping' code with #ifdefs.
1448 - Changed 'deny_info URL' to use a custom Error page.
1449 - Modified src/client.c for testing POST requests.
1450 - Fixed hash4() for SCO (Vlado Potisk).
1451
1452 Changes to squid-1.2.beta16 (Mar 4, 1998):
1453
1454 - Added Spanish error messages from Javier Puche.
1455 - Added Portuguese error messages from Pedro Lineu Orso
1456 - Added a simple but very effective hack to cachemgr.cgi that tries to
1457 interpret lines with '\t' as table records and formats them
1458 accordingly. With a few exceptions (see source code), first line
1459 becomes a table heading ("<th>" html tag) and the rest is formated
1460 with "<td>" tags.
1461 - Added "mem_pools_limit" configuration option. Semantics of
1462 "mem_pools" option has also changed a bit to reflect new memory
1463 management policy.
1464 - Reorganized memory pools. Squid now supports a global pool
1465 limit instead of individual pool limits. Per-pool limits can be
1466 implemented on top of the current scheme if needed, but it is
1467 probably hard to guess their values. Squid distributes pool
1468 memory among "frequently allocated" objects. There is a
1469 configurable limit on the total amount of "idle" memory to be
1470 kept in reserve. All requests that exceed that amount are
1471 satisfied using malloc library. Support for variable size
1472 objects (mostly strings) will be enabled soon.
1473 - memAllocate() has now only one parameter. Objects are always
1474 reset with 0s. (We actually never used that parameter before;
1475 it was always set to "clear").
1476 - Added Squid "signature" to all ERR_ pages. The signature is
1477 hardcoded and is added on-the-fly. The signature may use
1478 %-escapes. Added interface to add more hard-coded responses if
1479 needed (see errorpage.c::error_hard_text).
1480 - Both default and configured directories are searched for ERR_
1481 pages now. Configured directory is, of course, searched first.
1482 This allows you to customize a subset of ERR_ pages (in a
1483 separate directory) without danger of getting other copies out
1484 of sync.
1485 - Security controls for the SNMP agent added. Besides
1486 communities (like password) and views (part of tree
1487 accessible), the snmp_acl config option can be used to do acl
1488 based access checks per community.
1489 - SNMP agent was heavily re-written, based on cmu-snmpV1.8. You
1490 can now walk through the whole mib tree. Several new variables
1491 added under cacheProtoAggregateStats
1492 - Added rudimental statistics for HTTP headers.
1493 - Adjusted StatLogHist to a more generic/flexible StatHist.
1494 Moved StatHist implementation into a separate file.
1495 - Added FTP support for PORT if PASV fails, also try the
1496 default FTP data port (Henrik Nordstrom).
1497 - Fixed NULL pointer bug in clientGetHeadersForIMS when a
1498 request is cancelled for fails on the client side.
1499 - Filled in some squid.conf comments (never_direct,
1500 always_direct).
1501 - Added RES_DNSRCH to dnsserver's _res.options when the
1502 -D command line option is given.
1503 - Fixed repeated Detected DEAD/REVIVED Sibling messages when
1504 peer->tcp_up == 0 (Michael O'Reilly).
1505 - Fixed storeGetNextFile's incorrect "directory does not exist"
1506 errors (Michael O'Reilly).
1507 - Fixed aiops.c race condition (Michael O'Reilly, Stewart
1508 Forster).
1509 - Added 'dns_nameservers' config option to specify non-default
1510 DNS nameserver addresses (Maxim Krasnyansky).
1511 - Added lib/util.c code to show memory map as a tree
1512 (Henrik Nordstrom).
1513 - Added HTTP and ICP median service times to Counters and
1514 cachemgr average stats.
1515 - Changed "-d" command line option to take debugging level
1516 as argument. Debugging equal-to or less-than the argument
1517 will be written to stderr.
1518 - Removed unused urlClean() function from url.c.
1519 - Fixed a bug that allowed '?' parts of urls to be recorded in
1520 store.log. Logged urls are now "clean".
1521 - Cache Manager got new Web interface (cachemgr.cgi). New .cgi
1522 script forwards basic authentication from browser to squid.
1523 Authentication info is encoded within all dynamically generated
1524 pages so you do not have to type your password often.
1525 Authentication records expire after 3 hours (default) since
1526 last use. Cachemgr.cgi now recognizes "action protection" types
1527 described below.
1528 - Added better recognition of available protection for actions
1529 in Cache Manager. Actions are classified as "public" (no
1530 password needed), "protected" (must specify a valid password),
1531 "disabled" (those with a "disable" password in squid.conf), and
1532 "hidden" (actions that require a password, but do not have
1533 corresponding cachemgr_passwd entry). If you manage to request
1534 a hidden, disabled, or unknown action, squid replies with
1535 "Invalid URL" message. If a password is needed, and you failed
1536 to provide one, squid replies with "Access Denied" message and
1537 asks you to authenticate yourself.
1538 - Added "basic" authentication scheme for the Cache Manager.
1539 When a password protected function is accessed, Squid sends an
1540 HTTP_UNAUTHORIZED reply allowing the client to authorize itself
1541 by specifying "name" and "password" for the specified action.
1542 The user name is currently used for logging purposes only. The
1543 password must be an appropriate "cachemgr_passwd" entry from
1544 squid.conf. The old interface (appending @password to the url)
1545 is still supported but discouraged. Note: it is not possible
1546 to pass authentication information between squid and browser
1547 *via a web server*. The server will strip all authentication
1548 headers coming from the browser. A similar problem exists for
1549 Proxy-Authentication scheme.
1550 - Added ERR_CACHE_MGR_ACCESS_DENIED page to notify of
1551 authentication failures when accessing Cache Manager.
1552 - Added "-v" (Verbose) and "-H" (extra Headers) options to client.c.
1553 - Added simple context-based debugging to debug.c. Currently,
1554 the context is defined as a constant string. Context reporting
1555 is triggered by debug() calls. Context debugging routines
1556 print minimal amount of information sufficient to describe
1557 current context. The interface will be enhanced in the future.
1558 - Replaced _http_reply with HttpReply. HttpReply is a
1559 stand-alone object that is responsible for parsing, swapping,
1560 and comm_writing of HTTP replies. Moved these functions from
1561 various modules into HttpReply module.
1562 - Added HttpStatusLine, HttpHeader, HttpBody.
1563 - All HTTP headers are now parsed and stored in a "compiled"
1564 form in the HttpHeader object. This allows for a great
1565 flexibility in header processing and builds basis for support
1566 of yet unsupported HTTP headers.
1567 - Added Packer, a memory/store redirector with a printf
1568 interface. Packer allows to comm_write() or swap() an object
1569 using a single routine.
1570 - Added MemBuf, a auto-growing memory buffer with printf
1571 capabilities. MemBuf replaces most of old local buffers for
1572 compiling text messages.
1573 - Added MemPool that maintains a pre-allocated pool of opaque
1574 objects. Used to eliminate memory thrashing when allocating
1575 small objects (e.g. field-names and field-value in http
1576 headers).
1577
1578 Changes to squid-1.2.beta15 (Feb 13, 1998):
1579
1580 NOTE: This version has changes which may cause all or part
1581 of your cache to be lost. However, you can problably
1582 save most of it by doing a slow restart. Specifically:
1583
1584 1. Kill the running squid-1.2.beta14 process; wait for it to
1585 fully exit.
1586 2. Remove all 'swap.state*' files, either in each cache_dir, or
1587 as defined in your squid.conf
1588 3. Start squid-1.2.beta15. The store will be rebuilt from the
1589 existing swap files, reading the directories and opening
1590 the files.
1591
1592 - Fixed some problems related to disk (and pipe) write error
1593 handling. file_close() doesn't always close the file
1594 immediately; i.e. when there are pending buffers to write.
1595 StoreEntry->lock_count could become zero while a write is
1596 pending, then bad things happen during the callback.
1597 - The file_write() callback data must now be in the callback
1598 database (cbdata). We now use the swapout_ctrl_t structure
1599 for the callback data; it stays around for as long as we are
1600 swapping out.
1601 - Changed the way write errors are handled by diskHandleWrite.
1602 If there is no callback function, now we exit with a fatal
1603 message under the assumption that the file in question is a
1604 log file or IPC pipe. Otherwise, we flush all the pending
1605 write buffers (so we don't see multiple repeated write errors
1606 from the same descriptor) and let the upper layer decide how
1607 to handle the failure.
1608 - Fixed storeDirWriteCleanLogs. A write failure was leaving
1609 some empty swap.state files, even though it tells us that its
1610 "not replacing the file." Don't flush/rename logs which we
1611 have prematurely closed due to write failures, indiciated by
1612 fd[dirn] == -1. Close these files LAST, not before
1613 renaming.
1614 - Fixed storeDirClean to clean directories in a more sensible
1615 order, instead of the new "MONOTONIC" order for swap files.
1616 - Merged fdstat.c functions into fd.c.
1617 - Cleaned up some debugging sections. Some unrelated source
1618 files were using the same section.
1619 - Removed curly brackets from all cachemgr output.
1620 - Removed unused filemap->last_file_number_allocated member.
1621 - Removed unused fde->lifetime_data member.
1622 - Fixed incorrectly applying htonl() on icp_common_t->shostid.
1623 - Call setsid() before exec() in ipc.c so that child processes
1624 don't receive SIGINT (etc) when running squid on a tty.
1625 - Changed StoreEntry->object_len to ->swap_file_sz so we
1626 can verify the disk file size at restart. Moved object_len
1627 to MemObject->object_sz. Note object_sz is initialized
1628 to -1. If object_sz < 0, then we need to open the swap
1629 file and read the swap metadata.
1630 - Changed store_client->mem to ->entry because we need
1631 e->swap_file_sz to set mem->object_sz at swapin.
1632 - Renamed storeSwapData structure to storeSwapLogData.
1633 - Fixed storeGetNextFile to not increment d->dirn. Added
1634 check for opendir() failure.
1635 - Fixed storeRebuildStart to properly link the directory
1636 list for storeRebuildfromDirectory mode.
1637 - Added -S command line option to double-check store
1638 consistency with disk files in storeCleanup().
1639 - Fixed a problem with transactional logging. In many
1640 cases we were adding the public cache key and then
1641 logging a delete for the private key. This is worthless
1642 because during rebuild we could not locate the previous
1643 public-keyed entry. Now we assert that only public-keyed
1644 entries can be logged to swap.state. storeSetPublicKey()
1645 and storeSetPrivateKey() have been modified to log an
1646 ADD or DEL when the key changes.
1647 - Fixed storeDirClean bug. Needed to call
1648 storeDirProperFileno() so the "dirn bits" get set.
1649 - Fixed a storeRebuildFromDirectory bug. fullpath[] and
1650 fullfilename[] were static to that function and did
1651 not change when the "rebuild_dir" arg did. Moved these
1652 buffers to the rebuild_dir structure.
1653 - In storeRebuildFromSwapLog, we were calling storeRelease()
1654 for cache key collisions. This only set the RELEASE_REQUEST
1655 bit and did not clear the swap_file_number in the filemap or
1656 in the StoreEntry, so the swap file could get unlinked later
1657 when it was really released.
1658 - Fixed FTP so that ';type=X' specifically sets the HTTP reply
1659 content-type and content-encoding (Henrik Nordstrom).
1660 - Removed 'icon_content_type' configuration option. Content
1661 types now taken from mime.conf (Henrik Nordstrom).
1662 - Added additional memory malloc tracing and memory leak
1663 detection. Use --enable-xmalloc-debug-trace configure
1664 option and -m command line option (Henrik Nordstrom).
1665
1666 Changes to squid-1.2.beta14 (Feb 6, 1998):
1667
1668 - Replaced snmplib free() calls with xfree().
1669 - Changed the 'net_db_name' hash table structure to
1670 make it easier to move names from one network to another
1671 (copied from 1.1 code).
1672 - Filled in some of the config dump routines (dump_acl,
1673 dump_acl_access).
1674 - Full memory debugging option (--enable-xmalloc-debug-trace)
1675 (Henrik Nordstrom).
1676 - Filled-in and clarified many squid.conf comments (Oskar
1677 Pearson).
1678 - Fixed up handling of SWAP_LOG_DEL swap.state entries.
1679
1680 Changes to squid-1.2.beta13 (Feb 4, 1998):
1681
1682 - NOTE: With this version the "swap.state" file format has
1683 changed. Running this version for the first time will
1684 cause your current cache contents to be lost!
1685 - NOTE: this version still has the bug where we don't rewind
1686 a swapout file and rewrite the swap meta data. Objects
1687 larger than 8KB will be lost when rebuilding from the swap
1688 files.
1689 - Combined various interprocess communication setup functions
1690 into ipcCreate().
1691 - Removed some leftover ICP_HIT_OBJ things.
1692 - Removed cacheinfo and proto_count() and friends; these are to
1693 be replaced in functionality by StatCounters and 5/60 minute
1694 average views via cachemgr.
1695 - Fixed --enable-acltree configure message (Masashi Fujita).
1696 - Fixed no reference to @LIB_MALLOC@ in src/Makefile.in
1697 (Masashi Fujita).
1698 - Fixed building outside of source tree (Masashi Fujita).
1699 - FTP: Format NLST listings, and inform the user that the NLST
1700 (plain) format is available when we find a LIST listing that we
1701 don't understand (Henrik Nordstrom)
1702 - FTP: Use SIZE on Binary transfers, and not ASCII. The
1703 condition was inversed, making squid use SIZE on ASCII
1704 transfers (Henrik Nordstrom).
1705 - Enable virtual and Host: based acceleration in order to be
1706 able to use Squid as a transparent proxy without breaking
1707 either virtual servers or clients not sending Host: header
1708 the order of the virtual and Host: based acceleration needs
1709 to be swapped, giving Host: a higher precendence than virtual
1710 host (Henrik Nordstrom).
1711 - Use memmove/bcopy as detected by configure Some systems does
1712 not have memmove, but have the older bcopy implementation
1713 (Henrik Nordstrom).
1714 - Completely rewritten aiops.c that creates and manages a pool
1715 of threads so thread creation overhead is eliminated (SLF).
1716 - Lots of mods to store.c to detect and cancel outstanding
1717 ASYNC ops. Code is not proven exhaustive and there are
1718 definately still cases to be found where outstanding disk ops
1719 aren't cancelled properly (SLF).
1720 - Changes to call interface to a few routines to support disk
1721 op `tagging', so operations can be cleanly cancelled on
1722 store_abort()s (SLF).
1723 - Implementation of swap.state files as transaction logs.
1724 Removed objects are now noted with a negative object size.
1725 This allows reliatively clean rebuilds from non-clean
1726 shutdowns (SLF).
1727 - Now that the swap.state files are transaction logs, there's
1728 now no need to validate by stat()ing. All the validation
1729 procedure does is now just set the valid bit AFTER all the
1730 swap.state files have been read, because by that time, only
1731 valid objects can be left. Object still need to be marked
1732 invalid when reading the swap.state file because there's no
1733 guarantee the file has been retaken or deleted (SLF).
1734 - An fstat() call is now added after every
1735 storeSwapInFileOpened() so object sizes can be checked. Added
1736 code to storeRelease() the object if the sizes don't match (SLF).
1737 - #defining USE_ASYNC_IO now uses the async unlink() rather than
1738 unlinkd() (SLF).
1739 - #defining MONOTONIC_STORE will support the creation of disk
1740 objects clustered into directories. This GREATLY improves disk
1741 performance (factor of 3) over old `write-over-old-object'
1742 method. If using the MONOTONIC_STORE, the
1743 {get/put}_unusedFileno stack stuff is disabled. This is
1744 actually a good thing and greatly reduces the risk of serving
1745 up bad objects (SLF).
1746 - Fixed unlink() in storeWriteCleanLogs to be real unlink()
1747 rather than ASYNC/unlinkd unlinks. swap.state.new files were
1748 being removed just after they were created due to delayed
1749 unlinks (SLF).
1750 - Disabled various assertions and made these into debug warning
1751 messages to make the code more stable until the bugs can be
1752 tracked down (SLF).
1753 - Added most of Michael O'Reilly's patches which included many
1754 bug fixes. Ask him for full details (SLF).
1755 - Moved aio_check_callbacks in comm_{poll|select}(). It was
1756 called after the fdset had been built which was wrong because
1757 the callbacks were changing the state of the read/write
1758 handlers prior to the poll/select() calls (SLF).
1759 - Fixed ARP ACL memory leaks (Dale).
1760 - Eliminated URL and SHA cache keys. Cache keys will always
1761 be MD5's now.
1762 - Fixed up store swap meta data.
1763 - Changed swap.state logs to a binary format.
1764 - The swap.state logs are written transaction-style.
1765
1766 Changes to squid-1.2.beta12 (Jan 30, 1998):
1767
1768 - Added metadata headers to cache swap files. This is an
1769 incompatible change with previous versions. Running this
1770 version for the first time will cause your current cache
1771 contents to be lost.
1772 - -D_REENTRANT when linking with -lpthreads (Henrik Nordstrom)
1773 - Show symlink destinations as a hyperlink in FTP listings
1774 (Henrik Nordstrom)
1775 - Fixed not allocating enough space for rewriting URLs with
1776 the Host: header (Eric Stern).
1777 - Year-2000 fixes (Arjan de Vet).
1778 - Fixed looping for cache hits on HEAD requests.
1779 - Fixed parseHttpRequest() coredump for
1780 "GET http://foo HTTP/1.0\r\n\r\n\r\n"
1781
1782 Changes to squid-1.2.beta11 (Jan 6, 1998):
1783
1784 - Fixed fake 'struct rusage' definition which prevented compling
1785 on Solaris 2.4.
1786 - Fixed copy-by-ref bug for request->headers in
1787 clientRedirectDone() (Michael O'Reilly).
1788 - Workaround for Solaris pthreads closing FD 0 upon fork()
1789 (Michael O'Reilly).
1790 - Fixed shutdown bug with outgoing UDP sockets; we need to
1791 disable their read handlers.
1792 - For comm_poll(), use the fast 50 msec timeout only when
1793 USE_ASYNC_IO is defined.
1794 - Fixed pointer bug when freeing AS# ACL entries.
1795 - Fixed forgetting to reset Config.npeers to zero in free_peer().
1796 - Fixed ICP bug causing excessive TIMEOUTs with sibling
1797 neighbors. We must call the ICP reply callback even for
1798 sibling misses.
1799 - Fixed some dnsserver-related reconfigure bugs. Need to
1800 use cbdataLock, etc in fqdncache.c. Also don't want to
1801 use ipcacheQueueDrain() and fqdncacheQueueDrain().
1802 - Fixed persistent connection bug. We were incorrectly
1803 deciding that non-200 replies without content-length
1804 would not have a reply body.
1805 - Fixed intAverage() precedence bug.
1806 - Fixed memmove() 'len' arg bug.
1807 - Changed algorithm for determining alive/dead state of peers.
1808 Instead of using a fixed number of unacknowledged ICP
1809 replies, it is now based on timeouts. If there are no ICP
1810 replies received from a peer within 'dead_peer_timeout'
1811 seconds, then we call it dead.
1812 - Added calls to getCurrentTime() in
1813 comm_{select,poll}_incoming() when ALARM_UPDATES_TIME is not
1814 being used.
1815 - Fixed shutdown bug when the incoming and outgoing ICP socket
1816 is the same file descriptor.
1817 - Added buffered writes for storeWriteCleanLogs() (Stewart
1818 Forster).
1819 - Patches for Qnx4 (Jean-Claude MICHOT).
1820 - Fixed returning void functions which seems to be a GCC-ism.
1821 - New configure script options (Henrik Nordstrom):
1822 --enable-new-storekey=[sha|md5(|url)] (was --enable-hashkey)
1823 --enable-acltree
1824 --enable-icmp
1825 --enable-delay-hack
1826 --enable-useragent-log
1827 --enable-kill-parent (this should be named -hack)
1828 --enable-snmp
1829 --enable-time-hack
1830 --enable-cachemgr-hostname[=hostname] (new)
1831 --enable-arp-acl (new)
1832 - Added Doug Lea malloc-2.6.4 to the distribution, so that
1833 people easily can try a decent malloc package if they syspect
1834 their malloc is broken. --enable-dlmalloc (Henrik Nordstrom).
1835 - Made XMALLOC_DEBUG_COUNT working again. Requires a small stub
1836 function (Henrik Nordstrom).
1837 - Removed top-level Makefile. People must now run 'configure'
1838 before 'make'.
1839 - Fixed checkFailureRatio() implementation.
1840 - Made 'squid -z' behave like the 1.1 version.
1841
1842
1843 Changes to squid-1.2.beta10 (Jan 1, 1998):
1844
1845 - Fixed content-length bugs for 204 replies, 304 replies,
1846 and HEAD requests (Henrik Nordstrom).
1847 - Fixed errorAppendEntry() bug in gopherReadReply().
1848 - Basic support for FTP URL typecodes (;type=X).
1849 - Support for access controls based on ethernet MAC addresses
1850 (Dale).
1851 - Initial URN support; see
1852 http://squid.nlanr.net/Squid/urn-support.html
1853 - Fixed client-side persistent connections for objects with
1854 bad content lengths (Henrik Nordstrom).
1855 - Fixed bad call to storeDirUpdateSwapSize() for objects which
1856 never reach SWAPOUT_DONE state.
1857 - Fixed up poll() #defines in squid.h (Stewart Forster).
1858 - Changed poll() timeout from 1000 msec to 50 msec for
1859 better performance under low load (Stewart Forster).
1860 - Changed storeWriteCleanLogs() to write objects in the LRU
1861 list order instead of the random hash table order.
1862 - Fixed FTP bug when data socket connections fail or timeout.
1863 - Reuse FTP data connection when possible (Henrik Nordstrom).
1864 - Added configure options (Henrik Nordstrom)
1865 --enable-store-key=sha|md5
1866 --enable-xmalloc-statistics
1867 --enable-xmalloc-debug
1868 --enable-xmalloc-debug-count
1869 --async-io
1870 - Fixed confusing with the use/meaning of ERR_CANNOT_FORWARD
1871 by creating ERR_FORWARDING_DENIED and changing the
1872 content of the ERR_CANNOT_FORWARD text.
1873 - Fixed pipeline request bug from using strdup() (Henrik
1874 Nordstrom).
1875 - Call clientReadRequest() directly instead of commSetSelect()
1876 for pipelined requests (Henrik Nordstrom).
1877 - Fixed 4k page leak in icpHandleIMSReply();
1878 - Renamed 'icp*' functions to 'client*' names in client_side.c.
1879
1880 Changes to squid-1.2.beta8 (Dec 2, 1997):
1881
1882 - Fixed accessLogLog() to log ident from Proxy-Authorization
1883 request header (BoB Miorelli).
1884 - Fixed #includes, prototypes, etc. in SNMP source files.
1885 - Moved 'POLLRDNORM' and 'POLLWRNORM' macro checks from
1886 include/config.h.in to src/squid.h
1887 - Moved 'num32' typedefs from src/typedefs.h to
1888 include/config.h.in.
1889 - Moved snmplib/md5.c to lib/md5.c.
1890 - Added MD5 cache key support.
1891 - Removed xmalloc() return check in uudeocde.c
1892 - Added 'ifdef' support to cf_gen.c for optional code (e.g. SNMP)
1893 - Changed 'client' program to provide easier cache manager access,
1894 e.g.: 'client mgr:info'
1895 - Fixed 'client' to send 'Connection' instead of 'Proxy-Connection'
1896 for simulated keep-alive requests.
1897 - Removed 'fd' arg from clientProcess* functions.
1898 - Fixed bugs from using errorSend() on persistent/pipelined
1899 client connections. A latter request should not be allowed to
1900 write to the client fd until the current request completes.
1901 Now use errorAppendEntry() for such situations.
1902 - Fixed content-length bugs. We were using content-length == 0
1903 to also indicate a lack of content-length reply header. But
1904 'content-length: 0' might appear in a reply, so now use -1 to
1905 indicate that no content length given.
1906 - Split up clientProcessRequest() into smaller chunks so it
1907 might be easier to follow.
1908 - renamed various client_side.c functions to start with 'client'
1909 instead of 'icp'.
1910 - Fixed a 'cbdata leak' from the comm.c close handlers.
1911 - Fixed a 'cbdata leak' from the comm.c connect routines.
1912 - Fixed comm_select() and comm_poll() to stop looping on the
1913 incoming HTTP/ICP sockets. If there are fewer than 7 FD's
1914 ready for I/O, the incoming sockets might not get service, so
1915 comm_select() would be called for up to 7 times until the
1916 'incoming_counter' was incremented enough to trigger a call
1917 to comm_select_incoming(). Now we make sure
1918 comm_select_incoming() gets called if select returns less
1919 than 7 ready FD's.
1920 - Added errorpage '%B' token to generate FTP URLs with a '%2f'
1921 inserted at the start of the url-path. calls ftpUrlWith2f().
1922 (Henrik Nordstrom).
1923 - Changed fqdncache.c to use LRU double-linked list instead of qsort()
1924 for replacement and cachemgr output.
1925 - Changed ipcache.c to use LRU double-linked list instead of qsort()
1926 - Changed hash_insert() and hash_join() to return void.
1927 for replacement and cachemgr output.
1928 - Moved StoreEntry->method member to MemObject->method.
1929 - Made StoreEntry->flags 16 bits.
1930 - Made StoreEntry->refcount 16 bits.
1931 - Changed URL-based public cache key to always include the request
1932 method.
1933
1934 Changes to squid-1.2.beta7 (Nov 24, 1997):
1935
1936 - Fixed poll() for Linux (David Luyer).
1937 - SHA optimizations (David Luyer).
1938 - Fixed errno clashes with macro on Linux (David Luyer).
1939 - Fixed storeDirCloseSwapLogs(); logs might not be open.
1940 - Fixed storeClientCopy2() bug. Detect when there is
1941 no more data to send for objects in STORE_OK state.
1942 - Fixed FTP truncation bug when ftpState->size == 0, e.g.
1943 especially directory listings.
1944 - Mega FTP fix from Henrik Nordstrom. A better job of
1945 implementing the '%2f' hack.
1946 - Fixed some pipelined request bugs. storeClientCopy() was
1947 being given the wrong StoreEntry, and we had a race condition
1948 which is now handled by storeClientCopyPending().
1949 - Added initial SNMP support.
1950
1951 Changes to squid-1.2.beta6 (Nov 13, 1997):
1952
1953 - Fixed Authorized responses getting swapped out when they
1954 don't have Proxy-Revalidate reply header.
1955 - Fixed Proxy Authentication support. We never sent back
1956 a 407 reply, and were incorrectly incrementing the passwd
1957 before comparing it.
1958 - Fixed stat()ing pathnames for default values before parsing
1959 config file (Ron Gomes).
1960 - Fixed logging request and response headers on separate lines
1961 (Ron Gomes).
1962 - Fixed FTP Authentication message (Henrik Nordstrom).
1963 - Changed Proxy Authentication to trigger a reread of the passwd
1964 file if a password check fails (Henrik Nordstrom).
1965 - Changed FTP to retry the first CWD with a leading slash if it
1966 fails without one.
1967
1968 Changes to squid-1.2.beta5 (Nov 6, 1997):
1969
1970 - Track the 'keep-alive ratio' for a peer as the ratio of
1971 the number of replies including 'Proxy-Connection: Keep-Alive'
1972 compared to the number of requests sent. If the peer does
1973 not support Persistent connections then this ratio will tend
1974 toward zero. If the ratio is less than 50% after 10 requests
1975 then we'll stop sending Keep-Alive.
1976 - Proper support for %nn escapes in FTP, and numerous
1977 other fixes (Henrik Nordstrom).
1978 - Support for Secure Hash Algorithm and framework for other
1979 hash functions as cache keys.
1980 - Fixed SSL snprintf() bug which broke SSL proxying.
1981 - Fixed store_dir swap log bug from reconfigure (SIGHUP).
1982 - Fixed LRU Reference Age bug. The arg to pow() must be
1983 minutes, not seconds.
1984
1985 Changes to squid-1.2.beta4 (Oct 30, 1997):
1986
1987 - Fixed DST bug in rfc1123.c
1988 - Changed default http_accel_port to 80.
1989 - added errorCon() as a ErrorState constructor function
1990 (Max Okumoto).
1991 - Added ERR_FTP_FAILURE message for ftpFail().
1992 - For FTP, the timeout callback must be moved to the 'data'
1993 descriptor when data transfer begins. Otherwise we are
1994 likely to get a timeout on the control descriptor.
1995 - Fixed double-free bug in httpRequestFree().
1996 - Fixed store_swap_size counting bug in storeSwapOutHandle().
1997
1998 Changes to squid-1.2.beta3 (Oct 29, 1997):
1999
2000 - Initialize _res.options to RES_DEFAULT in dnsserver.c.
2001 - Fix assertions which assumed 4-byte pointers.
2002 - Fix missing % in fqdncache.c snprintf().
2003
2004 Changes to squid-1.2.beta2 (Oct 28, 1997):
2005
2006 - Fixed aiops.c and async_io.c so that they actually compile
2007 with USE_ASYNC_IO (Arjan de Vet).
2008 - Fixed errState->errno causing problems with some macros
2009 (Michael O'Reilly).
2010 - Fixed memory leaks in pconn.c (Max Okumoto).
2011 - Enhanced 'client' program with 'ping' behaviour (Ron Gomes).
2012 - Fixed InvokeHandlers() from calling memCopy() for ALL
2013 store_client's with callbacks. A store_client might be reading
2014 from disk.
2015 - Rewrote storeMaintainSwapSpace(). No longer will we scan one
2016 bucket at a time. Instead we'll maintain a single LRU
2017 list. When an object is 'touched' we move it to the
2018 top of this list. When we need disk space, we delete
2019 from the bottom.
2020 - Removed storeGetSwapSpace().
2021
2022 Changes to squid-1.2.beta1 ():
2023
2024 - Reworked storage manager to not keep objects in memory during
2025 transit. In other words, no separate NOVM distribution.
2026 - Lots of cleanup and debugging for beta release.
2027 - Use snprintf() everywhere instead of sprintf().
2028 - The 'in_memory' hash table has been replaced with a
2029 doubly-linked list. New objects are added to the head of
2030 the list. When memory space is needed, old objects are
2031 purged from the tail of the list.
2032
2033 Changes to squid-1.2.alpha7 ():
2034
2035 - fixes fixes fixes.
2036 - Made Arjan's PROXY_AUTH ACL patch standard.
2037
2038 Changes to squid-1.2.alpha6 ():
2039
2040 - Simpler cacheobj implementation.
2041 - persistent connection histogram
2042 - SERVER-SIDE PERSISTENT CONNECTIONS:
2043 - Added pconn.c
2044 - Addec Cofig.Timeout.pconn; default 120 seconds
2045 - Added httpState->flags
2046 - Added flags arg to httpBuildRequestHeader()
2047 - Added HTTP_PROXYING and HTTP_KEEPALIVE flags
2048 - Added 'Connection' to allowed HTTP headers (http-anon.c)
2049 - Added 'Proxy-Connection' to allowed HTTP headers
2050 (http-anon.c)
2051 - Merged proxyhttpStart() with httpStart() and created
2052 new httpBuildState().
2053 - New httpPconnTransferDone() detects end-of-data on
2054 persistent connections.
2055
2056 Changes to squid-1.2.alpha5 ():
2057
2058 - New configuration system. Everything is generated from
2059 'cf.data.pre', including the main parser, setting defaults,
2060 outputting current values, and freeing memory.
2061 This also involved moving some of the local data structures
2062 (e.g. struct _acl *AclList in acl.c) to the Config
2063 structure. (Max Okumoto)
2064 - No more '/i' for regular expressions. Now insert a '-i'
2065 to switch to case-insensitive. Use '+i' for case-sensitive.
2066 - When you have a variable named the same as its type, sizeof()
2067 gets the wrong one (fde).
2068 - Need to flush unbuffered logs before fork().
2069 - Added two fields swap log: refcount and e->flag.
2070 - Removed all the .h files for each .c file. Now #include stuff
2071 is in either: defines.h, enums.h, typedefs.h, structs.h,
2072 or protos.h, globals.h. This greatly reduces dependencies
2073 between the various source files.
2074 - globals.c is generated from globals.h by a Perl script.
2075 - Started customizable error texts.
2076
2077 Changes to squid-1.2.alpha4 ():
2078
2079 - New MIME configuration, regular expression based
2080 - Added request_timeout config option
2081 - Multiple HTTP sockets (Lincoln Dale).
2082 - Moved 'fds_are_n_free' check to httpAccept().
2083 - s/USE_POLL/HAVE_POLL/; make poll() default if available.
2084 - Changed storeRegister to use offsets and make immediate
2085 callbacks if appropriate.
2086 - Removed icpDetectClientClose(). Some of that functionality
2087 goes into clientReadRequest() and the rest into
2088 httpRequestFree().
2089 - Moved IP lookups to commConnect stuff.
2090 - Added support for retrying connect().
2091 - New inline debug() macro (David Luyer).
2092 - Replace frequent gettimeofday() calls with alarm(3) based
2093 clock. Need to add more gettimeofday() calls to get back
2094 high-resolution timestamp logging (Andres Kroonmaa).
2095 - Added support for Cache-control: proxy-revalidate;
2096 based on squid-1.1 patch from Mike Mitchell.
2097
2098 Changes to squid-1.2.alpha3 ():
2099
2100 - Implemented persistent connections between clients and squid.
2101 - Moved various FD tables (comm.c, fdstat.c, disk.c) to a single
2102 table in fd.c.
2103 - Removed use of FD as an identifier in certain callback
2104 operations (ipcache, fqdncache).
2105 - General code cleanup.
2106 - Fixed typedefs for callback functions.
2107 - Removed FD lifetime/timeout dichotomy. Now we only have
2108 timeouts, however the lifetime concept/keyword may still
2109 linger in certain places.
2110 - Change Makefile 'realclean' target to 'distclean'
2111 - Changed config file parsing of time specifications to use
2112 parseTimeLine().
2113 - Removed storetoString.c
2114
2115 Changes to squid-1.2.alpha2 ():
2116
2117 - Merged squid-1.1.9, squid-1.1.10 changes
2118
2119 Changes to squid-1.2.alpha1 ():
2120
2121 - Unified peer selection algorithm.
2122 - aiops.c and aiops.h are a threaded implementation of
2123 asynchronous file operations (Stewart Forster).
2124 - async_io.c and async_io.h are complete rewrites of the old
2125 versions (Stewart Forster).
2126 - Rewrote all disk file operations of squid to support
2127 the idea of callbacks except where not required (Stewart
2128 Forster).
2129 - Background validation of 'tainted' swap log entries (Stewart
2130 Forster).
2131 - Modified storeWriteCleanLog to create the log file using the
2132 open/write rather than fopen/printf (Stewart Forster).
2133 - Added the EINTR error response to handle badly interrupted
2134 system calls (Stewart Forster).
2135 - UDP_HIT_OBJ not supported, removed.
2136 - Different sized 'cache_dirs' supported.
2137
2138 ==============================================================================