2.4STABLE3:
- htcp_port 0 now properly disables htcp
- Fixed problem with certain non-anonymous ftp:// style URL's
- SNMP bugfixes including several memory leaks
- replace a hack adding fd_mask definition in autoconf.h with re-writing
configure script. It cause to run configure twice and result "no fd_mask".
- Incorporate three official patches from
http://www.squid-cache.org/Versions/v2/2.4/bugs/.
o SNMP memory leaks
synopsis
The SNMP implementation in Squid had several memory leaks
possibly causing an denial of service.
workaround
Disable the SNMP port if enabled by using "snmp_port 0" in
squid.conf. Or if you only use SNMP for MRTG data
collection running on the same host then use
"snmp_incoming_address 127.0.0.1" to limit reachability
of the SNMP port to only localhost or some other trusted
network.
o Coredump on certain ftp:// style URL's
synopsis
If certain constructed ftp:// style URL's are received then
squid crashes, causing a denial of service and maybe even
remote execution of code.
workaround
Deny forwarding of non-anonymous FTP URLs by inserting
the following rules at the top of squid.conf, prior to
any http_access allow lines.
acl non_anonymous_ftp url_regex -i ftp://[^/@]*@
http_access deny non_anonymous_ftp
o "htcp_port 0" fails to disable the HTCP port
synopsis
"htcp_port 0" fails to completely disable the HTCP port as
documented in squid.conf, instead HTCP will be listening on
a random port number.
from "Ciarcinski, Adam \(ISS Brussels\)" <ACiarcinski@iss.net>.
From ChangeLog:
Changes to Squid-2.4.STABLE3 (Nov 28, 2001):
- Fixed bug #255: core dump on SSL/CONNECT if access denied by
miss_access
- Fixed bug #246: corrupt on-disk meta information preventing
rebuilds of lost swap.state files
- Fixed bug #243: squid_ldap_auth now supports spaces in passwords
- Fixed a coredump when creating FTP directories
- Fixed a compile time problem with statHistDump prototype mistmatch,
reported by some compilers
- Fixed a potential coredump situation on snmpwalk in certain
configurations
- Fixed bug #229: filedescriptor leakage in the "aufs" cache_dir
store implementation
- Serbian error message translations
I added following changes, too.
o honor PKG_SYSCONFDIR keep SQUID_SYSCONFDIR effective.
o Add --disable-internal-dns. This made external dnsserver
available. External dnsserver could be disabled with configuration
file.
o Enable optimization with "-O".
o Fix a problem to access nat device when transparent proxy enabled.
This fix will be contained in squid 2.5 release.
o setproctitle() hack for external dnsserver from daemonnews's article.
installed into "etc/squid" (and are not moved arround after installation).
The message of the install script matches the actual layout again and is
adapted to changes to "SQUID_SYSCONFDIR".
- We don't want to wait forever until "squid" terminates. Wait at most
20 seconds after a shutdown command use "kill" afterwards.
- Don't use "RunCache" to start "squid", it is not necessary and only
causes trouble.
- Bring the "rotate" command which got lost in last update.
Bump package version number to 2.4.1nb2.
include his improved "rc.d" script.
- Use the same directory structure as in the Apache package. The
configuration files are now in "${PREFIX}/etc/squid" and won't be
removed during deinstallation.
- Remove unnecessary configuration variables "SQUID_HTTP_PORT" and
"SQUID_ICP_PORT". These values can perfectly be adjusted by editing
the configuration file and supporting all these variables would make
the package too complex.
- Bump the version number to 2.4.1nb1.
- Fixed a bug in and cleaned up class 2/3 delay pools incrementing.
- Fixed a coredump bug when using external dnsservers that become overloaded.
- Fixed some NULL pointer bugs for NULL storage system when reconfiguring.
- Fixed a bug with useragent logging that caused Squid to think the logfile
never got opened.
- Fixed a compiling bug with --disable-unlinkd.
- Changed src/squid.h to always use O_NONBLOCK on Solaris if it is defined.
- Fixed a bug with signed/unsigned bitfield flag variables that caused
problems on Solaris.
- Fixed a bug in clientBuildReplyHeader() that could add an Age: header with
a negative value, causing an assertion later.
- Fixed an SNMP reporting bug. cacheCurrentResFileDescrCnt was returning
the number of FDs in use, rather than the number of reserved FDs.
- Added the 'pipeline_prefetch' configuration option.
- cache_dir syntax changed to use options instead of many arguments. This
means that the max_objsize argument now is an optional option, and that
the syntax for how to specify the diskd magics is slightly different.
- Various fixes for CYGWIN
- Upgraded MSNT auth module to version 2.0.
- Fixed potential problems with HTML by making sure all HTML output is
properly encoded.
- Fixed a memory initialization problem with resource records in
lib/rfc1035.c.
- Rewrote date parsing in lib/rfc1123.c and made it a little more lenient.
- Added Cache-control: max-stale support.
- Fixed 'range_offset_limit' again. The problem this time is that
client_side.c wouldn't set the we_dont_do_ranges flag for normal cache
misses. It was only being set for requests that might have been hits,
but we decided to change to a miss.
- Added the Authenticate-Info and Proxy-Authenticate-Info headers from
RFC 2617.
- HTTP header lines longer than 64K could cause an assertion.
Now they get ignored.
- Fixed an IP address scanning bug that caused "123.foo.com" to be
interpreted as an IP address.
- Converted many structure allocations to use mem pools.
- Changed proxy authentication to strip leading whitespace from usernames
after decoding.
- Prevented NULL pointer access in aclMatchAcl(). Some ACL types require
checklist->request_t, but it won't be available in some cases (like
snmp_access). Warn the admin that the ACL can't be checked and that
we're denying it.
- Allow zero-size disk caches.
- The actual filesystem blocksize is now used to account
for space overheads when calculating on-disk cache size.
- Made the maximum memory cache object size configurable.
- Added 'minimum_direct_rtt' configuration option.
- Added 'ie_refresh' configuration option, which is a hack
to turn IMS requests into no-cache requests.
- Added Linux netfilter support for intercepted connections.
- Fixed a bug with clientAccessCheck() that allowed proxy
requests in accel mode.
- Fixed a bug with 301/302 replies from redirectors. Now
we force them to be cache misses.
- Accommodated changes to the IP-Filter ioctl() interface
for intercepted connections.
- Fixed handling of client lifetime timeouts.
- Fixed a buffer overflow bug with internal DNS replies
by truncating received packets to 512 bytes, as per
RFC 1035.
- Added "forward.log" support, but its work in progress.
- Rewrote much of the IP and FQDN cache implementation.
This change gets rid of pending hits.
- Changed peerWouldBePinged() to return false if our
ICP/HTCP port is zero (i.e. disabled).
- Changed src/net_db.c to use src/logfile.c routines,
rather than stdio, because of solaris stdio filedescriptor
limits.
- Made netdbReloadState() more robust in case of corrupted
data.
- Rewrote some freshness/staleness functions in src/refresh.c,
partially inspired to support cache-control max-stale.
- Fixed status code logging for SSL/CONNECT requests.
- Added a hack to subtract cache digest network traffic
from statistics so that byte hit ratio stays positive
and more closely reflects what people expect it to be.
- Fixed a bug with storeCheckTooSmall() that caused
internal icons and cache digests to always be released.
- Added statfs(2) support for displaying actual filesystem
usage in the cache manager 'storedir' output.
- Changed status reporting for storage rebuilding. Now it
prints percentage complete instead of number of entries
parsed.
- Use mkstemp() rather than problem-prone tempnam().
- Changed urlParse() to condense multiple dots in hostnames.
- Major rewrite of async-io (src/fs/aufs) to make it behave
a bit more sane with substantially less overhead. Some
tuning work still remains to make it perform optimal.
See the start of store_asyncufs.h for all the knobs.
- Fixed storage FS modules to use individual swap space
high/low values rather than the global ones.
- Fixed storage FS bugs with calling file_map_bit_reset()
before checking the bit value. Calling with an invalid
value caused memory corruption in random places.
- Prevent NULL pointer access in store_repl_lru.c for
entries that exist in the hash but not the LRU list.
- Added --enable-auth-modules=... configure option
- Improved ICP dead peer detection to also work when the workload
is low
- Improved TCP dead peer detection and recovery
- Squid is now a bit more persistent in trying to find a alive
parent when never_direct is used.
- nonhierarchical_direct squid.conf directive to make non-ICP
peer selection behave a bit more like ICP selection with respect
to hierarchy.
- Bugfix where netdb selection could override never_direct
- ICP timeout selection now prefers to use parents only when
calculating the dynamic timeout to compensate for common RTT
differences between parents and siblings.
- No longer starts to swap out objects which are known to be above
the maximum allowed size.
- allow-miss cache_peer option disabling the use of "only-if-cached".
Meant to be used in conjunction with icp_hit_stale.
- Delay pools tuned to allow large initial pool values
- cachemgr filesystem space information changed to show useable space
rather than raw space, and platform support somewhat extended.
- Logs destination IP in the hierarchy log tag when going direct.
(can be disabled by turning log_ip_on_direct off)
- Async-IO on linux now makes proper use of mutexes. This fixes some
odd pthread segfaults on SMP Linux machines, at a slight performance
penalty.
- %s can now be used in cache_swap_log and will be substituded with
the last path component of cache_dir.
- no_cache is now a full ACL check without, allowing most ACL types
to be used.
- The CONNECT method now obeys miss_access requirements
- proxy_auth_regex and ident_regex ACL types
- Fixed a StoreEntry memory leak during "dirty" rebuild
- Helper processes no longer hold unrelated filedescriptors open
- Helpers are now restarted when the logs are rotated
- Negatively cached DNS entries are now purged on "reload".
- PURGE now also purges the DNS cache
- HEAD on FTP objects no longer retreives the whole object
- More cleanups of the dstdomain ACL type
- Squid no longer tries to do Range internally if it is not supported
by the origin server. Doing so could cause bandwidth spikes and/or
negative hit ratio.
- httpd_accel_single_host squid.conf directive
- "round-robin" cache_peer counters are reset every 5 minutes to
compensate previously dead peers
- DNS retransmit parameters
- Show all FTP server messages
- squid.conf.default now indicates if a directive isn't enabled in
the installed binary, and what configure option to use for enabling it
- Fixed a temporary memory leak on persistent POSTs
- Fixed a temporary memory leak when the server response headers
includes NULL characters
- authenticate_ip_ttl_is_strict squid.conf option
- req_mime_type ACL type
- A reworked storage system that supports storage directories in
a more modular fashion. The object replacement and IO is now
responsibility of the storage directory, and not of the storage
manager.
- Fixed a bogous MD5 mismatch warning sometimes seen when using
aufs or diskd stores
- Added --enable-stacktraces configure option to set PRINT_STACK_TRACE,
and extended support for this to Linux/GNU libc.
- Disabled the "request timeout" error message sent if the user agent
did not provide a request in a timely manner after opening the
connection. Now the connection is silently closed. The error message
was confusing user agents utilizing persistent connections.
- Fixed configure --enable descriptions to match the arg names.
- Eliminated compile warnings from auth_modules/MSNT code.
- Require first character of hostnames to be alphanumeric.
- Made ARP ACL work for Solaris.
- Removed storeClientListSearch().
- Added counters to track diskd operation success and
failures.
- Fixed range_offset_limit.
- Added code to retry ServFail replies for internal DNS
lookups.
- Added referer header logging (Jens-S. Voeckler).
- Added "multi-domain-NTLM" authentication module, a Perl
script from Thomas Jarosch.
- Added configurable warning messages for high memory usage,
high response time, and high page faults.
- Made store dir selection algorithm configurable.
- Added support for admin-definable extension methods,
up to 20.
- Added 'maximum_object_size_in_memory' as a configuration option -
this defines the watermark where objects transit from being true
hot objects to being in-transit objects in memory. It currently
defaults to 8 KB.
- Change to the fqdn code which changes how pending DNS requests
are treated as private and only become public once they are
completed. This can add extra load on DNS servers but prevents
all the pending clients blocking if one of the queries got
stuck. (Duane Wessels)
- Converted more code to use MemPools, from Andres Kroonmaa.
- Added more CYGWIN patches from Robert Collins.
- Added Logfile module.
- Added DISKD stats via cachemgr.
- Added squid.conf options for DISKD magic constants.
first component is now a package name+version/pattern, no more
executable/patchname/whatnot.
While there, introduce BUILD_USES_MSGFMT as shorthand to pull in
devel/gettext unless /usr/bin/msgfmt exists (i.e. on post-1.5 -current).
Patch by Alistair Crooks <agc@netbsd.org>
Important Changes:
- offline_toggle
You can now toggle the 'offline_mode' option from the cache manager.
- minimum_object_size
Added the 'minimum_object_size' option. Files smaller than this size are
not cached.
- passive_ftp
If your firewall doesn't allow passive FTP transfers, you can tell Squid
to use PORT instead by turning the 'passive_ftp' option off.
- wccp_version
Some Cisco IOS versions expect to receive WCCP packets with version set
to three. The 'wccp_version' option allows you to change it, from the
default value of four.
- You can now toggle the 'offline_mode' option from the cache manager.
- Added the 'minimum_object_size' option. Files smaller than this size are
not cached.
- If your firewall doesn't allow passive FTP transfers, you can tell Squid
to use PORT instead by turning the 'passive_ftp' option off.
- Some Cisco IOS versions expect to receive WCCP packets with version set
to three. The 'wccp_version' option allows you to change it, from the
default value of four.