---------------------
PatchSet 307 
Date: 2000/05/16 18:53:50
Author: hno
Branch: hno-devel
Tag: (none) 
Log:
Syncronized with modio

Members: 
	ChangeLog:1.1.1.3.6.5.2.2->1.1.1.3.6.5.2.3 
	acconfig.h:1.1.1.3.6.5.2.1->1.1.1.3.6.5.2.2 
	configure.in:1.1.1.3.6.7.2.7->1.1.1.3.6.7.2.8 
	auth_modules/MSNT/README:1.1.1.1->1.1.1.1.6.1 
	auth_modules/MSNT/msntauth-v1.0.lsm:1.1.1.1->1.1.1.1.6.1 
	auth_modules/MSNT/smbauth.c:1.1.1.1->1.1.1.1.6.1 
	errors/Estonian/ERR_ACCESS_DENIED:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_CACHE_ACCESS_DENIED:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_CACHE_MGR_ACCESS_DENIED:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_CANNOT_FORWARD:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_CONNECT_FAIL:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_DNS_FAIL:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_FORWARDING_DENIED:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_FTP_DISABLED:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_FTP_FAILURE:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_FTP_FORBIDDEN:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_FTP_NOT_FOUND:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_FTP_PUT_ERROR:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_FTP_UNAVAILABLE:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_INVALID_REQ:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_INVALID_URL:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_LIFETIME_EXP:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_NO_RELAY:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_ONLY_IF_CACHED_MISS:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_READ_ERROR:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_READ_TIMEOUT:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_SHUTTING_DOWN:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_SOCKET_FAILURE:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_TOO_BIG:1.1.1.1->1.1.1.1.6.1 
	errors/Estonian/ERR_UNSUP_REQ:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_URN_RESOLVE:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_WRITE_ERROR:1.1.1.1->1.1.1.1.8.1 
	errors/Estonian/ERR_ZERO_SIZE_OBJECT:1.1.1.2->1.1.1.2.8.1 
	errors/Japanese/ERR_SHUTTING_DOWN:1.1.1.1->1.1.1.1.8.1 
	errors/Japanese/ERR_TOO_BIG:1.1.1.1->1.1.1.1.6.1 
	errors/Simplify_Chinese/ERR_ACCESS_DENIED:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_CACHE_ACCESS_DENIED:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_CACHE_MGR_ACCESS_DENIED:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_CANNOT_FORWARD:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_CONNECT_FAIL:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_DNS_FAIL:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_FORWARDING_DENIED:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_FTP_DISABLED:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_FTP_FAILURE:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_FTP_FORBIDDEN:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_FTP_NOT_FOUND:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_FTP_PUT_CREATED:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_FTP_PUT_ERROR:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_FTP_PUT_MODIFIED:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_FTP_UNAVAILABLE:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_INVALID_REQ:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_INVALID_URL:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_LIFETIME_EXP:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_NO_RELAY:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_ONLY_IF_CACHED_MISS:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_READ_ERROR:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_READ_TIMEOUT:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_SHUTTING_DOWN:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_SOCKET_FAILURE:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_TOO_BIG:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_UNSUP_REQ:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_URN_RESOLVE:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_WRITE_ERROR:1.1->1.1.6.1 
	errors/Simplify_Chinese/ERR_ZERO_SIZE_OBJECT:1.1->1.1.6.1 
	errors/Simplify_Chinese/README:1.1->1.1.6.1 
	errors/Simplify_Chinese/generic:1.1->1.1.6.1 
	src/HttpReply.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/MemBuf.c:1.1.1.2.8.1->1.1.1.2.8.1.2.1 
	src/acl.c:1.1.1.3.10.5.2.3->1.1.1.3.10.5.2.4 
	src/asn.c:1.1.1.3.6.1.2.2->1.1.1.3.6.1.2.3 
	src/cache_cf.c:1.1.1.3.10.4.2.3->1.1.1.3.10.4.2.4 
	src/cache_manager.c:1.1.1.2.8.1->1.1.1.2.8.1.2.1 
	src/carp.c:1.1.1.1.8.1->1.1.1.1.8.1.2.1 
	src/cf.data.pre:1.1.1.3.10.6.2.5->1.1.1.3.10.6.2.6 
	src/client.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/client_db.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/client_side.c:1.1.1.3.10.7.2.5->1.1.1.3.10.7.2.6 
	src/delay_pools.c:1.1.1.3.10.3.2.2->1.1.1.3.10.3.2.3 
	src/dns.c:1.1.1.3.10.2->1.1.1.3.10.2.2.1 
	src/dns_internal.c:1.1.1.1.10.4.2.3->1.1.1.1.10.4.2.4 
	src/fqdncache.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/ftp.c:1.1.1.3.10.3->1.1.1.3.10.3.2.1 
	src/gopher.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/http.c:1.1.1.3.10.4.2.1->1.1.1.3.10.4.2.2 
	src/icmp.c:1.1.1.2.12.2->1.1.1.2.12.2.2.1 
	src/icp_v2.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/icp_v3.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/ident.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/ipcache.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/mib.txt:1.1.1.3->1.1.1.3.6.1 
	src/mime.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/neighbors.c:1.1.1.3.10.3.2.1->1.1.1.3.10.3.2.2 
	src/net_db.c:1.1.1.3.10.2.2.1->1.1.1.3.10.2.2.2 
	src/pinger.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/protos.h:1.1.1.3.10.8.2.5->1.1.1.3.10.8.2.6 
	src/snmp_agent.c:1.1.1.3.6.2.2.1->1.1.1.3.6.2.2.2 
	src/snmp_core.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/stat.c:1.1.1.3.10.4.2.2->1.1.1.3.10.4.2.3 
	src/store.c:1.1.1.3.10.8.2.4->1.1.1.3.10.8.2.5 
	src/store_client.c:1.1.1.3.10.4.2.4->1.1.1.3.10.4.2.5 
	src/store_dir.c:1.1.1.3.10.6.2.2->1.1.1.3.10.6.2.3 
	src/structs.h:1.1.1.3.10.8.2.6->1.1.1.3.10.8.2.7 
	src/test_cache_digest.c:1.1.1.1.8.1->1.1.1.1.8.1.2.1 
	src/tools.c:1.1.1.3.6.1->1.1.1.3.6.1.2.1 
	src/unlinkd.c:1.1.1.3.10.3.2.2->1.1.1.3.10.3.2.3 
	src/url.c:1.1.1.3.10.2.2.1->1.1.1.3.10.2.2.2 
	src/wccp.c:1.1.1.1.6.1->1.1.1.1.6.1.2.1 
	src/whois.c:1.1.1.2.8.1->1.1.1.2.8.1.2.1 
	src/fs/coss/store_io_coss.c:1.1.4.8.2.4->1.1.4.8.2.5 

Index: squid/ChangeLog
===================================================================
RCS file: /cvsroot/squid-sf//squid/ChangeLog,v
retrieving revision 1.1.1.3.6.5.2.2
retrieving revision 1.1.1.3.6.5.2.3
diff -u -r1.1.1.3.6.5.2.2 -r1.1.1.3.6.5.2.3
--- squid/ChangeLog	3 May 2000 19:00:00 -0000	1.1.1.3.6.5.2.2
+++ squid/ChangeLog	16 May 2000 18:53:50 -0000	1.1.1.3.6.5.2.3
@@ -80,6 +80,105 @@
 
 Changes to Squid-2.4.DEVEL1 ():
 
+Changes to Squid-2.3.STABLE3 (May 15, 2000):
+
+	- Fixed malloc linking problems on Solaris.  The configure
+	  script incorrectly set options for dlmalloc.
+	- Added a configure check to remove compiler optimization
+	  for GCC 2.95.x.
+	- Updated MSNT authenticator module.
+	- Updated Estonian error pages.
+	- Updated Japanese error pages.
+	- Fixed expires bug in httpReplyHdrCacheInit.  It was
+	  incorrectly setting expires based on max-age.  It was using
+	  the current time as a basis, instead of the response date.
+	- Fixed "USE_DNSSERVER" typos.
+	- Added a workaround for getpwnam() problems on Solaris.
+	  getpwnam() could fail if there are fewer than 256 FDs
+	  available.  This causes root to own some disk files.
+	- Added an 'offline_toggle' option via the cache manager.
+	- Added a 'minimum_object_size' option.  Files smaller than
+	  this size are not stored.
+	- Added 'passive_ftp' option to disable passive FTP transfers.
+	- Added 'wccp_version' option because some Cisco IOS versions
+	  require WCCP version 3.
+	- The 'client' program in ping mode (-g) now prints transfer
+	  throughput.
+	- Fixed logging of proxy auth username for redirected
+	  requests.
+	- Fixed bogus Age values for IMS requests.
+	- Fixed persistent connection timeout for client-side
+	  connections.  It was hard-coded to 15 seconds, now uses
+	  the 'pconn_timeout' value.
+	- Fixed up httpAcceptDefer.  It wasn't being used properly
+	  and caused high CPU usage when Squid gets close to the FD
+	  limit.
+	- Numerous delay_pools fixes and checks.
+	- Fixed SNMP coredumps from running snmpwalk.
+	- Added a check for errno == EPIPE in icmp.c when pinger uses
+	  a Unix socket instead of a UDP socket.
+	- Fixed ACL checklist memory initialization bugs.
+	- Cleaned up the MIB file.  Replaced contact information and
+	  checked description fields.
+	- Removed LRU reference_age hard-coded upper limit.
+	- Fixed async I/O FD leak.
+	- Made getMyHostname() more robust.
+	- Fixed domain list matching bug.  "x-foo.com" wasn't properly
+	  compared to ".foo.com" and confused splay tree ordering.
+	- Added a check for whitespace in hostnames and optionally
+	  strip whitespace if 'uri_whitespace' setting allows.
+	- Added status code and checking to ASN/whois queries.
+
+Changes to Squid-2.3.STABLE2 (Mar 2, 2000):
+
+	- Changed Copyright text.
+	- Changed configure so that some IRIX-6.4 hacks apply to
+	  all IRIX-6.* versions.
+	- Cleaned up HTML bugs in error pages.
+	- Told configure to check for netinet/if_ether.h, which
+	  is used in ARP ACL code, but might not be required.
+	- Added "Cookie" to known HTTP headers so it can be
+	  used in anonymizer configuration.
+	- Added optional TCP_REDIRECT log code for logging
+	  of 301/302 responses returned by Squid.
+	- Added a check for a currently running Squid process.
+	  If the pid file exists, and the pid is running,
+	  Squid complains and refuses to start another instance.
+	- Changed async I/O scope to PTHREAD_SCOPE_PROCESS for
+	  IRIX.
+	- Fixed a bug with the PURGE method.  The purge enable
+	  flag was not getting cleared during reconfigure.
+	  Also required PURGE method to be used in http_access
+	  list before enabling.
+	- Fixed async I/O assertions for file open errors.
+	- Fixed internal DNS assertion when unpacking truncated
+	  messages.
+	- Fixed anonymize_headers bug that caused all headers
+	  to be allowed after a reconfigure.
+	- Fixed an access denied bug for accelerator-only installations.
+	- Fixed internal DNS initialization so that it uses
+	  'dns_nameservers' settings in squid.conf if set.
+	- Fixed 'maxconn' ACL bug that caused it to work backwards
+	  (Pedro Ribeiro).
+	- Fixed syslog bug for daemon mode on Linux.
+	- Fixed 'http_port' parsing bugs.
+	- Fixed internal DNS byte ordering bugs for PTR queries.
+	- Fixed internal DNS queue getting stuck during periods
+	  of low activity (Henrik).
+	- Fixed byte ordering bugs for parsing EPLF FTP listings
+	  on 64-bit systems.
+	- Fixed 'request_body_max_size' bug that caused all
+	  POST, PUT requests to be denied if max size is set
+	  to zero.
+	- Fixed 'redirector_access' bug when using 'myport' ACLs.
+	- Fixed CARP neighbor selection bugs for down peers.
+	- Added 'client_persistent_connections' and
+	  'server_persistent_connections' flags to disable persistent
+	  connections for clients and servers.
+	- Fixed access logging bug that caused many requests to be
+	  logged as TCP_MISS.
+	- Added some bounds checking to delay pools code.
+
 Changes to Squid-2.3.STABLE1 (Jan 9, 2000):
 
 	- Updated PAM authentication module from Henrik Nordstrom.
@@ -310,7 +409,7 @@
 	- Added 'peer_connect_timeout' squid.conf option.
 	- Added 'redirector_bypass' squid.conf option.
 	- Added RFC 2518 (WEBDAV) request methods.
-
+	
 Changes to Squid-2.2 (April 19, 1999):
 
 	- Removed all SNMP specific ACL code
Index: squid/acconfig.h
===================================================================
RCS file: /cvsroot/squid-sf//squid/Attic/acconfig.h,v
retrieving revision 1.1.1.3.6.5.2.1
retrieving revision 1.1.1.3.6.5.2.2
diff -u -r1.1.1.3.6.5.2.1 -r1.1.1.3.6.5.2.2
--- squid/acconfig.h	23 Apr 2000 09:55:37 -0000	1.1.1.3.6.5.2.1
+++ squid/acconfig.h	16 May 2000 18:53:51 -0000	1.1.1.3.6.5.2.2
@@ -20,7 +20,7 @@
  *
  */
 @ TOP @
-/* $Id: acconfig.h,v 1.1.1.3.6.5.2.1 2000/04/23 09:55:37 hno Exp $ */
+/* $Id: acconfig.h,v 1.1.1.3.6.5.2.2 2000/05/16 18:53:51 hno Exp $ */
 
 /*********************************
  * START OF CONFIGURABLE OPTIONS *
@@ -268,19 +268,11 @@
 #undef ATHY_COMPRESSION
 
 /*
- * Use DISKD
- */
-#undef USE_DISKD
-
-/*
  * Define this if unlinkd is required
  * (strongly recommended for ufs storage type)
  */
 #undef USE_UNLINKD
 
-/* Define if you want to set the COSS membuf size */
-#undef COSS_MEMBUF_SZ
-
 /*
  * message type for message queues
  */
Index: squid/configure.in
===================================================================
RCS file: /cvsroot/squid-sf//squid/configure.in,v
retrieving revision 1.1.1.3.6.7.2.7
retrieving revision 1.1.1.3.6.7.2.8
diff -u -r1.1.1.3.6.7.2.7 -r1.1.1.3.6.7.2.8
--- squid/configure.in	14 May 2000 23:22:19 -0000	1.1.1.3.6.7.2.7
+++ squid/configure.in	16 May 2000 18:53:51 -0000	1.1.1.3.6.7.2.8
@@ -3,13 +3,13 @@
 dnl
 dnl  Duane Wessels, wessels@nlanr.net, February 1996 (autoconf v2.9)
 dnl
-dnl  $Id: configure.in,v 1.1.1.3.6.7.2.7 2000/05/14 23:22:19 hno Exp $
+dnl  $Id: configure.in,v 1.1.1.3.6.7.2.8 2000/05/16 18:53:51 hno Exp $
 dnl
 dnl
 dnl
 AC_INIT(src/main.c)
 AC_CONFIG_HEADER(include/autoconf.h)
-AC_REVISION($Revision: 1.1.1.3.6.7.2.7 $)dnl
+AC_REVISION($Revision: 1.1.1.3.6.7.2.8 $)dnl
 AC_PREFIX_DEFAULT(/usr/local/squid)
 AC_CONFIG_AUX_DIR(cfgaux)
 
@@ -149,6 +149,8 @@
 	i386-*-solaris2.*)
 		echo "Enabling dlmalloc for $host"
 		use_dlmalloc="yes"
+		LIBDLMALLOC="libdlmalloc.a"
+		LIB_MALLOC="-L../lib -ldlmalloc"
 		;;
     esac
 fi
@@ -1058,6 +1060,18 @@
 		;;
 esac
 
+# Remove optimization for GCC 2.95.[12]
+# gcc -O[2] on *BSD and Linux (x86) causes pointers to magically become NULL
+if test "$GCC" = "yes"; then
+	GCCVER=`$CC -v 2>&1 | awk '$2 ==  "version" {print $3}'`
+	case "$GCCVER" in
+	[2.95.[12]])
+		echo "Removing -O for gcc on $host with GCC $GCCVER"
+		CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9]]*//'`"
+		;;
+	esac
+fi
+
 # Recommended by Balint Nagy Endre <bne@CareNet.hu>
 case "$host" in
 	*-univel-sysv4.2MP)
Index: squid/auth_modules/MSNT/README
===================================================================
RCS file: /cvsroot/squid-sf//squid/auth_modules/MSNT/Attic/README,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.6.1
diff -u -r1.1.1.1 -r1.1.1.1.6.1
--- squid/auth_modules/MSNT/README	26 Jan 2000 03:25:00 -0000	1.1.1.1
+++ squid/auth_modules/MSNT/README	16 May 2000 18:53:51 -0000	1.1.1.1.6.1
@@ -1,11 +1,10 @@
 
-MSNT Auth v1.0
+MSNT Auth v1.1
 Squid web proxy Authentication module
 Antonino Iannella, Stellar-X Pty Ltd
-Mon Oct 18 11:44:50 CST 1999
+Mon Apr 10 22:47:33 CST 2000
 _____________________________________
 
-
 This is a simple authentication module for the Squid proxy server
 to authenticate users on an NT domain.
 
@@ -13,35 +12,114 @@
 and Richard Sharpe. This version is sourced from the Pike
 authentication module by William Welliver (hwellive@intersil.com).
 
-Its use is simple. It accepts a username and password on standard input
+Usage is simple. It accepts a username and password on standard input
 and will return OK if the username/password is valid for the domain,
 or ERR if there was some problem.
 
 You will need to modify the NT server definitions for your site;
-this is the NT PDC server and domain to authenticate to.
-This is done in smbauth.c.
+this is the NT server and NT domain to authenticate to.
+This is done in sitedef.h.
+
+Usernames can now be explicitly denied. See below for details.
+
+This is released under the GNU General Public License and
+is available from http://stellarx.tripod.com.
+
+Site customisation -
+
+Change the following lines in sitedef.h.
+Set the Primary Domain Controller, the backup (if different from the PDC),
+and the NT domain.
+
+  #define PRIMARY_DC "my_pdc"
+  #define BACKUP_DC  "my_bdc"
+  #define NTDOMAIN   "my_domain"
 
-Msntauth is released under the GNU General Public License and
-is available from http://members.tripod.com/~antonino.
+Denying Users -
+
+Users who are not allowed to access the web proxy can be added to
+the denied user list. This list is read every minute, or when
+msntauth receives a SIGHUP signal.
+
+The denied user file is /usr/local/squid/etc/denyusers. This may be
+changed in the DENYUSERS line in denyusers.c. The denied user file
+contains a list of usernames in no particular structure or form.
+If the file does not exist, no users are denied.
+The file must be readable by the web proxy user.
+Msntauth will send syslog messages at LOG_USER priority.
 
 Installation -
 
-Modify smbauth.c as needed.
-type 'make', then 'make install', then 'make clean'.
-The default is to install 'msntauth' into /usr/local/squid/bin.
+Type 'make', then 'make install', then 'make clean'.
+To avoid using the makefile, it may compile with
+
+  gcc -O2 -s -o msntauth *.c
+
+The default is to install 'msntauth' into /usr/local/sbin.
+
+Refer to Squid documentation for the required changes to squid.conf.
+You will need to set the following lines to enable authentication for
+your access list -
+
+  acl <yourACL> proxy_auth REQUIRED
+  http_access allow <yourACL>
+
+You will need to specify the absolute path to msntauth in the 
+authenticate_program directive, and check the authenticate_children
+and authenticate_ttl.
 
 Compilation issues -
 
 The Makefile assumes that GCC is in the current PATH.
-Msntauth is known to compile properly on Redhat Linux 6, FreeBSD 3.1
+Msntauth is known to compile properly on Redhat Linux 6, and FreeBSD 3.1
 without problems. Other operating systems are untested,
 but use a recent copy of the GNU C compiler.
 Smbencrypt.c has the '#include <sys/vfs.h>' line commented out.
 Remove the comments for S5R4 systems, like Solaris.
 
+When compiling under Solaris, the socket libraries must be linked to.
+In the Makefile CFLAGS line, add to the end
+
+  -Dsolaris -lnsl -lsocket
+
+Testing -
+
+I strongly urge that Msntauth is tested prior to being used in a 
+production environment. It may behave differently on different platforms.
+To test it, run it from the command line. Enter username and password
+pairs separated by a space. Press ENTER to get an OK or ERR message.
+Make sure pressing <CTRL><D> behaves the same as a carriage return.
+Make sure pressing <CTRL><C> aborts the program.
+
+Test that entering no details does not result in an OK or ERR message.
+Test that entering an invalid username and password results in an ERR message.
+Note that if NT guest user access is allowed on the PDC, an OK message
+may be returned instead of ERR.
+Test that entering an valid username and password results in an OK message.
+Test that entering a guest username and password returns the correct
+response for the site's access policy.
+
+If the above didn't work as expected, you may need to modify the main()
+function in smbauth.c. Inform the maintainer of any problems.
+
 Contact details -
 
 To contact the maintainer of this package, email Antonino Iannella
-on antonino@usa.net. The latest version may be found on
-http://members.tripod.com/~antonino.
+on stellarx@usa.net or antonino.iannella@usa.net.
+The latest version may be found on http://stellarx.tripod.com.
+
+Reported problem -
+
+For an unknown username, Msntauth returns OK.
+This is because the PDC returns guest access for unknown users,
+even if guest access is disabled.
+This problem was reported by Mr Vadim Popov (vap@iilsr.minsk.by).
+I am not able to replicate this.
+
+The tested environment consisted of PDC on Windows NT 4, SP 6.
+Squid 2.3 and Msntauth was tested on SuSe, RedHat, and Debian Linux.
+A fix was provided in case you have this problem.
+Apply the provided patch before compiling, using
+
+  patch smblib.c < smblib.c.patch
 
Index: squid/auth_modules/MSNT/msntauth-v1.0.lsm
===================================================================
RCS file: /cvsroot/squid-sf//squid/auth_modules/MSNT/Attic/msntauth-v1.0.lsm,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.6.1
diff -u -r1.1.1.1 -r1.1.1.1.6.1
--- squid/auth_modules/MSNT/msntauth-v1.0.lsm	26 Jan 2000 03:25:00 -0000	1.1.1.1
+++ squid/auth_modules/MSNT/msntauth-v1.0.lsm	16 May 2000 18:53:51 -0000	1.1.1.1.6.1
@@ -1,13 +1,13 @@
 Begin3
 Title:         msntauth 
-Version:       1.0 
-Entered-date:  17SEP99 
+Version:       1.1 
+Entered-date:  12APR00 
 Description:   Squid web proxy NT domain authentication module 
 Keywords:      Squid WWW proxy SMB NT domain authentication module source
-Author:         antonino@usa.net (Antonino Iannella)
-Maintained-by:  antonino@usa.net (Antonino Iannella)
+Author:         antonino.iannella@usa.net (Antonino Iannella)
+Maintained-by:  antonino.iannella@usa.net (Antonino Iannella)
 Primary-site:   sunsite.unc.edu /pub/Linux/system/network/misc
-		msntauth-v1.0.tgz
-Original-site:  http://members.tripod.com/~antonino
+		msntauth-v1.1.tgz
+Original-site:  http://stellarx.tripod.com
 Copying-policy: GPL
 End
Index: squid/auth_modules/MSNT/smbauth.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/auth_modules/MSNT/Attic/smbauth.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.6.1
diff -u -r1.1.1.1 -r1.1.1.1.6.1
--- squid/auth_modules/MSNT/smbauth.c	26 Jan 2000 03:25:00 -0000	1.1.1.1
+++ squid/auth_modules/MSNT/smbauth.c	16 May 2000 18:53:51 -0000	1.1.1.1.6.1
@@ -2,12 +2,12 @@
 /*
   msntauth
 
-  Modified to act as a Squid authenticator
+  Modified to act as a Squid authenticator module.
   Removed all Pike stuff.
   Returns OK for a successful authentication, or ERR upon error.
 
   Antonino Iannella, Camtech SA Pty Ltd
-  Thu Sep 16 15:25:28 CST 1999
+  Mon Apr 10 22:24:26 CST 2000
 
   Uses code from -
     Andrew Tridgell 1997
@@ -32,47 +32,78 @@
 */
 
 #include <stdio.h>
+#include <signal.h>
+#include <sys/time.h>
+#include "sitedef.h"
 
-/* You must specifiy these for your site! */
-
-#define PRIMARY_DC "my_pdc"
-#define BACKUP_DC  "my_bdc"
-#define NTDOMAIN   "my_domain"
+extern void Checkforchange();       /* For signal() to find the function */
 
 /* Main program for simple authentication.
-   This code could probably be better, might be
-   susceptible to buffer overflows. */
+   Reads the denied user file. Sets alarm timer.
+   Scans and checks for Squid input, and attempts to validate the user.
+*/
 
 int main()
 {
   char username[256];
   char password[256];
   char wstr[256];
+  struct itimerval TimeOut;
+
+  /* Read denied user file. If it fails there is a serious problem.
+     Check syslog messages. Deny all users while in this state.
+     The process should then be killed. */
+
+  if (Read_denyusers() == 1)
+  {
+     while (1)
+     {
+       fgets(wstr, 255, stdin);
+       puts("ERR");
+       fflush(stdout);
+     }
+  }
+
+  /* An alarm timer is used to check the denied user file for changes
+     every minute. Reload the file if it has changed. */ 
+
+  TimeOut.it_interval.tv_sec = 60;
+  TimeOut.it_interval.tv_usec = 0;
+  TimeOut.it_value.tv_sec = 60;
+  TimeOut.it_value.tv_usec = 0;
+  setitimer(ITIMER_REAL, &TimeOut, 0);
+  signal(SIGALRM, Checkforchange);
+  signal(SIGHUP, Checkforchange);
 
   while (1)
   {
-    // Read whole line from standard input. Terminate on break.
+    /* Read whole line from standard input. Terminate on break. */
     if (fgets(wstr, 255, stdin) == NULL)    
        break;
 
-    // Clear any current settings
+    /* Clear any current settings */
     username[0] = '\0';
     password[0] = '\0';
-    sscanf(wstr, "%s %s", username, password);          // Extract parameters
+    sscanf(wstr, "%s %s", username, password);     /* Extract parameters */
 
-    // Check for invalid or blank entries
+    /* Check for invalid or blank entries */
     if ((username[0] == '\0') || (password[0] == '\0'))
-    {
+  {
        puts("ERR");
        fflush(stdout);
        continue;
     }
 
+    if (Check_user(username) == 1)            /* Check if user is denied */
+        puts("ERR");
+    else
+    {
     if (Valid_User(username, password, PRIMARY_DC, BACKUP_DC, NTDOMAIN) == 0)
        puts("OK");
     else
        puts("ERR");
-       
+  }
+
     fflush(stdout);
   }
   
Index: squid/errors/Estonian/ERR_ACCESS_DENIED
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_ACCESS_DENIED,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_ACCESS_DENIED	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_ACCESS_DENIED	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -18,5 +18,5 @@
 Juurdep&auml;&auml;su kontrolli konfiguratsioon blokeerib teie p&auml;ringut.
 Kui te arvate, et blokeering pole &otilde;ige, kontakteeruge palun teenuse pakkujaga.
 </UL>
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
 
Index: squid/errors/Estonian/ERR_CACHE_ACCESS_DENIED
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_CACHE_ACCESS_DENIED,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_CACHE_ACCESS_DENIED	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_CACHE_ACCESS_DENIED	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -1,9 +1,9 @@
 <HTML><HEAD>
-<TITLE>VIGA: Cache kasutamine blokeeritud</TITLE>
+<TITLE>VIGA: Vahemälu serveri kasutamine blokeeritud</TITLE>
 </HEAD>
 <BODY>
 <H1>VIGA</H1>
-<H2>Cache kasutamine keelatud</H2>
+<H2>Vahemälu serveri kasutamine keelatud</H2>
 <HR>
 <P>
 Sooritades p&auml;ringut URLile
@@ -13,7 +13,7 @@
 <UL>
 <LI>
 <STRONG>
-Cache kasutamine keelatud.
+Vahemälu serveri kasutamine keelatud.
 </STRONG>
 </UL>
 </P>
@@ -26,7 +26,7 @@
 <P>
 Autoriseerimiseks on teil vaja brauserit mis toetab HTTP/1.1 standardit,
 nagu Netscape versioon 2.0 v&otilde;i uuem, v&otilde;i MS Internet Explorer
-3.0. Palun kontakteeruge <A HREF="mailto:%w">cache administraatoriga</a>,
+3.0. Palun kontakteeruge <A HREF="mailto:%w">vahemälu serveri administraatoriga</a>,
 kui teil on probleeme autoriseerimisega v&otilde;i
 <A HREF="http://%h/cgi-bin/chpasswd.cgi\">vahetage/a> oma parool.
 </P>
Index: squid/errors/Estonian/ERR_CACHE_MGR_ACCESS_DENIED
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_CACHE_MGR_ACCESS_DENIED,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_CACHE_MGR_ACCESS_DENIED	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_CACHE_MGR_ACCESS_DENIED	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -1,9 +1,9 @@
 <HTML><HEAD>
-<TITLE>VIGA: Cache haldaja kasutamine blokeeritud</TITLE>
+<TITLE>VIGA: Vahemälu serveri haldaja kasutamine blokeeritud</TITLE>
 </HEAD>
 <BODY>
 <H1>VIGA</H1>
-<H2>Cache haldaja kasutamine blokeeritud</H2>
+<H2>Vahemälu serveri haldaja kasutamine blokeeritud</H2>
 <HR>
 <P>
 Sooritades p&auml;ringut URLile
@@ -13,19 +13,19 @@
 <UL>
 <LI>
 <STRONG>
-Cache haldaja kasutamine keelatud.
+Vahemälu serveri haldaja kasutamine keelatud.
 </STRONG>
 </UL>
 </P>
 
 <P>Vabandust, teil pole &otilde;igust p&auml;ringule:
 <PRE>    %U</PRE>
-sellele cache haldajale, kuni te pole l&auml;binud autoriseerimist.
+sellele vahemälu serveri haldajale, kuni te pole l&auml;binud autoriseerimist.
 </P>
 
 <P> Autoriseerimiseks on teil vaja brauserit mis toetab HTTP/1.1 standardit,
 nagu Netscape versioon 2.0 v&otilde;i uuem, v&otilde;i MS Internet Explorer
-3.0. Palun kontakteeruge <A HREF="mailto:%w">cache administraatoriga</a>,
+3.0. Palun kontakteeruge <A HREF="mailto:%w">vahemälu serveri administraatoriga</a>,
 kui teil on probleeme autoriseerimisega v&otilde;i kui te <em>olete</em>
-administraator, lugege Squidi dokumentatsiooni cache haldaja interfeisi kohta
-ja kontrollige cache logi vea t&auml;psema kirjelduse saamiseks.</P>
+administraator, lugege Squidi dokumentatsiooni vahemälu serveri haldaja interfeisi kohta
+ja kontrollige vahemälu serveri logi t&auml;psema veakirjelduse saamiseks.</P>
Index: squid/errors/Estonian/ERR_CANNOT_FORWARD
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_CANNOT_FORWARD,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_CANNOT_FORWARD	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_CANNOT_FORWARD	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -18,10 +18,10 @@
 
 <P>
 P&auml;ringut ei &otilde;nnestunud edastada ei originaali serverile ega
-&uuml;helegi vanem cache serverile. Ilmselt on p&otilde;hjus:
+&uuml;helegi vanem vahemälu serverile. Ilmselt on p&otilde;hjus:
 <UL>
-<LI>Cache administraator ei v&otilde;imalda teha otseseid p&auml;ringuid
+<LI>Vahemälu serveri administraator ei v&otilde;imalda teha otseseid p&auml;ringuid
 originaali serverile ja
-<LI>K&otilde;ik kirjeldatud vanem vanem cached on hetkel k&auml;ttesaamatud.
+<LI>K&otilde;ik kirjeldatud vanem vahemälu serverid on hetkel k&auml;ttesaamatud.
 </UL>
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_CONNECT_FAIL
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_CONNECT_FAIL,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_CONNECT_FAIL	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_CONNECT_FAIL	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -23,4 +23,4 @@
 <P>
 Server v&otilde;i arvutiv&otilde;rk ei t&ouml;&ouml;ta. Palun korrake
 p&auml;ringut.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_DNS_FAIL
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_DNS_FAIL,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_DNS_FAIL	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_DNS_FAIL	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -22,8 +22,7 @@
 <P>
 Mis t&auml;hendab:
 <PRE>
- Cache ei suutnud lahendada URLis antud hosti nime. Palun kontrollige
+ Vahemälu server ei suutnud lahendada URLis antud hosti nime. Palun kontrollige
  aadressi korrektsust.
 </PRE>
-</P>
-
+<P>Teie teenuseVahemälu serve aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_FORWARDING_DENIED
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_FORWARDING_DENIED,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_FORWARDING_DENIED	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_FORWARDING_DENIED	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -17,6 +17,6 @@
 </UL>
 
 <P>
-Meie cache ei edasta teie p&auml;ringut, kuna ta kasutab andmete edastamisel
-ainult naaber cache meetodit. Ilmselt on %i vigaselt konfigureeritud cache.
-</P>
+Meie vahemälu server ei edasta teie p&auml;ringut, kuna ta kasutab andmete edastamisel
+ainult naaber vahemälu serverite meetodit. Ilmselt on %i vigaselt konfigureeritud vahemälu server.
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_FTP_DISABLED
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_FTP_DISABLED,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_FTP_DISABLED	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_FTP_DISABLED	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -17,5 +17,5 @@
 </UL>
 
 <P>
-See cache ei toeta FTPd.
-</P>
+See vahemälu server ei toeta FTPd.
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_FTP_FAILURE
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_FTP_FAILURE,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_FTP_FAILURE	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_FTP_FAILURE	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -17,5 +17,4 @@
 See olukord v&otilde;ib olla tekkinud, kui FTP URL on antud absoluutse
 teega (mis on vastuolus RFC 1738-ga). Kui see on nii, siis saab faili 
 aadressilt <A HREF="%B">%B</A>.
-</P>
-
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_FTP_FORBIDDEN
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_FTP_FORBIDDEN,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_FTP_FORBIDDEN	26 Jan 2000 03:23:10 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_FTP_FORBIDDEN	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -12,5 +12,4 @@
 ja sai sellise vastuse
 <blockquote><strong><pre>%F</pre></strong></blockquote>
 <blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_FTP_NOT_FOUND
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_FTP_NOT_FOUND,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_FTP_NOT_FOUND	26 Jan 2000 03:23:10 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_FTP_NOT_FOUND	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -16,5 +16,4 @@
 See olukord v&otilde;ib olla tekkinud, kui FTP URL on antud absoluutse
 teega (mis on vastuolus RFC 1738-ga). Kui see on nii, siis saab faili 
 aadressilt <A HREF="%B">%B</A>.
-</P>
-
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_FTP_PUT_ERROR
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_FTP_PUT_ERROR,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_FTP_PUT_ERROR	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_FTP_PUT_ERROR	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -21,5 +21,4 @@
 <PRE>
 Kontrolli failiteed, &otilde;iguseid, ketta ruumi ja proovi uuesti.
 </PRE>
-</P>
-
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_FTP_UNAVAILABLE
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_FTP_UNAVAILABLE,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_FTP_UNAVAILABLE	26 Jan 2000 03:23:10 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_FTP_UNAVAILABLE	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -13,5 +13,4 @@
 ja sai sellise vastuse
 <blockquote><strong><pre>%F</pre></strong></blockquote>
 <blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_INVALID_REQ
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_INVALID_REQ,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_INVALID_REQ	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_INVALID_REQ	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -28,4 +28,4 @@
 <LI>POST v&otilde;i PUT p&auml;ringutel puudub Content-Length
 <LI>keelatud s&uuml;mbolid hosti nimes; alakriipsud pole lubatud
 </UL>
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_INVALID_URL
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_INVALID_URL,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_INVALID_URL	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_INVALID_URL	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -24,4 +24,4 @@
 <LI>Vigane topelt-kaldkriips URLi teel
 <LI>Vigane s&uuml;mbol hosti nimes; alakriipsud pole lubatud
 </UL>
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_LIFETIME_EXP
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_LIFETIME_EXP,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_LIFETIME_EXP	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_LIFETIME_EXP	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -18,4 +18,4 @@
 
 <P>
 Squid katkestas p&auml;ringu, kuna see kestis liiga kaua.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_NO_RELAY
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_NO_RELAY,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_NO_RELAY	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_NO_RELAY	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -17,6 +17,6 @@
 </UL>
 
 <P>
-Selles Caches on WAISi edastav host kirjeldamata!  Kontakteeruge
+Selles vahemälu serveris on WAISi edastav host kirjeldamata!  Kontakteeruge
 administraatoriga.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_ONLY_IF_CACHED_MISS
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_ONLY_IF_CACHED_MISS,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_ONLY_IF_CACHED_MISS	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_ONLY_IF_CACHED_MISS	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -12,17 +12,16 @@
 <UL>
 <LI>
 <STRONG>
-Kehtiv dokument puudub cachest ja <code>only-if-cached</code>
-Valid document was not found in the cache and p&auml;ring sisaldas
+Kehtiv dokument puudub vahemälu serverist ja p&auml;ring sisaldas
 <code>only-if-cached</code> direktiivi.
 </STRONG>
 </UL>
 
 <P>
 
-Te edastasite p&auml;ringu <code>only-if-cached</code> cache kontrolli
-direktiiviga. Dokumenti ei leitud cachest <em>v&otilde;i</em>ta
+Te edastasite p&auml;ringu <code>only-if-cached</code> vahemälu kontrolli
+direktiiviga. Dokumenti ei leitud vahemälu serverist <em>v&otilde;i</em>ta
 n&otilde;udis uuendamist, mis on aga keelatud <code>only-if-cached</code>
 direktiiviga.
 
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_READ_ERROR
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_READ_ERROR,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_READ_ERROR	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_READ_ERROR	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -22,4 +22,4 @@
 
 <P>
 Andmete lugemisel tekkis veasituatsioon. Palun korrake p&auml;ringut.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_READ_TIMEOUT
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_READ_TIMEOUT,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_READ_TIMEOUT	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_READ_TIMEOUT	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -23,4 +23,4 @@
 <P>
 Lugejal katkes v&otilde;rgust andmeid lugedes kannatus. V&otilde;rk v&otilde;i
 server v&otilde;ib olla maas v&otilde;i umbes. Proovige uuesti.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_SHUTTING_DOWN
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_SHUTTING_DOWN,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_SHUTTING_DOWN	26 Jan 2000 03:23:10 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_SHUTTING_DOWN	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -14,4 +14,4 @@
 Meie server on saanud k&auml;su t&ouml;&ouml; l&otilde;petada ja 
 ei saa teie p&auml;ringut hetkel teenindada. Palun korrake oma
 p&auml;ringut motilde;ne aja p&auml;rast.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_SOCKET_FAILURE
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_SOCKET_FAILURE,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_SOCKET_FAILURE	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_SOCKET_FAILURE	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -23,4 +23,4 @@
 <P>
 Squid ei suuda tekitada TCP pistikut, ilmselt &uuml;lekoormuse t&otilde;ttu.
 palun korrake p&auml;ringut.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_TOO_BIG
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_TOO_BIG,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.6.1
diff -u -r1.1.1.1 -r1.1.1.1.6.1
--- squid/errors/Estonian/ERR_TOO_BIG	26 Jan 2000 03:25:00 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_TOO_BIG	16 May 2000 18:53:51 -0000	1.1.1.1.6.1
@@ -1,26 +1,25 @@
 <HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<TITLE>IGA: P&auml;ring URLile ei saa vastust</TITLE>
 </HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H1>Viga</H1>
+<H2>P&auml;ring URLile ei saa vastust</H2>
 <HR>
 <P>
-While trying to retrieve the URL:
+Sooritades p&auml;ringut URLile
 <A HREF="%U">%U</A>
 <P>
-The following error was encountered:
+tekkis j&auml;rgnev viga:
 <UL>
 <LI>
 <STRONG>
-The request or reply is too large.
+Päring või vastus on liiga suur.
 </STRONG>
 <P>
-If you are making a POST or PUT request, then your request body
-(the thing you are trying to upload) is too large.  If you are 
-making a GET request, then the reply body (what you are trying
-to download) is too large.   These limits have been established
-by the Internet Service Provider who operates this cache.  Please
-contact them directly if you feel this is an error.
+Kui te sooritate POST või PUT päringut, siis teie päringu keha
+(see asi, mida te serverisse laete) on liiga suur. Kui te
+sooritate GET päringut, siis on vastuse keha (asi, mida te serverist
+laete) liiga suur. Need piirangus on seadnud teie teenusepakkuja, kes
+haldab seda vahemälu serverit. Kui te arvate, et tegemist on veaga,
+kontakteeruge palun otse oma teenusepakkujaga.
 </UL>
-<P>
-Your cache administrator is <A HREF="mailto:%w">%w</A>.
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_UNSUP_REQ
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_UNSUP_REQ,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_UNSUP_REQ	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_UNSUP_REQ	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -19,5 +19,4 @@
 <P>
 Squid ei toeta k&otilde;iki p&auml;ringu meetodeid k&otilde;ikide protokollidega.
 N&auml;iteks, te ei saa teha POST operatsiooni Gopher p&auml;ringus.
-</P>
-
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_URN_RESOLVE
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_URN_RESOLVE,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_URN_RESOLVE	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_URN_RESOLVE	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -18,4 +18,4 @@
 
 <P>
 Hei, mida sa ootad URNidelt %T peal:)
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_WRITE_ERROR
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_WRITE_ERROR,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Estonian/ERR_WRITE_ERROR	26 Jan 2000 03:21:47 -0000	1.1.1.1
+++ squid/errors/Estonian/ERR_WRITE_ERROR	16 May 2000 18:53:51 -0000	1.1.1.1.8.1
@@ -22,4 +22,4 @@
 
 <P>
 V&otilde;rku kirjutades tekkis viga. Palun korrake p&auml;ringut.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Estonian/ERR_ZERO_SIZE_OBJECT
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Estonian/ERR_ZERO_SIZE_OBJECT,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.2.8.1
diff -u -r1.1.1.2 -r1.1.1.2.8.1
--- squid/errors/Estonian/ERR_ZERO_SIZE_OBJECT	26 Jan 2000 03:23:10 -0000	1.1.1.2
+++ squid/errors/Estonian/ERR_ZERO_SIZE_OBJECT	16 May 2000 18:53:51 -0000	1.1.1.2.8.1
@@ -18,4 +18,4 @@
 
 <P>
 Squid ei saanud selle p&auml;ringu vastuseks midagi...
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Index: squid/errors/Japanese/ERR_SHUTTING_DOWN
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Japanese/ERR_SHUTTING_DOWN,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1 -r1.1.1.1.8.1
--- squid/errors/Japanese/ERR_SHUTTING_DOWN	26 Jan 2000 03:23:10 -0000	1.1.1.1
+++ squid/errors/Japanese/ERR_SHUTTING_DOWN	16 May 2000 18:53:52 -0000	1.1.1.1.8.1
@@ -1,17 +1,18 @@
 <HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
+<TITLE>¥¨¥é¡¼: ¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿ URL ¤Ï¼èÆÀ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿</TITLE>
 </HEAD><BODY>
 <H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H2>¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿ URL ¤Ï¼èÆÀ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿</H2>
 <HR>
 <P>
-While trying to retrieve the URL:
+°Ê²¼¤Î URL ¤ò¼èÆÀ¤·¤¿ºÝ¤Ë:
 <A HREF="%U">%U</A>
 <P>
-The following error was encountered:
+¼¡¤Î¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿:
 <UL>
 <P>
-This cache is in the process of shutting down and can not
-service your request at this time.  Please retry your
-request again soon.
+¤³¤Î¥­¥ã¥Ã¥·¥å¤Ï²ÔÆ¯Ää»ß¤Î½èÍý¤ËÆþ¤Ã¤Æ¤¤¤Æ¡¢
+¸½ºß¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤Ø¤Î¥µ¡¼¥Ó¥¹¤òÄó¶¡¤Ç¤­¤Þ¤»¤ó¡£
+¸å¤ÇºÆÅÙ¥ê¥¯¥¨¥¹¥È¤·¤Æ¤¯¤À¤µ¤¤¡¥
 </P>
Index: squid/errors/Japanese/ERR_TOO_BIG
===================================================================
RCS file: /cvsroot/squid-sf//squid/errors/Japanese/ERR_TOO_BIG,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.6.1
diff -u -r1.1.1.1 -r1.1.1.1.6.1
--- squid/errors/Japanese/ERR_TOO_BIG	26 Jan 2000 03:25:00 -0000	1.1.1.1
+++ squid/errors/Japanese/ERR_TOO_BIG	16 May 2000 18:53:52 -0000	1.1.1.1.6.1
@@ -1,26 +1,27 @@
 <HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
+<TITLE>¥¨¥é¡¼: ¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿ URL ¤Ï¼èÆÀ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿</TITLE>
 </HEAD><BODY>
 <H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H2>¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿ URL ¤Ï¼èÆÀ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿</H2>
 <HR>
 <P>
-While trying to retrieve the URL:
+°Ê²¼¤Î URL ¤ò¼èÆÀ¤·¤¿ºÝ¤Ë:
 <A HREF="%U">%U</A>
 <P>
-The following error was encountered:
+¼¡¤Î¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿:
 <UL>
 <LI>
 <STRONG>
-The request or reply is too large.
+¥ê¥¯¥¨¥¹¥È¤Þ¤¿¤Ï¥ê¥×¥é¥¤¤¬Âç¤­¤¹¤®¤Þ¤¹¡£
 </STRONG>
 <P>
-If you are making a POST or PUT request, then your request body
-(the thing you are trying to upload) is too large.  If you are 
-making a GET request, then the reply body (what you are trying
-to download) is too large.   These limits have been established
-by the Internet Service Provider who operates this cache.  Please
-contact them directly if you feel this is an error.
+POST¤«PUT¤Î¥ê¥¯¥¨¥¹¥È¤ò¤·¤Æ¤¤¤¿¤Ê¤é¡¢¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤ÎËÜÂÎ
+(¤¢¤Ê¤¿¤¬¥¢¥Ã¥×¥í¡¼¥É¤ò»î¤ß¤è¤¦¤È¤·¤Æ¤¤¤¿¤â¤Î)¤¬Âç¤­¤¹¤®¤Þ¤¹¡£
+GET¤Î¥ê¥¯¥¨¥¹¥È¤ò¤·¤Æ¤¤¤¿¤Ê¤é¡¢¥ê¥×¥é¥¤¤ÎËÜÂÎ(¥À¥¦¥ó¥í¡¼¥É¤·¤è¤¦
+¤È¤·¤Æ¤¤¤¿¤â¤Î)¤¬Âç¤­¤¹¤®¤Þ¤¹¡£¤³¤ì¤é¤ÎÀ©¸Â¤Ï¡¢¤³¤Î¥­¥ã¥Ã¥·¥å¤Î
+±¿ÍÑ¼Ô¤Ë¤è¤Ã¤Æ²Ý¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
+¤³¤ì¤¬¥¨¥é¡¼¤À¤È´¶¤¸¤ë¤È¤­¤ÏÄ¾ÀÜ±¿ÍÑ¼Ô¤ËÏ¢Íí¤·¤Æ²¼¤µ¤¤¡£
 </UL>
 <P>
-Your cache administrator is <A HREF="mailto:%w">%w</A>.
+¥­¥ã¥Ã¥·¥å¤Î´ÉÍý¼Ô¤Ï<A HREF="mailto:%w">%w</A>¤Ç¤¹¡£
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_ACCESS_DENIED	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,29 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Access Denied.
+<BR>¾Ü¾ø·ÃÎÊ
+</STRONG>
+<P>
+Access control configuration prevents your request from
+being allowed at this time.  Please contact your service provider if
+you feel this is incorrect.
+<BR>
+µ±Ç°µÄ´æÈ¡¿ØÖÆÉè¶¨½ûÖ¹ÄúµÄÇëÇó±»½ÓÊÜ£¬
+Èç¹ûÄú¾õµÃÕâÊÇ´íÎóµÄ£¬ÇëÓëÄúÍøÂ··þÎñµÄÌá¹©ÕßÁªÏµ¡£
+</UL>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
+
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_CACHE_ACCESS_DENIED	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,42 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÍøÂç»º´æ·þÎñÆ÷¾Ü¾ø·ÃÎÊ</TITLE>
+</HEAD>
+<BODY>
+<H1>´íÎó</H1>
+<H2>ÍøÂç»º´æ·þÎñÆ÷¾Ü¾ø·ÃÎÊ</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÏÂÃæµÄÍøÖ·£¨URL£©Ê±£º 
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º 
+<UL>
+<LI>
+<STRONG>
+Cache Access Denied.
+<BR>
+»º´æ·þÎñÆ÷¾Ü¾ø·ÃÎÊ
+</STRONG>
+</UL>
+</P>
+
+<P>
+±§Ç¸£¬Äú²»±»ÔÊÐíÍ¨¹ý±¾ÍøÂç»º´æ·þÎñÆ÷·ÃÎÊÏÂÁÐÎ»ÖÃ£º
+<BR>    %U<BR>
+³ý·ÇÄúÍ¨¹ýÁËÎÒÃÇµÄÉí·ÝÑéÖ¤¡£
+</P>
+
+<P>
+You need to use Netscape version 2.0 or greater, or Microsoft Internet
+Explorer 3.0, or an HTTP/1.1 compliant browser for this to work.  Please
+contact the <A HREF="mailto:%w">cache administrator</a> if you have
+difficulties authenticating yourself or 
+<A HREF="http://%h/cgi-bin/chpasswd.cgi\">change</a> your default password.
+<BR>
+ÄúÐèÒªÊ¹ÓÃ Netscape version 2.0 »ò¸üÐÂµÄ°æ±¾£¬»òÊÇÊ¹ÓÃ Microsoft Internet 
+Explorer 3.0£¬»òÊÇÒ»¸ö HTTP/1.1 ÏàÈÝµÄä¯ÀÀÆ÷À´½øÐÐ¹¤×÷¡£Èç¹ûÄúÔÚÉí·ÝÑéÖ¤ÉÏ
+·¢ÉúÀ§ÄÑ£¬ÇëÓë <A HREF="mailto:%w">¹ÜÀíÕß</a> ÁªÏµ¡£
+»òÊÇ<A HREF="http://%h/cgi-bin/chpasswd.cgi\">¸ü¸Ä</a>ÄúµÄÃÜÂë¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_CACHE_MGR_ACCESS_DENIED	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,43 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£º»º´æ¹ÜÀíÆ÷¾Ü¾ø·ÃÎÊ</TITLE>
+</HEAD>
+<BODY>
+<H1>´íÎó</H1>
+<H2>»º´æ¹ÜÀíÆ÷¾Ü¾ø·ÃÎÊ</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÏÂÃæµÄÍøÖ·£¨URL£©Ê±£º 
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º 
+<UL>
+<LI>
+<STRONG>
+Cache Manager Access Denied.
+<BR>
+»º´æ¹ÜÀíÆ÷¾Ü¾ø·ÃÎÊ
+</STRONG>
+</UL>
+</P>
+
+<P>
+±§Ç¸£¬Äú²»±»ÔÊÐíÍ¨¹ý±¾»º´æ¹ÜÀíÆ÷·ÃÎÊÒÔÏÂÎ»ÖÃ£º 
+<BR>    %U<BR>
+³ý·ÇÄúÍ¨¹ýÎÒÃÇµÄÉí·ÝÑéÖ¤¡£
+</P>
+
+<P> You need to use Netscape version 2.0 or greater, or Microsoft Internet
+Explorer 3.0, or an HTTP/1.1 compliant browser for this to work.  Please
+contact the <A HREF="mailto:%w">cache administrator</a> if you have
+difficulties authenticating yourself or, if you <em>are</em> the
+administrator, read Squid documentation on cache manager interface and check
+cache log for more detailed error messages.
+<BR>
+ÄúÐèÒªÊ¹ÓÃ Netscape version 2.0 »ò×îÐÂµÄ°æ±¾£¬»òÊÇÊ¹ÓÃ Microsoft Internet 
+Explorer 3.0£¬»òÊÇÒ»¸ö HTTP/1.1 ÏàÈÝµÄä¯ÀÀÆ÷À´½øÐÐ¹¤×÷¡£Èç¹ûÄúÊÇÔÚÉí·ÝÑéÖ¤ÉÏ·¢
+ÉúÎÊÌâ£¬ÇëÏÈÈ·¶¨ÄúÓÐÈ¨¶Ô»º´æÊ¹ÓÃ¹ÜÀíÆ÷¡£
+»òÊÇÓë<A HREF="mailto:%w">¹ÜÀíÕß</a>ÁªÏµ¡£Èç¹ûÄú<em>¾ÍÊÇ</em>¹ÜÀíÕß£¬ÇëÏêÏ¸ÔÄ¶Á Squid Ëù¸½ÎÄ¼þÖÐÓë
+cache manager ÓÐ¹Ø²¿·Ý»ò¼ì²é cache log ÒÔ±ãµÃµ½¸üÏê¾¡µÄÏ¸½Ú¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_CANNOT_FORWARD	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,38 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£»ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÏÂÃæµÄÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Unable to forward this request at this time.
+<BR>
+Ä¿Ç°ÎÞ·¨½«ÄúµÄÇëÇó½øÐÐ×ªËÍ²Ù×÷
+</STRONG>
+</UL>
+
+<P>
+This request could not be forwarded to the origin server or to any
+parent caches.  The most likely cause for this error is that:
+<UL>
+<LI>The cache administrator does not allow this cache to make 
+    direct connections to origin servers, and
+<LI>All configured parent caches are currently unreachable.
+</UL>
+</P>
+<P>
+ÄúµÄÇëÇóÎÞ·¨±»×ªËÍµ½Ô­Ê¼ÍøÂç·þÎñÆ÷»òÆäËûµÄÉÏ²ã»º´æ·þÎñÆ÷£¬·¢ÉúÕâ¸öÎÊÌâ×î¿ÉÄÜµÄÔ­ÒòÊÇ£º
+<UL>
+<LI>»º´æ·þÎñÆ÷¹ÜÀíÔ±²»ÔÊÐí±¾·þÎñÆ÷ÓëÔ­Ê¼ÍøÂç·þÎñÆ÷Ö±½ÓÁ¬½á£¬¶ø
+<LI>ËùÓÐ±¾·þÎñÆ÷Ö¸¶¨µÄÉÏ²ã»º´æ·þÎñÆ÷¶¼ÔÝÊ±ÎÞ·¨Á¬½á¡£
+</UL>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_CONNECT_FAIL	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,31 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Connection Failed
+<BR>
+Á¬½ÓÊ§°Ü
+</STRONG>
+</UL>
+
+<P>
+ÏµÍ³·µ»ØÒÔÏÂÄÚÈÝ£º
+<PRE><I>    %E</I></PRE>
+
+<P>
+The remote host or network may be down.  Please try the request again.
+<BR>
+ÄúÒªÁ¬½áµÄÍøÂç·þÎñÆ÷»òÍøÂç¿ÉÄÜ·¢Éú¹ÊÕÏ¡£ÇëÉÔºóÔÙÊÔ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_DNS_FAIL	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,32 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<BLOCKQUOTE>
+ÎÞ·¨½«ÄúÊäÈëµÄÖ÷»úÃû³Æ£º<I>%H</I>×ª»»³É IP µØÖ·
+</BLOCKQUOTE>
+</UL>
+
+<P>
+ÓòÃû·þÎñÆ÷·µ»ØÒÔÏÂÑ¶Ï¢£º
+<BLOCKQUOTE>
+%z
+</BLOCKQUOTE>
+
+<P>
+Õâ±íÊ¾£º
+<PRE>
+ The cache was not able to resolve the hostname presented in the URL. 
+ Check if the address is correct. 
+ »º´æ·þÎñÆ÷ÎÞ·¨½âÎöÄúÊäÈëÍøÖ·£¨URL£©ÖÐµÄÖ÷»úÃû³Æ£¬
+ Çë¼ì²é¸ÃÃû³ÆÊÇ·ñÕýÈ·¡£
+</PRE>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_FORWARDING_DENIED	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,30 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Forwarding Denied.
+<BR>
+¾Ü¾ø×ªËÍ
+</STRONG>
+</UL>
+
+<P>
+This cache will not forward your request because it is trying to enforce a
+sibling relationship.  Perhaps the client at %i is a cache which has been
+misconfigured.
+<BR>
+±¾»º´æ·þÎñÆ÷ÎÞ·¨×ªËÍÄúµÄÇëÇó£¬Ò²ÐíÄúÊÇÍ¨¹ýÒ»¸ö²¢Î´±»±¾»º´æ·þÎñÆ÷
+Éè¶¨ÎªÔÊÐí´æÈ¡µÄ»º´æ·þÎñÆ÷£¨%i£©À´·ÃÎÊµÄ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_FTP_DISABLED	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,27 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+FTP is Disabled
+<BR>
+½ûÖ¹Ê¹ÓÃÎÄ¼þ´«ÊäÐ­Òé
+</STRONG>
+</UL>
+
+<P>
+This cache does not support FTP.
+<BR>
+±¾»º´æ·þÎñÆ÷Î´¿ª·ÅÎÄ¼þ´«Êä·þÎñ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_FTP_FAILURE	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,17 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±·¢ÉúÎÄ¼þ´«ÊäÐ­Òé´íÎó£º
+<A HREF="%U">%U</A>
+<P>
+±¾»º´æ·þÎñÆ÷·¢³öÒÔÏÂ FTP ÃüÁî£º
+<blockquote><strong><pre>%f</pre></strong></blockquote>
+È»ºóÊÕµ½ÈçÏÂ»ØÓ¦£º
+<blockquote><strong><pre>%F</pre></strong></blockquote>
+<blockquote><strong><pre>%g</pre></strong></blockquote>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_FTP_FORBIDDEN	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,18 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±ÎÄ¼þ´«ÊäÐ­Òé£¨FTP£©Éí·ÝÑéÖ¤Ê§°Ü£º
+<A HREF="%U">%U</A>
+<P>
+±¾»º´æ·þÎñÆ÷·¢³öÒÔÏÂ FTP ÃüÁî£º
+<blockquote><strong><pre>%f</pre></strong></blockquote>
+È»ºóÊÕµ½ÈçÏÂ»ØÓ¦£º
+<blockquote><strong><pre>%F</pre></strong></blockquote>
+<blockquote><strong><pre>%g</pre></strong></blockquote>
+</P>
+
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_FTP_NOT_FOUND	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,21 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+ÒÔÏÂÍøÖ·ÎÞ·¨¶ÁÈ¡£º
+<A HREF="%U">%U</A>
+<P>
+±¾»º´æ·þÎñÆ÷·¢³öÒÔÏÂ FTP ÃüÁî£º
+<blockquote><strong><pre>%f</pre></strong></blockquote>
+È»ºóÊÕµ½ÈçÏÂ»ØÓ¦£º
+<blockquote><strong><pre>%F</pre></strong></blockquote>
+<blockquote><strong><pre>%g</pre></strong></blockquote>
+<P>
+Õâ¿ÉÄÜÊÇÓÉÓÚ FTP ÍøÖ·£¨URL£©ÖÐ°üº¬ÁË¾ø¶ÔÂ·¾¶ËùÖÂ£¨²»·ûºÏ RFC1738£©¡£Èç¹ûÕæµÄÊÇÕâÑù£¬
+ÎÄ¼þ¿ÉÒÔ´Ó<A HREF="%B">%B</A>Î»ÖÃÕÒµ½¡£
+</P>
+
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_FTP_PUT_CREATED	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,10 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>ÎÄ¼þÉÏ´« PUT Ö¸ÁîÍê³É£ºÎÄ¼þÒÑ±»½¨Á¢</TITLE>
+</HEAD><BODY>
+<H1>²Ù×÷³É¹¦</H1>
+<H2>ÎÄ¼þÒÑ½¨Á¢</H2>
+<HR>
+<P>
+</P>
+
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_FTP_PUT_ERROR	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,25 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÎÄ¼þÉÏ´«Ê§°Ü</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÎÄ¼þÉÏ´«£¨FTP PUT£©²Ù×÷Ê§°Ü</H2>
+<HR>
+<P>
+µ±³¢ÊÔÉÏ´«£¨PUT£©µ½ÒÔÏÂÎ»ÖÃÊ±£º
+<A HREF="%U">%U</A>
+<P>
+±¾»º´æ·þÎñÆ÷·¢³öÒÔÏÂ FTP ÃüÁî£º
+<PRE><STRONG>
+        %f
+</STRONG></PRE>
+È»ºóÊÕµ½ÈçÏÂ»ØÓ¦£º
+<PRE><STRONG>
+        %F
+</STRONG></PRE>
+<P>
+<PRE>
+Çë¼ì²éÉÏ´«Â·¾¶£¬ÉÏ´«Î»ÖÃ¶ÁÐ´È¨ÏÞ£¬¿ÉÓÃ´ÅÅÌ¿Õ¼äºóÔÙ½øÐÐ³¢ÊÔ¡£
+</PRE>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_FTP_PUT_MODIFIED	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,10 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>ÎÄ¼þÉÏ´« PUT Ö¸ÁîÍê³É£ºÎÄ¼þÒÑ±»¸üÐÂ</TITLE>
+</HEAD><BODY>
+<H1>²Ù×÷³É¹¦</H1>
+<H2>ÎÄ¼þÒÑ¸üÐÂ</H2>
+<HR>
+<P>
+</P>
+
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_FTP_UNAVAILABLE	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,18 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó: ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê± FTP ·þÎñÆ÷¹ýÃ¦£º
+<A HREF="%U">%U</A>
+<P>
+±¾»º´æ·þÎñÆ÷·¢³öÒÔÏÂ FTP ÃüÁî£º
+<blockquote><strong><pre>%f</pre></strong></blockquote>
+È»ºóÊÕµ½ÈçÏÂ»ØÓ¦£º
+<blockquote><strong><pre>%F</pre></strong></blockquote>
+<blockquote><strong><pre>%g</pre></strong></blockquote>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_INVALID_REQ	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,43 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ½øÐÐÒÔÏÂÇëÇóÊ±£º
+<PRE>
+%R
+</PRE>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Invalid Request
+<BR>
+ÎÞÐ§µÄÇëÇó
+</STRONG>
+</UL>
+
+<P>
+Some aspect of the HTTP Request is invalid.  Possible problems:
+<BR>
+HTTP ÇëÇóµÄÄ³Ð©·½ÃæÊÇÎÞÐ§µÄ¡£¿ÉÄÜÊÇÏÂÁÐÎÊÌâ£º
+<UL>
+<LI>Missing or unknown request method
+<BR>È±ÉÙÇëÇó·½Ê½»òÎ´ÖªµÄÇëÇó·½Ê½
+<LI>Missing URL
+<BR>È±ÉÙÍøÖ·
+<LI>Missing HTTP Identifier (HTTP/1.0)
+<BR>È±ÉÙ HTTP ±êÊ¶£¨HTTP/1.0£©
+<LI>Request is too large
+<BR>ÇëÇóÃüÁî¹ý³¤
+<LI>Content-Length missing for POST or PUT requests
+<BR>POST »ò PUT ÇëÇóÈ±ÉÙÄÚÈÝ³¤¶È
+<LI>Illegal character in hostname; underscores are not allowed
+<BR>Ö÷»úÃû³ÆÖÐ°üº¬²»ºÏ·¨µÄ×Ö·û£»ÏÂ»®ÏßÊÇ²»ÔÊÐíµÄ¡£
+</UL>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>. 
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_INVALID_URL	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,37 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Invalid URL
+<BR>
+ÎÞÐ§µÄÍøÖ·
+</STRONG>
+</UL>
+
+<P>
+Some aspect of the requested URL is incorrect.  Possible problems:
+<BR>
+ÊäÈëÍøÖ·µÄÄ³Ð©µØ·½ÓÐÎó£¬¿ÉÄÜÊÇÒòÎª£º
+<UL>
+<LI>Missing or incorrect access protocol (should be `http://'' or similar)
+<BR>È±ÉÙ»ò²»ÕýÈ·µÄÍ¨Ñ¶Ð­Òé£¨Ó¦¸ÃÈç `http://''»òÀàËÆµÄ¿ªÍ·£©
+<LI>Missing hostname
+<BR>È±ÉÙÓûÁ¬½áµÄÖ÷»úÃû³Æ
+<LI>Illegal double-escape in the URL-Path
+<BR>ÍøÖ·Â·¾¶ÖÐÓÐ²»ºÏ·¨Ë«ÖØ×ªÒå·û
+<LI>Illegal character in hostname; underscores are not allowed
+<BR>Ö÷»úÃû³ÆÖÐ°üº¬²»ºÏ·¨µÄ×Ö·û£»ÏÂ»®ÏßÊÇ²»ÔÊÐíµÄ¡£
+</UL>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_LIFETIME_EXP	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,28 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Connection Lifetime Expired
+<BR>
+Á¬½Ó³¬Ê±
+</STRONG>
+</UL>
+
+<P>
+Squid has terminated the request because it has exceeded the maximum
+connection lifetime.
+<BR>
+»º´æ·þÎñÆ÷ÒÑÖÕÖ¹ÄúµÄÁ¬½ÓÇëÇó£¬ÒòÎªÒÑ¾­³¬¹ýÁË×î´óÁ¬½ÓµÈ´ýÊ±¼ä¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_NO_RELAY	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,27 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+No Wais Relay
+<BR>
+ÎÞ Wais ÖÐ¼Ì
+</STRONG>
+</UL>
+
+<P>
+There is no WAIS Relay host defined for this Cache!  Yell at the administrator.
+<BR>
+±¾»º´æ·þÎñÆ÷Ã»ÓÐÉè¶¨ WAIS ÖÐ¼ÌÖ÷»ú£¡ÈçÓÐÒÉÎÊÇëÓë»º´æ·þÎñÆ÷¹ÜÀíÔ±ÁªÏµ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_ONLY_IF_CACHED_MISS	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,34 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Valid document was not found in the cache and <code>only-if-cached</code>
+directive was specified.
+<BR>
+ÇëÇóµÄÎÄ¼þÔÚ±¾»º´æ·þÎñÆ÷ÉÏÎ´ÕÒµ½£¬¶øÄúÉè¶¨ÁË<code>only-if-cached</code>£¨Ö»¶ÁÈ¡»º´æ£©
+Ö¸Áî¡£
+</STRONG>
+</UL>
+
+<P>
+
+You have issued a request with a <code>only-if-cached</code> cache control
+directive. The document was not found in the cache, <em>or</em> it required
+revalidation prohibited by <code>only-if-cached</code> directive.
+<BR>
+ÄúËÍ³öÁËÒ»¸ö°üº¬ <code>only-if-cached</code> £¨Ö»¶ÁÈ¡»º´æ£©»º´æ¿ØÖÆÖ¸ÁîµÄÁ¬½áÇëÇó¡£
+¶øËùÒªµÄÎÄ¼þ²¢Î´´æÔÚÓÚ±¾»º´æ·þÎñÆ÷ÖÐ£¬<em>»òÕß</em>Õâ¸öÁ¬½áÇëÇóÐèÒªË¢ÐÂÎÄ¼þ¶ø
+<code>only-if-cached</code> Ö¸Áî½ûÖ¹ÕâÃ´×ö¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_READ_ERROR	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,32 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Read Error
+<BR>
+¶ÁÈ¡´íÎó
+</STRONG>
+</UL>
+
+<P>
+ÏµÍ³»ØÓ¦£º
+<PRE><I>    %E</I></PRE>
+
+<P>
+An error condition occurred while reading data from the network.  Please
+retry your request.
+<BR>
+ÕýÔÚÍ¨¹ýÍøÂç¶ÁÈ¡Êý¾ÝÊ±·¢ÉúÁË´íÎó£¬ÇëÖØÐÂ³¢ÊÔ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_READ_TIMEOUT	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,33 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Read Timeout
+<BR>
+¶ÁÈ¡³¬Ê±
+</STRONG>
+</UL>
+
+<P>
+ÏµÍ³»ØÓ¦£º
+<PRE><I>    %E</I></PRE>
+
+<P>
+A Timeout occurred while waiting to read data from the network.  The network
+or server may be down or congested.  Please retry your request.
+<BR>
+µ±Í¨¹ýÍøÂç¶ÁÈ¡Êý¾ÝÊ±£¬³¬¹ýÁËµÈ´ýÊ±ÏÞ¡£
+¿ÉÄÜÊÇÒòÎªÍøÂç¶ÂÈû»òÁ¬½ÓµÄÍøÂç·þÎñÆ÷ÒÑ¹Ø±Õ¡£ÇëÖØÐÂ³¢ÊÔ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_SHUTTING_DOWN	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,22 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<P>
+This cache is in the process of shutting down and can not
+service your request at this time.  Please retry your
+request again soon.
+<BR>
+±¾»º´æ·þÎñÆ÷ÕýÔÚ¹Ø±Õ£¬ÔÝÊ±ÎÞ·¨ÎªÄú·þÎñ¡£
+ÇëÉÔºîÔÙÊÔ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_SOCKET_FAILURE	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,33 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Socket Failure
+<BR>
+Socket ½¨Á¢Ê§°Ü
+</STRONG>
+</UL>
+
+<P>
+ÏµÍ³»ØÓ¦£º
+<PRE><I>    %E</I></PRE>
+
+<P>
+Squid is unable to create a TCP socket, presumably due to excessive load.
+Please retry your request.
+<BR>
+Squid £¨»º´æ·þÎñÆ÷£©ÎÞ·¨½¨Á¢ TCP socket£¨ÎÞ·¨ÏòÏµÍ³ÉêÇë½¨Á¢ÐÂµÄÍøÂçÁ¬½Ó£©£¬
+¿ÉÄÜÊÇÒòÎª¸ººÉ¹ýÖØ£¬ÇëÖØÐÂ³¢ÊÔ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_TOO_BIG	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,25 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+ÇëÇó»òÏìÓ¦Ì«´ó
+</STRONG>
+<P>
+Èç¹ûÄúÕýÔÚ½øÐÐ POST »ò PUT ÇëÇó£¬ÔòÄúÇëÇó´«ËÍµÄÄÚÈÝÌ«´ó£¨¿ÉÄÜÄú
+ÕýÔÚÉÏ´«ÎÄ¼þ£©¡£Èç¹ûÄúÕýÔÚ½øÐÐ GET ÇëÇó£¬ÔòÏìÓ¦µÄÄÚÈÝÌ«³¤¡£ÕâÐ©
+³¤¶ÈÏÞÖÆÓÉ²Ù×÷±¾»º´æ·þÎñÆ÷µÄ·þÎñÌá¹©ÕßÖÆ¶¨¡£Èç¹ûÄú¾õµÃÕâÊÇ´íÎóµÄ£¬
+ÇëÓëËûÃÇÖ±½ÓÁªÏµ¡£
+</UL>
+<P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_UNSUP_REQ	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,29 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Unsupported Request Method and Protocol
+<BR>
+²»Ö§³ÖµÄÇëÇó·½Ê½ºÍÐ­Òé
+</STRONG>
+</UL>
+
+<P>
+Squid does not support all request methods for all access protocols.
+For example, you can not POST a Gopher request.
+<BR>
+Squid £¨»º´æ·þÎñÆ÷£©²»ÄÜ¶ÔËùÓÐµÄ´æÈ¡Ð­ÒéÖ§³ÖËùÓÐµÄÇëÇó·½Ê½¡£
+±ÈÈçËµ£¬Äã²»ÄÜ¶Ô GOPHER ½øÐÐÒ»¸ö POST ÇëÇó¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_URN_RESOLVE	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,27 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄ URN ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>URN ÖÐµÄÒ»¸öÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂ URN Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Cannot Resolve URN
+<BR>
+ÎÞ·¨½âÎö URN
+</STRONG>
+</UL>
+
+<P>
+Hey, don't expect too much from URNs on %T :)
+<BR>
+±§Ç¸£¡Äú²»ÄÜ¶Ô %T ÉÏµÄ URNs ÆÚ´ýÌ«¶à :)
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_WRITE_ERROR	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,32 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Write Error
+<BR>
+Ð´Èë´íÎó
+</STRONG>
+</UL>
+
+<P>
+ÏµÍ³»ØÓ¦£º
+<PRE><I>    %E</I></PRE>
+
+<P>
+An error condition occurred while writing to the network.  Please retry your
+request.
+<BR>
+Í¨¹ýÍøÂçÐ´ÈëÊý¾ÝÊ±·¢ÉúÁË´íÎó£¬ÇëÖØÐÂ³¢ÊÔ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/ERR_ZERO_SIZE_OBJECT	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,27 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+Zero Sized Reply
+<BR>
+ÏìÓ¦ÄÚÈÝ³¤¶ÈÎªÁã
+</STRONG>
+</UL>
+
+<P>
+Squid did not receive any data for this request.
+<BR>
+±¾»º´æ·þÎñÆ÷´Ó±»Á¬½ÓµÄ·þÎñÆ÷ÉÏÃ»ÓÐÊÕµ½ÈÎºÎÊý¾Ý¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/README	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,11 @@
+This Simplify Chinese error pages is based on the 
+Erick C. Chang <erick@mail.thu.edu.tw> 's Traditional Chinese error pages.
+and suitable for SQUID 2.3 STABLE 1.
+
+I first translate these pages from Traditional Chinese to Simplify Chinese
+use a auto program. Then I check and compare with English pages to get more
+accurate result. It take me over one half of time than direct translation 
+from english. Because the technical terms are very different in two area. 
+And I also fixed some minor mistakes.
+
+Wang DaQing wdq@bigfoot.com
--- /dev/null	Wed Feb 14 00:44:00 2007
+++ squid/errors/Simplify_Chinese/generic	Wed Feb 14 00:44:17 2007
@@ -0,0 +1,30 @@
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁÐµÄ´íÎó£º
+<UL>
+<LI>
+<STRONG>
+@SHORT_DESCRIPTION@
+</STRONG>
+</UL>
+
+<P>
+ÏµÍ³»ØÓ¦ÒÔÏÂÐÅÏ¢£º
+<PRE><I>    %E</I></PRE>
+
+<P>
+Õâ±íÊ¾£º
+<PRE>
+    @LONG_DESCRIPTION@
+</PRE>
+</P>
+
Index: squid/src/HttpReply.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/HttpReply.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/HttpReply.c	20 Apr 2000 18:14:21 -0000	1.1.1.3.6.1
+++ squid/src/HttpReply.c	16 May 2000 18:53:52 -0000	1.1.1.3.6.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: HttpReply.c,v 1.1.1.3.6.1 2000/04/20 18:14:21 hno Exp $
+ * $Id: HttpReply.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:52 hno Exp $
  *
  * DEBUG: section 58    HTTP Reply (Response)
  * AUTHOR: Alex Rousskov
@@ -56,6 +56,7 @@
 static int httpReplyParseStep(HttpReply * rep, const char *parse_start, int atEnd);
 static int httpReplyParseError(HttpReply * rep);
 static int httpReplyIsolateStart(const char **parse_start, const char **blk_start, const char **blk_end);
+static time_t httpReplyHdrExpirationTime(const HttpReply * rep);
 
 
 /* module initialization */
@@ -292,6 +293,39 @@
     memFree(rep, MEM_HTTP_REPLY);
 }
 
+static time_t
+httpReplyHdrExpirationTime(const HttpReply * rep)
+{
+    /* The s-maxage and max-age directive takes priority over Expires */
+    if (rep->cache_control) {
+	if (rep->date >= 0) {
+	    if (rep->cache_control->s_maxage >= 0)
+		return rep->date + rep->cache_control->s_maxage;
+	    if (rep->cache_control->max_age >= 0)
+		return rep->date + rep->cache_control->max_age;
+	} else {
+	    /*
+	     * Conservatively handle the case when we have a max-age
+	     * header, but no Date for reference?
+	     */
+	    if (rep->cache_control->s_maxage >= 0)
+		return squid_curtime;
+	    if (rep->cache_control->max_age >= 0)
+		return squid_curtime;
+	}
+    }
+    if (httpHeaderHas(&rep->header, HDR_EXPIRES)) {
+	const time_t e = httpHeaderGetTime(&rep->header, HDR_EXPIRES);
+	/*
+	 * HTTP/1.0 says that robust implementations should consider
+	 * bad or malformed Expires header as equivalent to "expires
+	 * immediately."
+	 */
+	return e < 0 ? squid_curtime : e;
+    }
+    return -1;
+}
+
 /* sync this routine when you update HttpReply struct */
 static void
 httpReplyHdrCacheInit(HttpReply * rep)
@@ -301,7 +335,6 @@
     rep->content_length = httpHeaderGetInt(hdr, HDR_CONTENT_LENGTH);
     rep->date = httpHeaderGetTime(hdr, HDR_DATE);
     rep->last_modified = httpHeaderGetTime(hdr, HDR_LAST_MODIFIED);
-    rep->expires = httpHeaderGetTime(hdr, HDR_EXPIRES);
     str = httpHeaderGetStr(hdr, HDR_CONTENT_TYPE);
     if (str)
 	stringLimitInit(&rep->content_type, str, strcspn(str, ";\t "));
@@ -310,19 +343,8 @@
     rep->cache_control = httpHeaderGetCc(hdr);
     rep->content_range = httpHeaderGetContRange(hdr);
     rep->keep_alive = httpMsgIsPersistent(rep->sline.version, &rep->header);
-    /* final adjustments */
-    /* The s-maxage and max-age directive takes priority over Expires */
-    if (rep->cache_control && rep->cache_control->s_maxage >= 0)
-	rep->expires = squid_curtime + rep->cache_control->s_maxage;
-    else if (rep->cache_control && rep->cache_control->max_age >= 0)
-	rep->expires = squid_curtime + rep->cache_control->max_age;
-    else
-	/*
-	 * The HTTP/1.0 specs says that robust implementations should consider bad
-	 * or malformed Expires header as equivalent to "expires immediately."
-	 */
-    if (rep->expires < 0 && httpHeaderHas(hdr, HDR_EXPIRES))
-	rep->expires = squid_curtime;
+    /* be sure to set expires after date and cache-control */
+    rep->expires = httpReplyHdrExpirationTime(rep);
 }
 
 /* sync this routine when you update HttpReply struct */
Index: squid/src/MemBuf.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/MemBuf.c,v
retrieving revision 1.1.1.2.8.1
retrieving revision 1.1.1.2.8.1.2.1
diff -u -r1.1.1.2.8.1 -r1.1.1.2.8.1.2.1
--- squid/src/MemBuf.c	20 Apr 2000 18:14:21 -0000	1.1.1.2.8.1
+++ squid/src/MemBuf.c	16 May 2000 18:53:52 -0000	1.1.1.2.8.1.2.1
@@ -1,5 +1,5 @@
 /*
- * $Id: MemBuf.c,v 1.1.1.2.8.1 2000/04/20 18:14:21 hno Exp $
+ * $Id: MemBuf.c,v 1.1.1.2.8.1.2.1 2000/05/16 18:53:52 hno Exp $
  *
  * DEBUG: section 59    auto-growing Memory Buffer with printf
  * AUTHOR: Alex Rousskov
@@ -332,7 +332,7 @@
 
     /* copy and free old buffer if needed */
     if (old_mb.buf && old_mb.freefunc) {
-	memcpy(mb->buf, old_mb.buf, old_mb.size);
+	xmemcpy(mb->buf, old_mb.buf, old_mb.size);
 	(*old_mb.freefunc) (old_mb.buf);
     } else {
 	assert(!old_mb.buf && !old_mb.freefunc);
Index: squid/src/acl.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/acl.c,v
retrieving revision 1.1.1.3.10.5.2.3
retrieving revision 1.1.1.3.10.5.2.4
diff -u -r1.1.1.3.10.5.2.3 -r1.1.1.3.10.5.2.4
--- squid/src/acl.c	14 May 2000 23:22:19 -0000	1.1.1.3.10.5.2.3
+++ squid/src/acl.c	16 May 2000 18:53:52 -0000	1.1.1.3.10.5.2.4
@@ -1,6 +1,6 @@
 
 /*
- * $Id: acl.c,v 1.1.1.3.10.5.2.3 2000/05/14 23:22:19 hno Exp $
+ * $Id: acl.c,v 1.1.1.3.10.5.2.4 2000/05/16 18:53:52 hno Exp $
  *
  * DEBUG: section 28    Access Control
  * AUTHOR: Duane Wessels
@@ -2419,7 +2419,7 @@
     ipAddr.sin_port = 0;
     ipAddr.sin_addr = c;
     memset(&arpReq, '\0', sizeof(arpReq));
-    memcpy(&arpReq.arp_pa, &ipAddr, sizeof(struct sockaddr_in));
+    xmemcpy(&arpReq.arp_pa, &ipAddr, sizeof(struct sockaddr_in));
     /* Query ARP table */
     if (ioctl(HttpSockets[0], SIOCGARP, &arpReq) != -1) {
 	/* Skip non-ethernet interfaces */
@@ -2465,7 +2465,7 @@
 	ipAddr.sin_port = 0;
 	ipAddr.sin_addr = c;
 	memset(&arpReq, '\0', sizeof(arpReq));
-	memcpy(&arpReq.arp_pa, &ipAddr, sizeof(struct sockaddr_in));
+	xmemcpy(&arpReq.arp_pa, &ipAddr, sizeof(struct sockaddr_in));
 	strncpy(arpReq.arp_dev, ifr->ifr_name, sizeof(arpReq.arp_dev) - 1);
 	arpReq.arp_dev[sizeof(arpReq.arp_dev) - 1] = '\0';
 	/* Query ARP table */
@@ -2522,7 +2522,7 @@
     ipAddr.sin_port = 0;
     ipAddr.sin_addr = c;
     memset(&arpReq, '\0', sizeof(arpReq));
-    memcpy(&arpReq.arp_pa, &ipAddr, sizeof(struct sockaddr_in));
+    xmemcpy(&arpReq.arp_pa, &ipAddr, sizeof(struct sockaddr_in));
     /* Query ARP table */
     if (ioctl(HttpSockets[0], SIOCGARP, &arpReq) != -1) {
 	/*
Index: squid/src/asn.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/asn.c,v
retrieving revision 1.1.1.3.6.1.2.2
retrieving revision 1.1.1.3.6.1.2.3
diff -u -r1.1.1.3.6.1.2.2 -r1.1.1.3.6.1.2.3
--- squid/src/asn.c	14 May 2000 23:22:19 -0000	1.1.1.3.6.1.2.2
+++ squid/src/asn.c	16 May 2000 18:53:52 -0000	1.1.1.3.6.1.2.3
@@ -1,5 +1,5 @@
 /*
- * $Id: asn.c,v 1.1.1.3.6.1.2.2 2000/05/14 23:22:19 hno Exp $
+ * $Id: asn.c,v 1.1.1.3.6.1.2.3 2000/05/16 18:53:52 hno Exp $
  *
  * DEBUG: section 53    AS Number handling
  * AUTHOR: Duane Wessels, Kostas Anagnostakis
@@ -237,6 +237,12 @@
 	memFree(buf, MEM_4K_BUF);
 	asStateFree(asState);
 	return;
+    } else if (HTTP_OK != e->mem_obj->reply->sline.status) {
+	debug(53, 1) ("WARNING: AS %d whois request failed\n",
+	    asState->as_number);
+	memFree(buf, MEM_4K_BUF);
+	asStateFree(asState);
+	return;
     }
     s = buf;
     while (s - buf < size && *s != '\0') {
Index: squid/src/cache_cf.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/cache_cf.c,v
retrieving revision 1.1.1.3.10.4.2.3
retrieving revision 1.1.1.3.10.4.2.4
diff -u -r1.1.1.3.10.4.2.3 -r1.1.1.3.10.4.2.4
--- squid/src/cache_cf.c	14 May 2000 23:22:19 -0000	1.1.1.3.10.4.2.3
+++ squid/src/cache_cf.c	16 May 2000 18:53:52 -0000	1.1.1.3.10.4.2.4
@@ -1,6 +1,6 @@
 
 /*
- * $Id: cache_cf.c,v 1.1.1.3.10.4.2.3 2000/05/14 23:22:19 hno Exp $
+ * $Id: cache_cf.c,v 1.1.1.3.10.4.2.4 2000/05/16 18:53:52 hno Exp $
  *
  * DEBUG: section 3     Configuration File Parsing
  * AUTHOR: Harvest Derived
@@ -388,6 +388,31 @@
     }
     if (aclPurgeMethodInUse(Config.accessList.http))
 	Config2.onoff.enable_purge = 1;
+    if (NULL != Config.effectiveUser) {
+	struct passwd *pwd = getpwnam(Config.effectiveUser);
+	if (NULL == pwd)
+	    /*
+	     * Andres Kroonmaa <andre@online.ee>:
+	     * Some getpwnam() implementations (Solaris?) require
+	     * an available FD < 256 for opening a FILE* to the
+	     * passwd file.
+	     * DW:
+	     * This should be safe at startup, but might still fail
+	     * during reconfigure.
+	     */
+	    fatalf("getpwnam failed to find userid for effective user '%s'",
+		Config.effectiveUser,
+		xstrerror());
+	Config2.effectiveUserID = pwd->pw_uid;
+    }
+    if (NULL != Config.effectiveGroup) {
+	struct group *grp = getgrnam(Config.effectiveGroup);
+	if (NULL == grp)
+	    fatalf("getgrnam failed to find groupid for effective group '%s'",
+		Config.effectiveGroup,
+		xstrerror());
+	Config2.effectiveGroupID = grp->gr_gid;
+    }
 }
 
 /* Parse a time specification from the config file.  Store the
@@ -1086,11 +1111,14 @@
     p->tcp_up = PEER_TCP_MAGIC_COUNT;
     p->test_fd = -1;
 #if USE_CARP
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> ((sizeof(u_long)*8)-(n))))
     if (p->carp.load_factor) {
 	/* calculate this peers hash for use in CARP */
 	p->carp.hash = 0;
 	for (token = p->host; *token != 0; token++)
-	    p->carp.hash += (p->carp.hash << 19) + *token;
+	    p->carp.hash += ROTATE_LEFT(p->carp.hash, 19) + *token;
+	p->carp.hash += p->carp.hash * 0x62531965;
+	p->carp.hash += ROTATE_LEFT(p->carp.hash, 21);
     }
 #endif
     /* This must preceed peerDigestCreate */
Index: squid/src/cache_manager.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/cache_manager.c,v
retrieving revision 1.1.1.2.8.1
retrieving revision 1.1.1.2.8.1.2.1
diff -u -r1.1.1.2.8.1 -r1.1.1.2.8.1.2.1
--- squid/src/cache_manager.c	20 Apr 2000 18:14:21 -0000	1.1.1.2.8.1
+++ squid/src/cache_manager.c	16 May 2000 18:53:52 -0000	1.1.1.2.8.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: cache_manager.c,v 1.1.1.2.8.1 2000/04/20 18:14:21 hno Exp $
+ * $Id: cache_manager.c,v 1.1.1.2.8.1.2.1 2000/05/16 18:53:52 hno Exp $
  *
  * DEBUG: section 16    Cache Manager Objects
  * AUTHOR: Duane Wessels
@@ -64,6 +64,7 @@
 static const char *cachemgrActionProtection(const action_table * at);
 static OBJH cachemgrShutdown;
 static OBJH cachemgrMenu;
+static OBJH cachemgrOfflineToggle;
 
 action_table *ActionTable = NULL;
 
@@ -280,6 +281,16 @@
     shut_down(0);
 }
 
+static void
+cachemgrOfflineToggle(StoreEntry * sentry)
+{
+    Config.onoff.offline = !Config.onoff.offline;
+    debug(16, 0) ("offline_mode now %s.\n",
+	Config.onoff.offline ? "ON" : "OFF");
+    storeAppendPrintf(sentry, "offline_mode is now %s\n",
+	Config.onoff.offline ? "ON" : "OFF");
+}
+
 static const char *
 cachemgrActionProtection(const action_table * at)
 {
@@ -330,4 +341,7 @@
     cachemgrRegister("shutdown",
 	"Shut Down the Squid Process",
 	cachemgrShutdown, 1, 1);
+    cachemgrRegister("offline_toggle",
+	"Toggle offline_mode setting",
+	cachemgrOfflineToggle, 1, 1);
 }
Index: squid/src/carp.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/carp.c,v
retrieving revision 1.1.1.1.8.1
retrieving revision 1.1.1.1.8.1.2.1
diff -u -r1.1.1.1.8.1 -r1.1.1.1.8.1.2.1
--- squid/src/carp.c	20 Apr 2000 18:14:21 -0000	1.1.1.1.8.1
+++ squid/src/carp.c	16 May 2000 18:53:52 -0000	1.1.1.1.8.1.2.1
@@ -1,5 +1,5 @@
 /*
- * $Id: carp.c,v 1.1.1.1.8.1 2000/04/20 18:14:21 hno Exp $
+ * $Id: carp.c,v 1.1.1.1.8.1.2.1 2000/05/16 18:53:52 hno Exp $
  *
  * DEBUG: section 39    Cache Array Routing Protocol
  * AUTHOR: Eric Stern
@@ -84,6 +84,7 @@
 peer *
 carpSelectParent(request_t * request)
 {
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> ((size(u_long)*8)-(n))))
     const char *c;
     peer *p = NULL;
     peer *tp;
@@ -94,7 +95,7 @@
     /* calculate url hash */
     debug(39, 2) ("carpSelectParent: CARP Calculating hash for %s\n", url);
     for (c = url; *c != 0; c++)
-	url_hash += (url_hash << 19) + *c;
+	url_hash += ROTATE_LEFT(url_hash, 19) + *c;
     /* select peer */
     for (tp = Config.peers; tp; tp = tp->next) {
 	if (0.0 == tp->carp.load_factor)
@@ -104,7 +105,7 @@
 	assert(tp->type == PEER_PARENT);
 	combined_hash = (url_hash ^ tp->carp.hash);
 	combined_hash += combined_hash * 0x62531965;
-	combined_hash = combined_hash << 21;
+	combined_hash = ROTATE_LEFT(combined_hash, 21);
 	combined_hash = combined_hash * tp->carp.load_multiplier;
 	debug(39, 3) ("carpSelectParent: %s combined_hash %d\n",
 	    tp->host, combined_hash);
Index: squid/src/cf.data.pre
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/cf.data.pre,v
retrieving revision 1.1.1.3.10.6.2.5
retrieving revision 1.1.1.3.10.6.2.6
diff -u -r1.1.1.3.10.6.2.5 -r1.1.1.3.10.6.2.6
--- squid/src/cf.data.pre	14 May 2000 23:22:19 -0000	1.1.1.3.10.6.2.5
+++ squid/src/cf.data.pre	16 May 2000 18:53:52 -0000	1.1.1.3.10.6.2.6
@@ -1,6 +1,6 @@
 
 #
-# $Id: cf.data.pre,v 1.1.1.3.10.6.2.5 2000/05/14 23:22:19 hno Exp $
+# $Id: cf.data.pre,v 1.1.1.3.10.6.2.6 2000/05/16 18:53:52 hno Exp $
 #
 #
 # SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
@@ -547,6 +547,16 @@
 	See replacement_policy below for a discussion of this policy.
 DOC_END
 
+NAME: minimum_object_size
+COMMENT: (bytes)
+TYPE: b_size_t
+DEFAULT: 0 KB
+LOC: Config.Store.minObjectSize
+DOC_START
+	Objects smaller than this size will NOT be saved on disk.  The
+	value is specified in kilobytes, and the default is 0 KB, which
+	means there is no minimum.
+DOC_END
 
 NAME: ipcache_size
 COMMENT: (number of entries)
@@ -903,6 +913,15 @@
 	can cut off long filenames when browsing ftp sites.
 DOC_END
 
+NAME: ftp_passive
+TYPE: onoff
+DEFAULT: on
+LOC: Config.Ftp.passive
+DOC_START
+	If your firewall does not allow Squid to use passive
+	connections, then turn off this option.
+DOC_END
+
 NAME: cache_dns_program
 TYPE: string
 IFDEF: USE_DNSSERVERS
@@ -991,6 +1010,8 @@
 IFDEF: USE_ICMP
 DOC_START
 	Specify the location of the executable for the pinger process.
+	This is only useful if you configured Squid (during compilation)
+	with the '--enable-icmp' option.
 DOC_END
 
 
@@ -2648,6 +2669,17 @@
 	disables WCCP.
 DOC_END
 
+NAME: wccp_version
+TYPE: int
+LOC: Config.Wccp.version
+DEFAULT: 4
+IFDEF: USE_WCCP
+DOC_START
+	According to some users, Cisco IOS 11.2 only supports WCCP
+	version 3.  If you're using that version of IOS, change
+	this value to 3.
+DOC_END
+
 NAME: wccp_incoming_address
 TYPE: address
 LOC: Config.Wccp.incoming
Index: squid/src/client.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/Attic/client.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/client.c	20 Apr 2000 18:14:22 -0000	1.1.1.3.6.1
+++ squid/src/client.c	16 May 2000 18:53:52 -0000	1.1.1.3.6.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: client.c,v 1.1.1.3.6.1 2000/04/20 18:14:22 hno Exp $
+ * $Id: client.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:52 hno Exp $
  *
  * DEBUG: section 0     WWW Client
  * AUTHOR: Harvest Derived
@@ -253,6 +253,7 @@
     }
     loops = ping ? pcount : 1;
     for (i = 0; loops == 0 || i < loops; i++) {
+	int fsize = 0;
 	/* Connect to the server */
 	if ((conn = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
 	    perror("client: socket");
@@ -297,6 +298,7 @@
 	/* Read the data */
 
 	while ((len = read(conn, buf, sizeof(buf))) > 0) {
+	    fsize += len;
 	    if (to_stdout)
 		fwrite(buf, len, 1, stdout);
 	}
@@ -314,10 +316,11 @@
 	    elapsed_msec = tvSubMsec(tv1, tv2);
 	    t2s = tv2.tv_sec;
 	    tmp = localtime(&t2s);
-	    fprintf(stderr, "%d-%02d-%02d %02d:%02d:%02d [%d]: %ld.%03ld secs\n",
+	    fprintf(stderr, "%d-%02d-%02d %02d:%02d:%02d [%d]: %ld.%03ld secs, %f KB/s\n",
 		tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
 		tmp->tm_hour, tmp->tm_min, tmp->tm_sec, i + 1,
-		elapsed_msec / 1000, elapsed_msec % 1000);
+		elapsed_msec / 1000, elapsed_msec % 1000,
+		elapsed_msec ? (double) fsize / elapsed_msec : -1.0);
 	    if (i == 0 || elapsed_msec < ping_min)
 		ping_min = elapsed_msec;
 	    if (i == 0 || elapsed_msec > ping_max)
Index: squid/src/client_db.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/client_db.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/client_db.c	20 Apr 2000 18:14:22 -0000	1.1.1.3.6.1
+++ squid/src/client_db.c	16 May 2000 18:53:52 -0000	1.1.1.3.6.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: client_db.c,v 1.1.1.3.6.1 2000/04/20 18:14:22 hno Exp $
+ * $Id: client_db.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:52 hno Exp $
  *
  * DEBUG: section 0     Client Database
  * AUTHOR: Duane Wessels
@@ -232,7 +232,6 @@
 {
     ClientInfo *c = NULL;
     char *key;
-
     if (current) {
 	key = inet_ntoa(*current);
 	hash_first(client_table);
@@ -271,8 +270,7 @@
     if (c == NULL) {
 	debug(49, 5) ("snmp_meshCtblFn: not found.\n");
 	*ErrP = SNMP_ERR_NOSUCHNAME;
-	snmp_var_free(Answer);
-	return (NULL);
+	return NULL;
     }
     switch (Var->name[LEN_SQ_NET + 2]) {
     case MESH_CTBL_ADDR:
Index: squid/src/client_side.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/client_side.c,v
retrieving revision 1.1.1.3.10.7.2.5
retrieving revision 1.1.1.3.10.7.2.6
diff -u -r1.1.1.3.10.7.2.5 -r1.1.1.3.10.7.2.6
--- squid/src/client_side.c	14 May 2000 23:22:19 -0000	1.1.1.3.10.7.2.5
+++ squid/src/client_side.c	16 May 2000 18:53:52 -0000	1.1.1.3.10.7.2.6
@@ -1,6 +1,6 @@
 
 /*
- * $Id: client_side.c,v 1.1.1.3.10.7.2.5 2000/05/14 23:22:19 hno Exp $
+ * $Id: client_side.c,v 1.1.1.3.10.7.2.6 2000/05/16 18:53:52 hno Exp $
  *
  * DEBUG: section 33    Client-side Routines
  * AUTHOR: Duane Wessels
@@ -107,7 +107,7 @@
 static int clientCachable(clientHttpRequest * http);
 static int clientHierarchical(clientHttpRequest * http);
 static int clientCheckContentLength(request_t * r);
-static int httpAcceptDefer(void);
+static DEFER httpAcceptDefer;
 static log_type clientProcessRequest2(clientHttpRequest * http);
 static int clientReplyBodyTooLarge(int clen);
 static int clientRequestBodyTooLarge(int clen);
@@ -291,6 +291,9 @@
 	new_request->my_addr = old_request->my_addr;
 	new_request->my_port = old_request->my_port;
 	new_request->flags.redirected = 1;
+	if (old_request->user_ident[0])
+	    xstrncpy(new_request->user_ident, old_request->user_ident,
+		USER_IDENT_SZ);
 	if (old_request->body) {
 	    new_request->body = xmalloc(old_request->body_sz);
 	    xmemcpy(new_request->body, old_request->body, old_request->body_sz);
@@ -566,7 +569,7 @@
     StoreEntry *entry;
     ErrorState *err = NULL;
     HttpReply *r;
-    debug(33, 1) ("Config2.onoff.enable_purge = %d\n", Config2.onoff.enable_purge);
+    debug(33, 3) ("Config2.onoff.enable_purge = %d\n", Config2.onoff.enable_purge);
     if (!Config2.onoff.enable_purge) {
 	http->log_type = LOG_TCP_DENIED;
 	err = errorCon(ERR_ACCESS_DENIED, HTTP_FORBIDDEN);
@@ -1940,9 +1943,10 @@
 	 * the objects age, so a Age: 0 header does not add any useful
 	 * information to the reply in any case.
 	 */
-	if (http->entry->timestamp < squid_curtime)
-	    httpHeaderPutInt(hdr, HDR_AGE,
-		squid_curtime - http->entry->timestamp);
+	if (http->entry->timestamp > -1)
+	    if (http->entry->timestamp < squid_curtime)
+		httpHeaderPutInt(hdr, HDR_AGE,
+		    squid_curtime - http->entry->timestamp);
     }
     /* Append X-Cache */
     httpHeaderPutStrf(hdr, HDR_X_CACHE, "%s from %s",
@@ -2135,12 +2139,18 @@
 	    http->log_type = LOG_TCP_IMS_HIT;
 	    clientSendMoreData(data, buf, size);
 	} else {
+	    time_t timestamp = e->timestamp;
 	    MemBuf mb = httpPacked304Reply(e->mem_obj->reply);
 	    http->log_type = LOG_TCP_IMS_HIT;
 	    memFree(buf, MEM_CLIENT_SOCK_BUF);
 	    storeUnregister(http->sc, e, http);
 	    storeUnlockObject(e);
 	    e = clientCreateStoreEntry(http, http->request->method, null_request_flags);
+	    /*
+	     * Copy timestamp from the original entry so the 304
+	     * reply has a meaningful Age: header.
+	     */
+	    e->timestamp = timestamp;
 	    http->entry = e;
 	    httpReplyParse(e->mem_obj->reply, mb.buf, mb.size);
 	    storeAppend(e, mb.buf, mb.size);
@@ -2890,8 +2900,11 @@
      * or IMS request.
      */
     if (http->entry) {
-	if (EBIT_TEST(http->entry->flags, ENTRY_SPECIAL))
+	if (EBIT_TEST(http->entry->flags, ENTRY_SPECIAL)) {
 	    debug(33, 0) ("clientProcessMiss: miss on a special object (%s).\n", url);
+	    debug(33, 0) ("\tlog_type = %s\n", log_tags[http->log_type]);
+	    storeEntryDump(http->entry, 1);
+	}
 	storeUnregister(http->sc, http->entry, http);
 	storeUnlockObject(http->entry);
 	http->entry = NULL;
@@ -3476,7 +3489,7 @@
 }
 
 static int
-httpAcceptDefer(void)
+httpAcceptDefer(int fdunused, void *dataunused)
 {
     static time_t last_warn = 0;
     if (fdNFree() >= RESERVED_FD)
@@ -3502,7 +3515,7 @@
     static aclCheck_t identChecklist;
 #endif
     commSetSelect(sock, COMM_SELECT_READ, httpAccept, NULL, 0);
-    while (max-- && !httpAcceptDefer()) {
+    while (max-- && !httpAcceptDefer(sock, NULL)) {
 	memset(&peer, '\0', sizeof(struct sockaddr_in));
 	memset(&me, '\0', sizeof(struct sockaddr_in));
 	if ((fd = comm_accept(sock, &peer, &me)) < 0) {
@@ -3684,7 +3697,11 @@
 	    continue;
 	comm_listen(fd);
 	commSetSelect(fd, COMM_SELECT_READ, httpAccept, NULL, 0);
-	/*commSetDefer(fd, httpAcceptDefer, NULL); */
+	/*
+	 * We need to set a defer handler here so that we don't
+	 * peg the CPU with select() when we hit the FD limit.
+	 */
+	commSetDefer(fd, httpAcceptDefer, NULL);
 	debug(1, 1) ("Accepting HTTP connections at %s, port %d, FD %d.\n",
 	    inet_ntoa(s->s.sin_addr),
 	    (int) ntohs(s->s.sin_port),
Index: squid/src/delay_pools.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/delay_pools.c,v
retrieving revision 1.1.1.3.10.3.2.2
retrieving revision 1.1.1.3.10.3.2.3
diff -u -r1.1.1.3.10.3.2.2 -r1.1.1.3.10.3.2.3
--- squid/src/delay_pools.c	14 May 2000 23:22:19 -0000	1.1.1.3.10.3.2.2
+++ squid/src/delay_pools.c	16 May 2000 18:53:53 -0000	1.1.1.3.10.3.2.3
@@ -1,6 +1,6 @@
 
 /*
- * $Id: delay_pools.c,v 1.1.1.3.10.3.2.2 2000/05/14 23:22:19 hno Exp $
+ * $Id: delay_pools.c,v 1.1.1.3.10.3.2.3 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 77    Delay Pools
  * AUTHOR: David Luyer <luyer@ucs.uwa.edu.au>
@@ -39,12 +39,14 @@
 #include "squid.h"
 
 struct _class1DelayPool {
+    int class;
     int aggregate;
 };
 
 #define IND_MAP_SZ 256
 
 struct _class2DelayPool {
+    int class;
     int aggregate;
     /* OK: -1 is terminator.  individual[255] is always host 255. */
     /* 255 entries + 1 terminator byte */
@@ -58,6 +60,7 @@
 #define C3_IND_SZ (NET_MAP_SZ*IND_MAP_SZ)
 
 struct _class3DelayPool {
+    int class;
     int aggregate;
     /* OK: -1 is terminator.  network[255] is always host 255. */
     /* 255 entries + 1 terminator byte */
@@ -89,6 +92,7 @@
 static fd_set delay_no_delay;
 static time_t delay_pools_last_update = 0;
 static hash_table *delay_id_ptr_hash = NULL;
+static long memory_used = 0;
 
 static OBJH delayPoolStats;
 
@@ -139,7 +143,8 @@
 {
     if (!pools)
 	return;
-    delay_data = xcalloc(pools, sizeof(delayPool));
+    delay_data = xcalloc(pools, sizeof(*delay_data));
+    memory_used += sizeof(*delay_data);
     eventAdd("delayPoolsUpdate", delayPoolsUpdate, NULL, 1.0, 1);
     delay_id_ptr_hash = hash_create(delayIdPtrHashCmp, 256, delayIdPtrHash);
 }
@@ -151,12 +156,14 @@
     delay_id *id = (delay_id *) h->key;
     *id = 0;
     xfree(h);
+    memory_used -= sizeof(*h);
 }
 
 void
 delayFreeDelayData(void)
 {
     safe_free(delay_data);
+    memory_used -= sizeof(*delay_data);
     if (!delay_id_ptr_hash)
 	return;
     hashFreeItems(delay_id_ptr_hash, delayIdZero);
@@ -173,6 +180,7 @@
     if (*loc == 0)
 	return;
     lnk = xmalloc(sizeof(hash_link));
+    memory_used += sizeof(hash_link);
     lnk->key = (char *) loc;
     hash_join(delay_id_ptr_hash, lnk);
 }
@@ -194,6 +202,7 @@
     assert(lnk);
     hash_remove_link(delay_id_ptr_hash, lnk);
     xxfree(lnk);
+    memory_used -= sizeof(*lnk);
 }
 
 void
@@ -202,12 +211,18 @@
     switch (class) {
     case 1:
 	delay_data[pool].class1 = xmalloc(sizeof(class1DelayPool));
+	delay_data[pool].class1->class = 1;
+	memory_used += sizeof(class1DelayPool);
 	break;
     case 2:
 	delay_data[pool].class2 = xmalloc(sizeof(class2DelayPool));
+	delay_data[pool].class1->class = 2;
+	memory_used += sizeof(class2DelayPool);
 	break;
     case 3:
 	delay_data[pool].class3 = xmalloc(sizeof(class3DelayPool));
+	delay_data[pool].class1->class = 3;
+	memory_used += sizeof(class3DelayPool);
 	break;
     default:
 	assert(0);
@@ -248,6 +263,20 @@
 delayFreeDelayPool(unsigned short pool)
 {
     /* this is a union - and all free() cares about is the pointer location */
+    switch (delay_data[pool].class1->class) {
+    case 1:
+	memory_used -= sizeof(class1DelayPool);
+	break;
+    case 2:
+	memory_used -= sizeof(class2DelayPool);
+	break;
+    case 3:
+	memory_used -= sizeof(class3DelayPool);
+	break;
+    default:
+	debug(77, 1) ("delayFreeDelayPool: bad class %d\n",
+	    delay_data[pool].class1->class);
+    }
     safe_free(delay_data[pool].class1);
 }
 
@@ -290,6 +319,10 @@
     ch.my_addr = r->my_addr;
     ch.my_port = r->my_port;
     ch.request = r;
+    if (r->client_addr.s_addr == INADDR_BROADCAST) {
+	debug(77, 2) ("delayClient: WARNING: Called with 'allones' address, ignoring\n");
+	return delayId(0, 0);
+    }
     for (pool = 0; pool < Config.Delay.pools; pool++) {
 	if (aclCheckFast(Config.Delay.access[pool], &ch))
 	    break;
@@ -437,6 +470,7 @@
     int individual_restore_bytes, network_restore_bytes;
     int mpos;
     unsigned int i, j;
+    char individual_255_used;
     /* delaySetSpec may be pointer to partial structure so MUST pass by
      * reference.
      */
@@ -452,21 +486,14 @@
 	return;
     individual_restore_bytes *= incr;
     network_restore_bytes *= incr;
-    if (class3->network_255_used)
-	i = 255;
-    else
-	i = 0;
-    for (;;) {
+    for (i = 0; i < ((class3->network_255_used) ? NET_MAP_SZ : NET_MAP_SZ - 1); ++i) {
 	assert(i < NET_MAP_SZ);
 	if (i != 255 && class3->network_map[i] == 255)
 	    return;
 	if (individual_restore_bytes != -incr) {
 	    mpos = i << 8;
-	    if (class3->individual_255_used[i / 8] & (1 << (i % 8)))
-		j = 255;
-	    else
-		j = 0;
-	    for (;;) {
+	    individual_255_used = class3->individual_255_used[i / 8] & (1 << (i % 8));
+	    for (j = 0; j < ((individual_255_used) ? IND_MAP_SZ : IND_MAP_SZ - 1); ++j, ++mpos) {
 		assert(i < NET_MAP_SZ);
 		assert(j < IND_MAP_SZ);
 		if (j != 255 && class3->individual_map[i][j] == 255)
@@ -476,11 +503,6 @@
 		    (class3->individual[mpos] += individual_restore_bytes) >
 		    rates->individual.max_bytes)
 		    class3->individual[mpos] = rates->individual.max_bytes;
-		mpos++;
-		if (j == (IND_MAP_SZ - 1))
-		    mpos -= 256;
-		if (++j == (IND_MAP_SZ - 1))
-		    break;
 	    }
 	}
 	if (network_restore_bytes != -incr &&
@@ -814,6 +836,7 @@
 	    assert(0);
 	}
     }
+    storeAppendPrintf(sentry, "Memory Used: %d bytes\n", (int) memory_used);
 }
 
 #endif
Index: squid/src/dns.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/dns.c,v
retrieving revision 1.1.1.3.10.2
retrieving revision 1.1.1.3.10.2.2.1
diff -u -r1.1.1.3.10.2 -r1.1.1.3.10.2.2.1
--- squid/src/dns.c	20 Apr 2000 18:14:22 -0000	1.1.1.3.10.2
+++ squid/src/dns.c	16 May 2000 18:53:53 -0000	1.1.1.3.10.2.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: dns.c,v 1.1.1.3.10.2 2000/04/20 18:14:22 hno Exp $
+ * $Id: dns.c,v 1.1.1.3.10.2.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 34    Dnsserver interface
  * AUTHOR: Harvest Derived
@@ -106,10 +106,10 @@
 snmp_netDnsFn(variable_list * Var, snint * ErrP)
 {
     variable_list *Answer = NULL;
-    debug(49, 5) ("snmp_netDnsFn: Processing request:\n", Var->name[LEN_SQ_NET +
-	    1]);
+    debug(49, 5) ("snmp_netDnsFn: Processing request:\n", Var->name[LEN_SQ_NET + 1]);
     snmpDebugOid(5, Var->name, Var->name_length);
     *ErrP = SNMP_ERR_NOERROR;
+#if USE_DNSSERVERS
     switch (Var->name[LEN_SQ_NET + 1]) {
     case DNS_REQ:
 	Answer = snmp_var_new_integer(Var->name, Var->name_length,
@@ -130,6 +130,11 @@
 	*ErrP = SNMP_ERR_NOSUCHNAME;
 	break;
     }
+#else
+    Answer = snmp_var_new_integer(Var->name, Var->name_length,
+	0,
+	SMI_COUNTER32);
+#endif
     return Answer;
 }
 #endif /*SQUID_SNMP */
Index: squid/src/dns_internal.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/dns_internal.c,v
retrieving revision 1.1.1.1.10.4.2.3
retrieving revision 1.1.1.1.10.4.2.4
diff -u -r1.1.1.1.10.4.2.3 -r1.1.1.1.10.4.2.4
--- squid/src/dns_internal.c	14 May 2000 23:22:19 -0000	1.1.1.1.10.4.2.3
+++ squid/src/dns_internal.c	16 May 2000 18:53:53 -0000	1.1.1.1.10.4.2.4
@@ -1,6 +1,6 @@
 
 /*
- * $Id: dns_internal.c,v 1.1.1.1.10.4.2.3 2000/05/14 23:22:19 hno Exp $
+ * $Id: dns_internal.c,v 1.1.1.1.10.4.2.4 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 78    DNS lookups; interacts with lib/rfc1035.c
  * AUTHOR: Duane Wessels
@@ -87,6 +87,11 @@
 static void
 idnsAddNameserver(const char *buf)
 {
+    struct in_addr A;
+    if (!safe_inet_addr(buf, &A)) {
+	debug(78, 0) ("WARNING: rejecting '%s' as a name server, because it is not a numeric IP address\n", buf);
+	return;
+    }
     if (nns == nns_alloc) {
 	int oldalloc = nns_alloc;
 	ns *oldptr = nameservers;
@@ -103,7 +108,7 @@
     assert(nns < nns_alloc);
     nameservers[nns].S.sin_family = AF_INET;
     nameservers[nns].S.sin_port = htons(DOMAIN_PORT);
-    nameservers[nns].S.sin_addr.s_addr = inet_addr(buf);
+    nameservers[nns].S.sin_addr.s_addr = A.s_addr;
     debug(78, 3) ("idnsAddNameserver: Added nameserver #%d: %s\n",
 	nns, inet_ntoa(nameservers[nns].S.sin_addr));
     nns++;
@@ -142,13 +147,13 @@
 	t = strtok(buf, w_space);
 	if (NULL == t)
 	    continue;
-	if (strcasecmp(t, "nameserver") == 0) {
-	    t = strtok(NULL, w_space);
-	    if (t == NULL)
-		continue;;
-	    debug(78, 1) ("Adding nameserver %s from %s\n", t, _PATH_RESOLV_CONF);
-	    idnsAddNameserver(t);
-	}
+	if (strcasecmp(t, "nameserver"))
+	    continue;
+	t = strtok(NULL, w_space);
+	if (t == NULL)
+	    continue;
+	debug(78, 1) ("Adding nameserver %s from %s\n", t, _PATH_RESOLV_CONF);
+	idnsAddNameserver(t);
     }
     fclose(fp);
 }
Index: squid/src/fqdncache.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/fqdncache.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/fqdncache.c	20 Apr 2000 18:14:22 -0000	1.1.1.3.6.1
+++ squid/src/fqdncache.c	16 May 2000 18:53:53 -0000	1.1.1.3.6.1.2.1
@@ -1,7 +1,7 @@
 
 
 /*
- * $Id: fqdncache.c,v 1.1.1.3.6.1 2000/04/20 18:14:22 hno Exp $
+ * $Id: fqdncache.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 35    FQDN Cache
  * AUTHOR: Harvest Derived
@@ -652,20 +652,10 @@
     hash_join(fqdn_table, (hash_link *) f);
 }
 
-/* call during reconfigure phase to clear out all the
- * pending and dispatched reqeusts that got lost */
+/* Recalculate FQDN cache size upon reconfigure */
 void
 fqdncache_restart(void)
 {
-    fqdncache_entry *this;
-    assert(fqdn_table);
-    hash_first(fqdn_table);
-    while ((this = (fqdncache_entry *) hash_next(fqdn_table))) {
-	if (this->status == FQDN_CACHED)
-	    continue;
-	if (this->status == FQDN_NEGATIVE_CACHED)
-	    continue;
-    }
     fqdncache_high = (long) (((float) Config.fqdncache.size *
 	    (float) FQDN_HIGH_WATER) / (float) 100);
     fqdncache_low = (long) (((float) Config.fqdncache.size *
@@ -681,8 +671,7 @@
 snmp_netFqdnFn(variable_list * Var, snint * ErrP)
 {
     variable_list *Answer = NULL;
-    debug(49, 5) ("snmp_netFqdnFn: Processing request:\n", Var->name[LEN_SQ_NET +
-	    1]);
+    debug(49, 5) ("snmp_netFqdnFn: Processing request:\n", Var->name[LEN_SQ_NET + 1]);
     snmpDebugOid(5, Var->name, Var->name_length);
     *ErrP = SNMP_ERR_NOERROR;
     switch (Var->name[LEN_SQ_NET + 1]) {
Index: squid/src/ftp.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/ftp.c,v
retrieving revision 1.1.1.3.10.3
retrieving revision 1.1.1.3.10.3.2.1
diff -u -r1.1.1.3.10.3 -r1.1.1.3.10.3.2.1
--- squid/src/ftp.c	20 Apr 2000 18:14:22 -0000	1.1.1.3.10.3
+++ squid/src/ftp.c	16 May 2000 18:53:53 -0000	1.1.1.3.10.3.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: ftp.c,v 1.1.1.3.10.3 2000/04/20 18:14:22 hno Exp $
+ * $Id: ftp.c,v 1.1.1.3.10.3.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 9     File Transfer Protocol (FTP)
  * AUTHOR: Harvest Derived
@@ -422,11 +422,10 @@
     }
     storeAppendPrintf(e, "<HR>\n");
     storeAppendPrintf(e, "<ADDRESS>\n");
-    storeAppendPrintf(e, "Generated %s by %s (<a href=\"http://squid.nlanr.net/Squid/\">%s</a>)\n",
+    storeAppendPrintf(e, "Generated %s by %s (%s)\n",
 	mkrfc1123(squid_curtime),
 	getMyHostname(),
-	full_appname_string,
-	version_string);
+	full_appname_string);
     storeAppendPrintf(e, "</ADDRESS></BODY></HTML>\n");
     storeBufferFlush(e);
 }
@@ -1052,7 +1051,12 @@
     ftpState->data.fd = -1;
     ftpState->size = -1;
     ftpState->mdtm = -1;
-    ftpState->flags.pasv_supported = !fwd->flags.ftp_pasv_failed;
+    if (!Config.Ftp.passive)
+	ftpState->flags.rest_supported = 0;
+    else if (fwd->flags.ftp_pasv_failed)
+	ftpState->flags.pasv_supported = 0;
+    else
+	ftpState->flags.pasv_supported = 1;
     ftpState->flags.rest_supported = 1;
     ftpState->fwd = fwd;
     comm_add_close_handler(fd, ftpStateFree, ftpState);
@@ -1819,7 +1823,7 @@
 	return -1;
     }
     ftpState->data.fd = fd;
-    ftpState->data.port = comm_local_port(fd);;
+    ftpState->data.port = comm_local_port(fd);
     ftpState->data.host = NULL;
     return fd;
 }
@@ -1869,10 +1873,10 @@
 ftpAcceptDataConnection(int fd, void *data)
 {
     FtpStateData *ftpState = data;
-    struct sockaddr_in peer, me;
+    struct sockaddr_in my_peer, me;
     debug(9, 3) ("ftpAcceptDataConnection\n");
 
-    fd = comm_accept(fd, &peer, &me);
+    fd = comm_accept(fd, &my_peer, &me);
     if (fd < 0) {
 	debug(9, 1) ("ftpHandleDataAccept: comm_accept(%d): %s", fd, xstrerror());
 	/* XXX Need to set error message */
@@ -1883,8 +1887,8 @@
     comm_close(ftpState->data.fd);
     debug(9, 3) ("ftpAcceptDataConnection: Connected data socket on FD %d\n", fd);
     ftpState->data.fd = fd;
-    ftpState->data.port = ntohs(peer.sin_port);
-    ftpState->data.host = xstrdup(inet_ntoa(peer.sin_addr));
+    ftpState->data.port = ntohs(my_peer.sin_port);
+    ftpState->data.host = xstrdup(inet_ntoa(my_peer.sin_addr));
     commSetTimeout(ftpState->ctrl.fd, -1, NULL, NULL);
     commSetTimeout(ftpState->data.fd, Config.Timeout.read, ftpTimeout,
 	ftpState);
@@ -2341,8 +2345,8 @@
 	err = errorCon(ERR_FTP_FAILURE, HTTP_BAD_GATEWAY);
     err->xerrno = errno;
     err->request = requestLink(ftpState->request);
-    err->ftp.server_msg = ftpState->cwd_message;
-    ftpState->cwd_message = NULL;
+    err->ftp.server_msg = ftpState->ctrl.message;
+    ftpState->ctrl.message = NULL;
     if (ftpState->old_request)
 	command = ftpState->old_request;
     else
Index: squid/src/gopher.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/gopher.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/gopher.c	20 Apr 2000 18:14:22 -0000	1.1.1.3.6.1
+++ squid/src/gopher.c	16 May 2000 18:53:53 -0000	1.1.1.3.6.1.2.1
@@ -1,7 +1,7 @@
 
 
 /*
- * $Id: gopher.c,v 1.1.1.3.6.1 2000/04/20 18:14:22 hno Exp $
+ * $Id: gopher.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 10    Gopher
  * AUTHOR: Harvest Derived
@@ -284,7 +284,7 @@
     char *host = NULL;
     char *port = NULL;
     char *escaped_selector = NULL;
-    char *icon_url = NULL;
+    const char *icon_url = NULL;
     char gtype;
     StoreEntry *entry = NULL;
 
Index: squid/src/http.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/http.c,v
retrieving revision 1.1.1.3.10.4.2.1
retrieving revision 1.1.1.3.10.4.2.2
diff -u -r1.1.1.3.10.4.2.1 -r1.1.1.3.10.4.2.2
--- squid/src/http.c	14 May 2000 23:22:19 -0000	1.1.1.3.10.4.2.1
+++ squid/src/http.c	16 May 2000 18:53:53 -0000	1.1.1.3.10.4.2.2
@@ -1,6 +1,6 @@
 
 /*
- * $Id: http.c,v 1.1.1.3.10.4.2.1 2000/05/14 23:22:19 hno Exp $
+ * $Id: http.c,v 1.1.1.3.10.4.2.2 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 11    Hypertext Transfer Protocol (HTTP)
  * AUTHOR: Harvest Derived
@@ -329,7 +329,7 @@
     assert(httpState->reply_hdr_state == 0);
     hdr_len = httpState->reply_hdr_size;
     room = 8191 - hdr_len;
-    memcpy(httpState->reply_hdr + hdr_len, buf, room < size ? room : size);
+    xmemcpy(httpState->reply_hdr + hdr_len, buf, room < size ? room : size);
     hdr_len += room < size ? room : size;
     httpState->reply_hdr[hdr_len] = '\0';
     httpState->reply_hdr_size = hdr_len;
@@ -342,17 +342,9 @@
     t = httpState->reply_hdr + hdr_len;
     /* headers can be incomplete only if object still arriving */
     if (!httpState->eof) {
-	size_t k = headersEnd(httpState->reply_hdr, hdr_len);
-	if (0 == k) {
-	    if (hdr_len >= 8191 || room == 0) {
-		debug(11, 3) ("httpProcessReplyHeader: Too large HTTP header: '%s'\n", httpState->reply_hdr);
-		httpState->reply_hdr_state += 2;
-		reply->sline.status = HTTP_INVALID_HEADER;
-		return;
-	    } else {
-		return;		/* headers not complete */
-	    }
-	}
+	size_t k = headersEnd(httpState->reply_hdr, 8192);
+	if (0 == k)
+	    return;		/* headers not complete */
 	t = httpState->reply_hdr + k;
     }
     *t = '\0';
Index: squid/src/icmp.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/icmp.c,v
retrieving revision 1.1.1.2.12.2
retrieving revision 1.1.1.2.12.2.2.1
diff -u -r1.1.1.2.12.2 -r1.1.1.2.12.2.2.1
--- squid/src/icmp.c	20 Apr 2000 18:14:22 -0000	1.1.1.2.12.2
+++ squid/src/icmp.c	16 May 2000 18:53:53 -0000	1.1.1.2.12.2.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: icmp.c,v 1.1.1.2.12.2 2000/04/20 18:14:22 hno Exp $
+ * $Id: icmp.c,v 1.1.1.2.12.2.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 37    ICMP Routines
  * AUTHOR: Duane Wessels
@@ -56,6 +56,7 @@
     static pingerEchoData pecho;
     if (payload && len == 0)
 	len = strlen(payload);
+    assert(len <= PINGER_PAYLOAD_SZ);
     pecho.to = to;
     pecho.opcode = (unsigned char) opcode;
     pecho.psize = len;
@@ -112,10 +113,12 @@
     int x;
     if (icmp_sock < 0)
 	return;
+    debug(37, 2) ("icmpSend: to %s, opcode %d, len %d\n",
+	inet_ntoa(pkt->to), (int) pkt->opcode, pkt->psize);
     x = send(icmp_sock, (char *) pkt, len, 0);
     if (x < 0) {
 	debug(50, 1) ("icmpSend: send: %s\n", xstrerror());
-	if (errno == ECONNREFUSED) {
+	if (errno == ECONNREFUSED || errno == EPIPE) {
 	    icmpClose();
 	    return;
 	}
Index: squid/src/icp_v2.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/icp_v2.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/icp_v2.c	20 Apr 2000 18:14:22 -0000	1.1.1.3.6.1
+++ squid/src/icp_v2.c	16 May 2000 18:53:53 -0000	1.1.1.3.6.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: icp_v2.c,v 1.1.1.3.6.1 2000/04/20 18:14:22 hno Exp $
+ * $Id: icp_v2.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 12    Internet Cache Protocol
  * AUTHOR: Duane Wessels
@@ -223,6 +223,7 @@
 	    icpUdpSend(fd, &from, reply, LOG_UDP_INVALID, 0);
 	    break;
 	}
+	memset(&checklist, '\0', sizeof(checklist));
 	checklist.src_addr = from.sin_addr;
 	checklist.my_addr = no_addr;
 	checklist.request = icp_request;
Index: squid/src/icp_v3.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/icp_v3.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/icp_v3.c	20 Apr 2000 18:14:22 -0000	1.1.1.3.6.1
+++ squid/src/icp_v3.c	16 May 2000 18:53:53 -0000	1.1.1.3.6.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: icp_v3.c,v 1.1.1.3.6.1 2000/04/20 18:14:22 hno Exp $
+ * $Id: icp_v3.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 12    Internet Cache Protocol
  * AUTHOR: Duane Wessels
@@ -77,6 +77,7 @@
 	    icpUdpSend(fd, &from, reply, LOG_UDP_INVALID, 0);
 	    break;
 	}
+	memset(&checklist, '\0', sizeof(checklist));
 	checklist.src_addr = from.sin_addr;
 	checklist.my_addr = no_addr;
 	checklist.request = icp_request;
Index: squid/src/ident.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/ident.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/ident.c	20 Apr 2000 18:14:22 -0000	1.1.1.3.6.1
+++ squid/src/ident.c	16 May 2000 18:53:53 -0000	1.1.1.3.6.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: ident.c,v 1.1.1.3.6.1 2000/04/20 18:14:22 hno Exp $
+ * $Id: ident.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 30    Ident (RFC 931)
  * AUTHOR: Duane Wessels
@@ -51,7 +51,7 @@
     struct _IdentStateData *next;
     int fd;			/* IDENT fd */
     struct sockaddr_in me;
-    struct sockaddr_in peer;
+    struct sockaddr_in my_peer;
     IdentClient *clients;
 } IdentStateData;
 
@@ -94,7 +94,7 @@
 {
     IdentStateData *state = data;
     debug(30, 3) ("identTimeout: FD %d, %s\n", fd,
-	inet_ntoa(state->peer.sin_addr));
+	inet_ntoa(state->my_peer.sin_addr));
     comm_close(fd);
 }
 
@@ -123,7 +123,7 @@
     }
     memBufDefInit(&mb);
     memBufPrintf(&mb, "%d, %d\r\n",
-	ntohs(state->peer.sin_port),
+	ntohs(state->my_peer.sin_port),
 	ntohs(state->me.sin_port));
     comm_write_mbuf(fd, mb, NULL, state);
     commSetSelect(fd, COMM_SELECT_READ, identReadReply, state, 0);
@@ -185,7 +185,7 @@
  * start a TCP connection to the peer host on port 113
  */
 void
-identStart(struct sockaddr_in *me, struct sockaddr_in *peer, IDCB * callback, void *data)
+identStart(struct sockaddr_in *me, struct sockaddr_in *my_peer, IDCB * callback, void *data)
 {
     IdentStateData *state;
     int fd;
@@ -196,8 +196,8 @@
 	inet_ntoa(me->sin_addr),
 	ntohs(me->sin_port));
     snprintf(key2, IDENT_KEY_SZ, "%s:%d",
-	inet_ntoa(peer->sin_addr),
-	ntohs(peer->sin_port));
+	inet_ntoa(my_peer->sin_addr),
+	ntohs(my_peer->sin_port));
     snprintf(key, IDENT_KEY_SZ, "%s,%s", key1, key2);
     if ((state = hash_lookup(ident_hash, key)) != NULL) {
 	identClientAdd(state, callback, data);
@@ -219,7 +219,7 @@
     state->key = xstrdup(key);
     state->fd = fd;
     state->me = *me;
-    state->peer = *peer;
+    state->my_peer = *my_peer;
     identClientAdd(state, callback, data);
     hash_join(ident_hash, (hash_link *) state);
     comm_add_close_handler(fd,
@@ -227,7 +227,7 @@
 	state);
     commSetTimeout(fd, Config.Timeout.ident, identTimeout, state);
     commConnectStart(fd,
-	inet_ntoa(state->peer.sin_addr),
+	inet_ntoa(state->my_peer.sin_addr),
 	IDENT_PORT,
 	identConnectDone,
 	state);
Index: squid/src/ipcache.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/ipcache.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/ipcache.c	20 Apr 2000 18:14:22 -0000	1.1.1.3.6.1
+++ squid/src/ipcache.c	16 May 2000 18:53:53 -0000	1.1.1.3.6.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: ipcache.c,v 1.1.1.3.6.1 2000/04/20 18:14:22 hno Exp $
+ * $Id: ipcache.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 14    IP Cache
  * AUTHOR: Harvest Derived
@@ -730,7 +730,7 @@
 	if (++ia->cur == ia->count)
 	    ia->cur = 0;
 	if (!ia->bad_mask[ia->cur])
-	    break;;
+	    break;
     }
     if (k == ia->count) {
 	/* All bad, reset to All good */
@@ -837,21 +837,10 @@
     hash_join(ip_table, (hash_link *) i);
 }
 
-/* call during reconfigure phase to clear out all the 
- * pending and dispatched reqeusts that got lost */
+/* Recalculate IP cache size upon reconfigure */
 void
 ipcache_restart(void)
 {
-    ipcache_entry *this;
-    assert(ip_table != NULL);
-    hash_first(ip_table);
-    while ((this = (ipcache_entry *) hash_next(ip_table))) {
-	if (this->status == IP_CACHED)
-	    continue;
-	if (this->status == IP_NEGATIVE_CACHED)
-	    continue;
-    }
-    /* recalculate these while we're at it */
     ipcache_high = (long) (((float) Config.ipcache.size *
 	    (float) Config.ipcache.high) / (float) 100);
     ipcache_low = (long) (((float) Config.ipcache.size *
Index: squid/src/mib.txt
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/mib.txt,v
retrieving revision 1.1.1.3
retrieving revision 1.1.1.3.6.1
diff -u -r1.1.1.3 -r1.1.1.3.6.1
--- squid/src/mib.txt	26 Jan 2000 03:25:01 -0000	1.1.1.3
+++ squid/src/mib.txt	16 May 2000 18:53:53 -0000	1.1.1.3.6.1
@@ -1,6 +1,8 @@
-SQUID-MIB  DEFINITIONS ::= BEGIN
+SQUID-MIB  { iso org(3) dod(6) internet(1) private(4) enterprises(1) 3495 }
+
+DEFINITIONS ::= BEGIN
 --
--- $Id: mib.txt,v 1.1.1.3 2000/01/26 03:25:01 hno Exp $
+-- $Id: mib.txt,v 1.1.1.3.6.1 2000/05/16 18:53:53 hno Exp $
 --
 
 IMPORTS
@@ -17,28 +19,19 @@
     LAST-UPDATED "9809220000Z"
     ORGANIZATION "National Laboratory for Applied Network Research"
     CONTACT-INFO
-            "        Glenn Chisholm
-
-             Postal: National Centre for Atmospheric Research (NCAR)
-		     Room 36, SCD
-		     PO Box 3000
-                     Boulder, Colorado 80307  
-                     US
-
-                Tel: +1 303 497 1289
-                Fax: +1 303 497 1818
+            "        Squid Developers
 
-             E-mail: glenn@ircache.net"
+             E-mail: squid@squid-cache.org"
     DESCRIPTION
-		"Squid MIB defined for the management of the squid
-		proxy server. See http://squid.nlanr.net/."
-	    
+		"Squid MIB defined for the management of the Squid
+		proxy server. See http://www.squid-cache.org/."
+	
     REVISION      "9809220000Z"
     DESCRIPTION
 		"Move to SMIv2. Prepare to split into proxy/squid."
     REVISION      "9901010000Z"
     DESCRIPTION
-		"Added objects and corrected asn.1 syntax and 
+		"Added objects and corrected asn.1 syntax and
 		descriptions."
     ::= { nlanr 1 }
 
@@ -49,7 +42,7 @@
 	cacheSystem	OBJECT IDENTIFIER ::= { squid 1 }
 	cacheConfig  	OBJECT IDENTIFIER ::= { squid 2 }
 	cachePerf	OBJECT IDENTIFIER ::= { squid 3 }
-	cacheNetwork	OBJECT IDENTIFIER ::= { squid 4 } 
+	cacheNetwork	OBJECT IDENTIFIER ::= { squid 4 }
 	cacheMesh	OBJECT IDENTIFIER ::= { squid 5 }
 
 
@@ -62,7 +55,7 @@
 		MAX-ACCESS read-only
 		STATUS current
 		DESCRIPTION
-			" Storage Mem size in KB"
+			" Storage Mem size in KB "
 	::= { cacheSystem 1 }
 
 	cacheSysStorage OBJECT-TYPE
@@ -70,15 +63,15 @@
 		MAX-ACCESS read-only
                 STATUS current
                 DESCRIPTION
-                        " Storage Swap size in KB"
+                        " Storage Swap size in KB "
         ::= { cacheSystem 2 }
 
 	cacheUptime  OBJECT-TYPE
-                SYNTAX Timeticks
+                SYNTAX TimeTicks
                 MAX-ACCESS read-only
                 STATUS current
                 DESCRIPTION
-                        " The Uptime of the cache in timeticks"
+                        " The Uptime of the cache in timeticks "
 	::= { cacheSystem 3 }
 
 --
@@ -117,9 +110,9 @@
 		STATUS current
 		DESCRIPTION
 			" Logging Facility. An informational string
-			  indicating logging info like debug level, 
-			  local/syslog/remote logging etc " 
-	::= { cacheConfig 4 } 
+			  indicating logging info like debug level,
+			  local/syslog/remote logging etc "
+	::= { cacheConfig 4 }
 
 -- cacheStorageConfig group
 
@@ -130,7 +123,7 @@
                 MAX-ACCESS read-only
                 STATUS current
                 DESCRIPTION
-                        " The value of the cache_mem parameter in MB"
+                        " The value of the cache_mem parameter in MB "
         ::= { cacheStorageConfig 1 }
 
         cacheSwapMaxSize OBJECT-TYPE
@@ -138,7 +131,7 @@
                 MAX-ACCESS read-only
                 STATUS current
                 DESCRIPTION
-                        " The total of the cache_dir space allocated in MB"
+                        " The total of the cache_dir space allocated in MB "
         ::= { cacheStorageConfig 2 }
 
         cacheSwapHighWM OBJECT-TYPE
@@ -146,7 +139,7 @@
                 MAX-ACCESS read-only
                 STATUS current
                 DESCRIPTION
-                        " Cache Swap High Water Mark"
+                        " Cache Swap High Water Mark "
         ::= { cacheStorageConfig 3 }
 
         cacheSwapLowWM OBJECT-TYPE
@@ -154,7 +147,7 @@
                 MAX-ACCESS read-only
                 STATUS current
                 DESCRIPTION
-                        " Cache Swap Low Water Mark"
+                        " Cache Swap Low Water Mark "
         ::= { cacheStorageConfig 4 }
 
 -- end of  cacheStorageConfig group
@@ -163,11 +156,11 @@
 -- performance group { squid 3 }
 --
 
-	cacheSysPerf    OBJECT IDENTIFIER ::= { cachePerf 1 } 
+	cacheSysPerf    OBJECT IDENTIFIER ::= { cachePerf 1 }
         cacheProtoStats OBJECT IDENTIFIER ::= { cachePerf 2 }
 
 	--
-	-- cacheSysPerf 
+	-- cacheSysPerf
 	--
 
         cacheSysPageFaults OBJECT-TYPE
@@ -175,15 +168,15 @@
                 MAX-ACCESS read-only
                 STATUS current
                 DESCRIPTION
-                        " Page faults with physical i/o"
+                        " Page faults with physical i/o "
         ::= { cacheSysPerf 1 }
 
         cacheSysNumReads OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS not-accessible
-                STATUS current 
+                STATUS current
                 DESCRIPTION
-                        " HTTP I/O number of reads" 
+                        " HTTP I/O number of reads "
        	::= { cacheSysPerf 2 }
 
 	cacheMemUsage OBJECT-TYPE
@@ -191,15 +184,15 @@
 		MAX-ACCESS read-only
 		STATUS 	current
 		DESCRIPTION
-			" Total memory accounted for KB"
-	::= { cacheSysPerf 3 } 
+			" Total memory accounted for KB "
+	::= { cacheSysPerf 3 }
 
 	cacheCpuTime OBJECT-TYPE
 		SYNTAX Integer32
 		MAX-ACCESS read-only
                 STATUS  current
                 DESCRIPTION
-                        " Amount of cpu seconds consumed"
+                        " Amount of cpu seconds consumed "
 	::= { cacheSysPerf 4 }
 
 	cacheCpuUsage OBJECT-TYPE
@@ -207,7 +200,7 @@
                 MAX-ACCESS read-only
                 STATUS  current
                 DESCRIPTION
-                        " The percentage use of the CPU"
+                        " The percentage use of the CPU "
         ::= { cacheSysPerf 5 }
 
 	cacheMaxResSize OBJECT-TYPE
@@ -215,15 +208,15 @@
                 MAX-ACCESS read-only
                 STATUS  current
                 DESCRIPTION
-                        " Maximum Resident Size in KB"
+                        " Maximum Resident Size in KB "
         ::= { cacheSysPerf 6 }
 
 	cacheNumObjCount OBJECT-TYPE
-                SYNTAX Counter32                 
+                SYNTAX Counter32
 		MAX-ACCESS read-only
                 STATUS  current
                 DESCRIPTION
-                        " Number of objects stored by the cache"
+                        " Number of objects stored by the cache "
         ::= { cacheSysPerf 7 }
 
         cacheCurrentLRUExpiration OBJECT-TYPE
@@ -231,7 +224,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-			" Storage LRU Expiration Age"
+			" Storage LRU Expiration Age "
         ::= { cacheSysPerf 8 }
 
         cacheCurrentUnlinkRequests OBJECT-TYPE
@@ -239,23 +232,23 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-			" Requests given to unlinkd"
+			" Requests given to unlinkd "
         ::= { cacheSysPerf 9 }
 
-        cacheCurrentUnusedFileDescrCount OBJECT-TYPE
+        cacheCurrentUnusedFDescrCnt OBJECT-TYPE
                 SYNTAX Gauge32
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-			" Available number of file descriptors"
+			" Available number of file descriptors "
         ::= { cacheSysPerf 10 }
 
-	cacheCurrentReservedFileDescrCount  OBJECT-TYPE
+	cacheCurrentResFileDescrCnt  OBJECT-TYPE
                 SYNTAX Gauge32
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-			" Reserved number of file descriptors"
+			" Reserved number of file descriptors "
         ::= { cacheSysPerf 11 }
 
 	--
@@ -268,12 +261,12 @@
 	cacheProtoAggregateStats OBJECT IDENTIFIER ::= { cacheProtoStats 1 }
 
 
-	cacheClientHttpRequests  OBJECT-TYPE
+	cacheProtoClientHttpRequests  OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-			" Number of HTTP requests received"
+			" Number of HTTP requests received "
         ::= { cacheProtoAggregateStats 1 }
 
         cacheHttpHits OBJECT-TYPE
@@ -281,7 +274,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-			" Number of HTTP Hits"
+			" Number of HTTP Hits "
         ::= { cacheProtoAggregateStats 2 }
 
         cacheHttpErrors OBJECT-TYPE
@@ -289,7 +282,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-			" Number of HTTP Errors"
+			" Number of HTTP Errors "
         ::= { cacheProtoAggregateStats 3 }
 
         cacheHttpInKb OBJECT-TYPE
@@ -297,7 +290,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-			" Number of HTTP KB's recieved"
+			" Number of HTTP KB's recieved "
         ::= { cacheProtoAggregateStats 4 }
 
         cacheHttpOutKb OBJECT-TYPE
@@ -305,7 +298,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " Number of HTTP KB's transmitted"
+                        " Number of HTTP KB's transmitted "
         ::= { cacheProtoAggregateStats 5 }
 
 	cacheIcpPktsSent OBJECT-TYPE
@@ -313,7 +306,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " Number of ICP messages sent"
+                        " Number of ICP messages sent "
         ::= { cacheProtoAggregateStats 6 }
 
 	cacheIcpPktsRecv OBJECT-TYPE
@@ -321,7 +314,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " Number of ICP messages received"
+                        " Number of ICP messages received "
         ::= { cacheProtoAggregateStats 7 }
 
         cacheIcpKbSent OBJECT-TYPE
@@ -329,7 +322,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " Number of ICP KB's transmitted"
+                        " Number of ICP KB's transmitted "
         ::= { cacheProtoAggregateStats 8 }
 
         cacheIcpKbRecv OBJECT-TYPE
@@ -337,7 +330,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " Number of ICP KB's recieved"
+                        " Number of ICP KB's recieved "
         ::= { cacheProtoAggregateStats 9 }
 
         cacheServerRequests OBJECT-TYPE
@@ -345,7 +338,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " All requests from the client for the cache server"
+                        " All requests from the client for the cache server "
         ::= { cacheProtoAggregateStats 10 }
 
         cacheServerErrors OBJECT-TYPE
@@ -353,7 +346,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " All errors for the cache server from client requests"
+                        " All errors for the cache server from client requests "
         ::= { cacheProtoAggregateStats 11 }
 
 	cacheServerInKb OBJECT-TYPE
@@ -361,7 +354,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " KB's of traffic recieved from servers"
+                        " KB's of traffic recieved from servers "
         ::= { cacheProtoAggregateStats 12 }
 
         cacheServerOutKb OBJECT-TYPE
@@ -369,7 +362,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " KB's of traffic sent to servers"
+                        " KB's of traffic sent to servers "
         ::= { cacheProtoAggregateStats 13 }
 
 	cacheCurrentSwapSize OBJECT-TYPE
@@ -377,7 +370,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " Storage Swap size"
+                        " Storage Swap size "
         ::= { cacheProtoAggregateStats 14 }
 
        cacheClients OBJECT-TYPE
@@ -385,12 +378,12 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " Number of clients accessing cache"
+                        " Number of clients accessing cache "
         ::= { cacheProtoAggregateStats 15 }
 
 	--
 	-- cacheProtoMedianSvcStats group
-	-- 
+	--
 	-- This is a table, indexed by the interval we want statistics for
 	-- Example: cacheDnsSvcTime.10 gives 10-min medians for Dns Service Time.
 
@@ -398,14 +391,16 @@
                 SYNTAX SEQUENCE OF CacheMedianSvcEntry
                 MAX-ACCESS read-only
                 STATUS current
+                DESCRIPTION
+                        " CacheMedianSvcTable "
 	::= { cacheProtoStats 2 }
 
         cacheMedianSvcEntry OBJECT-TYPE
                 SYNTAX CacheMedianSvcEntry
                 MAX-ACCESS not-accessible
                 STATUS current
-                DESCRIPTION 
-                        " An entry in cacheMedianSvcTable " 
+                DESCRIPTION
+                        " An entry in cacheMedianSvcTable "
                 INDEX   { cacheMedianTime }
         ::= { cacheMedianSvcTable 1 }
 
@@ -435,63 +430,63 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " HTTP all service time" 
-        ::= { cacheMedianSvcEntry 2 } 
+                        " HTTP all service time "
+        ::= { cacheMedianSvcEntry 2 }
 
 	cacheHttpMissSvcTime OBJECT-TYPE
                 SYNTAX Integer32
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " HTTP miss service time"
-        ::= { cacheMedianSvcEntry 3 } 
+                        " HTTP miss service time "
+        ::= { cacheMedianSvcEntry 3 }
 
 	cacheHttpNmSvcTime OBJECT-TYPE
                 SYNTAX Integer32
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " HTTP near miss service time"
-        ::= { cacheMedianSvcEntry 4 } 
+                        " HTTP near miss service time "
+        ::= { cacheMedianSvcEntry 4 }
 
 	cacheHttpHitSvcTime OBJECT-TYPE
                 SYNTAX Integer32
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " HTTP hit service time"
-        ::= { cacheMedianSvcEntry 5 } 
+                        " HTTP hit service time "
+        ::= { cacheMedianSvcEntry 5 }
 
 	cacheIcpQuerySvcTime OBJECT-TYPE
                 SYNTAX Integer32
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " ICP query service time"
-        ::= { cacheMedianSvcEntry 6 } 
+                        " ICP query service time "
+        ::= { cacheMedianSvcEntry 6 }
 
 	cacheIcpReplySvcTime OBJECT-TYPE
                 SYNTAX Integer32
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " ICP reply service time"
-        ::= { cacheMedianSvcEntry 7 } 
+                        " ICP reply service time "
+        ::= { cacheMedianSvcEntry 7 }
 
 	cacheDnsSvcTime OBJECT-TYPE
                 SYNTAX Integer32
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " DNS service time"
-        ::= { cacheMedianSvcEntry 8 } 
+                        " DNS service time "
+        ::= { cacheMedianSvcEntry 8 }
 
         cacheRequestHitRatio OBJECT-TYPE
                 SYNTAX Integer32
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " Request Hit Ratios"
+                        " Request Hit Ratios "
         ::= { cacheMedianSvcEntry 9 }
 
         cacheRequestByteRatio OBJECT-TYPE
@@ -499,7 +494,7 @@
                 MAX-ACCESS read-only
                 STATUS current
 		DESCRIPTION
-                        " Byte Hit Ratios"
+                        " Byte Hit Ratios "
         ::= { cacheMedianSvcEntry 10 }
 
 --
@@ -510,128 +505,164 @@
 --
 
 	cacheIpCache	OBJECT IDENTIFIER ::= { cacheNetwork 1 }
-	cacheFqdnCache	OBJECT IDENTIFIER ::= { cacheNetwork 2 } 
+	cacheFqdnCache	OBJECT IDENTIFIER ::= { cacheNetwork 2 }
 	cacheDns	OBJECT IDENTIFIER ::= { cacheNetwork 3 }
 
 --
 -- cacheIpCache
 --
 
-	cacheEntries OBJECT-TYPE
+	cacheIpEntries OBJECT-TYPE
                 SYNTAX Gauge32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheIpCache 1 } 
+		DESCRIPTION
+			" IP Cache Entries "
+        ::= { cacheIpCache 1 }
 
-	cacheRequests OBJECT-TYPE
+	cacheIpRequests OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheIpCache 2 } 
+		DESCRIPTION
+			" Number of IP Cache requests "
+        ::= { cacheIpCache 2 }
 
-	cacheHits OBJECT-TYPE
+	cacheIpHits OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheIpCache 3 } 
+		DESCRIPTION
+			" Number of IP Cache hits "
+        ::= { cacheIpCache 3 }
 
-	cachePendingHits OBJECT-TYPE
+	cacheIpPendingHits OBJECT-TYPE
                 SYNTAX Gauge32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheIpCache 4 } 
+		DESCRIPTION
+			" Number of IP Cache pending hits "
+        ::= { cacheIpCache 4 }
 
-	cacheNegativeHits OBJECT-TYPE
+	cacheIpNegativeHits OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheIpCache 5 } 
+		DESCRIPTION
+			" Number of IP Cache negative hits "
+        ::= { cacheIpCache 5 }
 
-	cacheMisses OBJECT-TYPE
+	cacheIpMisses OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheIpCache 6 } 
+		DESCRIPTION
+			" Number of IP Cache misses "
+        ::= { cacheIpCache 6 }
 
 	cacheBlockingGetHostByName OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheIpCache 7 } 
+		DESCRIPTION
+			" Number of blocking gethostbyname requests "
+        ::= { cacheIpCache 7 }
 
-	cacheAttemptReleaseLockedEntries OBJECT-TYPE
+	cacheAttemptReleaseLckEntries OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheIpCache 8 } 
+		DESCRIPTION
+			" Number of attempts to release locked IP Cache entries "
+        ::= { cacheIpCache 8 }
 
 --
 -- cacheFqdnCache
 --
 
-	cacheEntries OBJECT-TYPE
+	cacheFqdnEntries OBJECT-TYPE
                 SYNTAX Gauge32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheFqdnCache 1 } 
+		DESCRIPTION
+			" FQDN Cache entries "
+        ::= { cacheFqdnCache 1 }
 
-	cacheRequests OBJECT-TYPE
+	cacheFqdnRequests OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheFqdnCache 2 } 
+		DESCRIPTION
+			" Number of FQDN Cache requests "
+        ::= { cacheFqdnCache 2 }
 
-	cacheHits OBJECT-TYPE
+	cacheFqdnHits OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheFqdnCache 3 } 
+		DESCRIPTION
+			" Number of FQDN Cache hits "
+        ::= { cacheFqdnCache 3 }
 
-	cachePendingHits OBJECT-TYPE
+	cacheFqdnPendingHits OBJECT-TYPE
                 SYNTAX Gauge32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheFqdnCache 4 } 
+		DESCRIPTION
+			" Number of FQDN Cache pending hits "
+        ::= { cacheFqdnCache 4 }
 
-	cacheNegativeHits OBJECT-TYPE
+	cacheFqdnNegativeHits OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheFqdnCache 5 } 
+		DESCRIPTION
+			" Number of FQDN Cache negative hits "
+        ::= { cacheFqdnCache 5 }
 
-	cacheMisses OBJECT-TYPE
+	cacheFqdnMisses OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheFqdnCache 6 } 
+		DESCRIPTION
+			" Number of FQDN Cache misses "
+        ::= { cacheFqdnCache 6 }
 
 	cacheBlockingGetHostByAddr OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheFqdnCache 7 } 
+		DESCRIPTION
+			" Number of blocking gethostbyaddr requests "
+        ::= { cacheFqdnCache 7 }
 
 --
---	cacheDNS 
+--	cacheDNS
 --
 
 	cacheDnsRequests OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheDns 1 } 
+		DESCRIPTION
+			" Number of external dnsserver requests "
+        ::= { cacheDns 1 }
 
 	cacheDnsReplies OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheDns 2 } 
+		DESCRIPTION
+			" Number of external dnsserver replies "
+        ::= { cacheDns 2 }
 
 	cacheDnsNumberServers OBJECT-TYPE
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-        ::= { cacheDns 3 } 
+		DESCRIPTION
+			" Number of external dnsserver processes "
+        ::= { cacheDns 3 }
 	
 --
 -- cacheMesh group
@@ -650,8 +681,8 @@
 		SYNTAX CachePeerEntry
 		MAX-ACCESS not-accessible
 		STATUS current
-		DESCRIPTION 
-			" An entry in cachePeerTable " 
+		DESCRIPTION
+			" An entry in cachePeerTable "
 		INDEX 	{ cachePeerAddr }
 	::= { cachePeerTable 1 }
 
@@ -675,16 +706,16 @@
 		SYNTAX DisplayString
 		MAX-ACCESS read-only
 		STATUS current
-		DESCRIPTION 
+		DESCRIPTION
 			  " The FQDN name or internal alias for the
-		      	    peer cache"
-	::= { cachePeerEntry 1 } 
+		      	    peer cache "
+	::= { cachePeerEntry 1 }
 
 	cachePeerAddr OBJECT-TYPE
                 SYNTAX IpAddress
                 MAX-ACCESS read-only
                 STATUS current
-		DESCRIPTION 
+		DESCRIPTION
 			" The IP Address of the peer cache "
         ::= { cachePeerEntry 2 }
 
@@ -692,7 +723,7 @@
                 SYNTAX Integer32
                 MAX-ACCESS read-only
                 STATUS current
-		DESCRIPTION 
+		DESCRIPTION
 			" The port the peer listens for HTTP requests "
         ::= { cachePeerEntry 3 }
 
@@ -700,32 +731,24 @@
                 SYNTAX Integer32
                 MAX-ACCESS read-only
                 STATUS current
-		DESCRIPTION 
-			" The port the peer listens for ICP requests 
+		DESCRIPTION
+			" The port the peer listens for ICP requests
 			  should be 0 if not configured to send ICP requests "
         ::= { cachePeerEntry 4 }
 
 	cachePeerType OBJECT-TYPE
-                SYNTAX INTEGER {
-				none(0), 
-				sibling(1), 
-                                parent(2), 
-				multicast(3)
-                                }
+                SYNTAX INTEGER
                 MAX-ACCESS not-accessible
                 STATUS current
-                DESCRIPTION 
+                DESCRIPTION
                         " Peer Type "
-	::= { cachePeerEntry 5 } 
+	::= { cachePeerEntry 5 }
 
 	cachePeerState OBJECT-TYPE
-                SYNTAX INTEGER { 
-				down(0), 
-				up(1)
-				}
+                SYNTAX INTEGER
                 MAX-ACCESS read-only
                 STATUS current
-		DESCRIPTION 
+		DESCRIPTION
 			" The operational state of this peer "
         ::= { cachePeerEntry 6 }
 
@@ -733,7 +756,7 @@
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-		DESCRIPTION 
+		DESCRIPTION
 			" Number of pings sent to peer "
         ::= { cachePeerEntry 7 }
 
@@ -741,7 +764,7 @@
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-		DESCRIPTION 
+		DESCRIPTION
 			" Number of pings received from peer "
         ::= {  cachePeerEntry 8 }
 
@@ -749,7 +772,7 @@
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-		DESCRIPTION 
+		DESCRIPTION
 			" Number of times this peer was selected  "
         ::= { cachePeerEntry 9 }
 
@@ -757,7 +780,7 @@
                 SYNTAX Integer32
                 MAX-ACCESS read-only
                 STATUS current
-		DESCRIPTION 
+		DESCRIPTION
 			" Last known round-trip time to the peer (in ms) "
         ::= { cachePeerEntry 10 }
 
@@ -765,7 +788,7 @@
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-		DESCRIPTION 
+		DESCRIPTION
 			" How many times this peer was ignored "
         ::= { cachePeerEntry 11 }
 
@@ -773,7 +796,7 @@
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-		DESCRIPTION 
+		DESCRIPTION
 			" Number of keepalives sent "
         ::= { cachePeerEntry 12 }
 
@@ -781,7 +804,7 @@
                 SYNTAX Counter32
                 MAX-ACCESS read-only
                 STATUS current
-		DESCRIPTION 
+		DESCRIPTION
 			" Number of keepalives received "
         ::= { cachePeerEntry 13 }
 
@@ -791,7 +814,7 @@
 ---	
 
         cacheClientTable OBJECT-TYPE
-           SYNTAX  SEQUENCE OF cacheClientEntry
+           SYNTAX  SEQUENCE OF CacheClientEntry
            ACCESS  not-accessible
            STATUS  mandatory
            DESCRIPTION
@@ -803,12 +826,12 @@
            ACCESS  not-accessible
            STATUS  mandatory
            DESCRIPTION
-                    "An entry in cacheClientTable"
+                    "An entry in cacheClientTable "
 	   INDEX { cacheClientAddr }
 	::= { cacheClientTable 1 }
 
 	CacheClientEntry ::= SEQUENCE {
-               	cacheClientAddr 	IpAddress
+               	cacheClientAddr 	IpAddress,
                	cacheClientHttpRequests	Counter32,
                	cacheClientHttpKb 	Counter32,
                	cacheClientHttpHits 	Counter32,
@@ -892,10 +915,11 @@
         ::= { cacheClientEntry 9 }
 
 	-- end of cacheClientTable
-  
- 
+
+
     -- end of cacheMesh group
 
 -- end of SQUID-MIB
 --
 END
+
Index: squid/src/mime.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/mime.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/mime.c	20 Apr 2000 18:14:22 -0000	1.1.1.3.6.1
+++ squid/src/mime.c	16 May 2000 18:53:53 -0000	1.1.1.3.6.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: mime.c,v 1.1.1.3.6.1 2000/04/20 18:14:22 hno Exp $
+ * $Id: mime.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 25    MIME Parsing
  * AUTHOR: Harvest Derived
@@ -216,12 +216,12 @@
     return m->icon;
 }
 
-char *
+const char *
 mimeGetIconURL(const char *fn)
 {
     char *icon = mimeGetIcon(fn);
     if (icon == NULL)
-	return NULL;
+	return null_string;
     return internalLocalUri("/squid-internal-static/icons/", icon);
 }
 
Index: squid/src/neighbors.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/neighbors.c,v
retrieving revision 1.1.1.3.10.3.2.1
retrieving revision 1.1.1.3.10.3.2.2
diff -u -r1.1.1.3.10.3.2.1 -r1.1.1.3.10.3.2.2
--- squid/src/neighbors.c	14 May 2000 23:22:19 -0000	1.1.1.3.10.3.2.1
+++ squid/src/neighbors.c	16 May 2000 18:53:53 -0000	1.1.1.3.10.3.2.2
@@ -1,6 +1,6 @@
 
 /*
- * $Id: neighbors.c,v 1.1.1.3.10.3.2.1 2000/05/14 23:22:19 hno Exp $
+ * $Id: neighbors.c,v 1.1.1.3.10.3.2.2 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 15    Neighbor Routines
  * AUTHOR: Harvest Derived
@@ -146,6 +146,7 @@
 	return do_ping;
     if (p->access == NULL)
 	return do_ping;
+    memset(&checklist, '\0', sizeof(checklist));
     checklist.src_addr = request->client_addr;
     checklist.my_addr = request->my_addr;
     checklist.my_port = request->my_port;
Index: squid/src/net_db.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/net_db.c,v
retrieving revision 1.1.1.3.10.2.2.1
retrieving revision 1.1.1.3.10.2.2.2
diff -u -r1.1.1.3.10.2.2.1 -r1.1.1.3.10.2.2.2
--- squid/src/net_db.c	8 May 2000 18:02:08 -0000	1.1.1.3.10.2.2.1
+++ squid/src/net_db.c	16 May 2000 18:53:53 -0000	1.1.1.3.10.2.2.2
@@ -1,6 +1,6 @@
 
 /*
- * $Id: net_db.c,v 1.1.1.3.10.2.2.1 2000/05/08 18:02:08 hno Exp $
+ * $Id: net_db.c,v 1.1.1.3.10.2.2.2 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 38    Network Measurement Database
  * AUTHOR: Duane Wessels
@@ -569,6 +569,10 @@
 		o += sizeof(int);
 		hops = (double) ntohl(j) / 1000.0;
 		break;
+	    default:
+		debug(38, 1) ("netdbExchangeHandleReply: corrupt data, aborting\n");
+		netdbExchangeDone(ex);
+		return;
 	    }
 	}
 	if (addr.s_addr != any_addr.s_addr && rtt > 0)
@@ -966,7 +970,7 @@
     assert(NULL != ex->r);
     ex->r->http_ver = 1.0;
     ex->e = storeCreateEntry(uri, uri, null_request_flags, METHOD_GET);
-    ex->buf_sz = 4096;;
+    ex->buf_sz = 4096;
     ex->buf = memAllocate(MEM_4K_BUF);
     assert(NULL != ex->e);
     ex->sc = storeClientListAdd(ex->e, ex);
Index: squid/src/pinger.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/pinger.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/pinger.c	20 Apr 2000 18:14:22 -0000	1.1.1.3.6.1
+++ squid/src/pinger.c	16 May 2000 18:53:53 -0000	1.1.1.3.6.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: pinger.c,v 1.1.1.3.6.1 2000/04/20 18:14:22 hno Exp $
+ * $Id: pinger.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 42    ICMP Pinger program
  * AUTHOR: Duane Wessels
@@ -215,7 +215,11 @@
 	0,
 	(struct sockaddr *) &from,
 	&fromlen);
+#if GETTIMEOFDAY_NO_TZP
+    gettimeofday(&now);
+#else
     gettimeofday(&now, NULL);
+#endif
     debug(42, 9) ("pingerRecv: %d bytes from %s\n", n, inet_ntoa(from.sin_addr));
     ip = (struct iphdr *) (void *) pkt;
 #if HAVE_IP_HL
@@ -304,12 +308,18 @@
     n = recv(0, (char *) &pecho, sizeof(pecho), 0);
     if (n < 0)
 	return n;
+    if (0 == n) {
+	/* EOF indicator */
+	fprintf(stderr, "EOF encountered\n");
+	errno = 0;
+	return -1;
+    }
     guess_size = n - (sizeof(pingerEchoData) - PINGER_PAYLOAD_SZ);
     if (guess_size != pecho.psize) {
 	fprintf(stderr, "size mismatch, guess=%d psize=%d\n",
 	    guess_size, pecho.psize);
-	errno = 0;
-	return -1;
+	/* don't process this message, but keep running */
+	return 0;
     }
     pingerSendEcho(pecho.to,
 	pecho.opcode,
Index: squid/src/protos.h
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/protos.h,v
retrieving revision 1.1.1.3.10.8.2.5
retrieving revision 1.1.1.3.10.8.2.6
diff -u -r1.1.1.3.10.8.2.5 -r1.1.1.3.10.8.2.6
--- squid/src/protos.h	14 May 2000 23:22:19 -0000	1.1.1.3.10.8.2.5
+++ squid/src/protos.h	16 May 2000 18:53:53 -0000	1.1.1.3.10.8.2.6
@@ -1,6 +1,6 @@
 
 /*
- * $Id: protos.h,v 1.1.1.3.10.8.2.5 2000/05/14 23:22:19 hno Exp $
+ * $Id: protos.h,v 1.1.1.3.10.8.2.6 2000/05/16 18:53:53 hno Exp $
  *
  *
  * SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
@@ -591,7 +591,7 @@
 extern char *mimeGetContentEncoding(const char *fn);
 extern char *mimeGetContentType(const char *fn);
 extern char *mimeGetIcon(const char *fn);
-extern char *mimeGetIconURL(const char *fn);
+extern const char *mimeGetIconURL(const char *fn);
 extern char mimeGetTransferMode(const char *fn);
 extern int mimeGetDownloadOption(const char *fn);
 extern int mimeGetViewOption(const char *fn);
Index: squid/src/snmp_agent.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/snmp_agent.c,v
retrieving revision 1.1.1.3.6.2.2.1
retrieving revision 1.1.1.3.6.2.2.2
diff -u -r1.1.1.3.6.2.2.1 -r1.1.1.3.6.2.2.2
--- squid/src/snmp_agent.c	14 May 2000 23:22:19 -0000	1.1.1.3.6.2.2.1
+++ squid/src/snmp_agent.c	16 May 2000 18:53:53 -0000	1.1.1.3.6.2.2.2
@@ -1,6 +1,6 @@
 
 /*
- * $Id: snmp_agent.c,v 1.1.1.3.6.2.2.1 2000/05/14 23:22:19 hno Exp $
+ * $Id: snmp_agent.c,v 1.1.1.3.6.2.2.2 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 49     SNMP Interface
  * AUTHOR: Kostas Anagnostakis
@@ -104,22 +104,22 @@
     case CONF_STORAGE:
 	switch (Var->name[LEN_SQ_CONF + 1]) {
 	case CONF_ST_MMAXSZ:
-	    snmp_var_new_integer(Var->name, Var->name_length,
+	    Answer = snmp_var_new_integer(Var->name, Var->name_length,
 		(snint) Config.memMaxSize >> 20,
 		ASN_INTEGER);
 	    break;
 	case CONF_ST_SWMAXSZ:
-	    snmp_var_new_integer(Var->name, Var->name_length,
+	    Answer = snmp_var_new_integer(Var->name, Var->name_length,
 		(snint) Config.Swap.maxSize >> 10,
 		ASN_INTEGER);
 	    break;
 	case CONF_ST_SWHIWM:
-	    snmp_var_new_integer(Var->name, Var->name_length,
+	    Answer = snmp_var_new_integer(Var->name, Var->name_length,
 		(snint) Config.Swap.highWaterMark,
 		ASN_INTEGER);
 	    break;
 	case CONF_ST_SWLOWM:
-	    snmp_var_new_integer(Var->name, Var->name_length,
+	    Answer = snmp_var_new_integer(Var->name, Var->name_length,
 		(snint) Config.Swap.lowWaterMark,
 		ASN_INTEGER);
 	    break;
Index: squid/src/snmp_core.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/snmp_core.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/snmp_core.c	20 Apr 2000 18:14:23 -0000	1.1.1.3.6.1
+++ squid/src/snmp_core.c	16 May 2000 18:53:53 -0000	1.1.1.3.6.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: snmp_core.c,v 1.1.1.3.6.1 2000/04/20 18:14:23 hno Exp $
+ * $Id: snmp_core.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 49    SNMP support
  * AUTHOR: Glenn Chisholm
@@ -499,7 +499,7 @@
     PDU = snmp_pdu_create(0);
     Session.Version = SNMP_VERSION_1;
     Community = snmp_parse(&Session, PDU, buf, len);
-
+    memset(&checklist, '\0', sizeof(checklist));
     checklist.src_addr = rq->from.sin_addr;
     checklist.snmp_community = (char *) Community;
 
Index: squid/src/stat.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/stat.c,v
retrieving revision 1.1.1.3.10.4.2.2
retrieving revision 1.1.1.3.10.4.2.3
diff -u -r1.1.1.3.10.4.2.2 -r1.1.1.3.10.4.2.3
--- squid/src/stat.c	14 May 2000 23:22:19 -0000	1.1.1.3.10.4.2.2
+++ squid/src/stat.c	16 May 2000 18:53:53 -0000	1.1.1.3.10.4.2.3
@@ -1,6 +1,6 @@
 
 /*
- * $Id: stat.c,v 1.1.1.3.10.4.2.2 2000/05/14 23:22:19 hno Exp $
+ * $Id: stat.c,v 1.1.1.3.10.4.2.3 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 18    Cache Manager Statistics
  * AUTHOR: Harvest Derived
@@ -1010,7 +1010,7 @@
 {
     assert(dest && orig);
     /* this should take care of all the fields, but "special" ones */
-    memcpy(dest, orig, sizeof(*dest));
+    xmemcpy(dest, orig, sizeof(*dest));
     /* prepare space where to copy special entries */
     statCountersInitSpecial(dest);
     /* now handle special cases */
Index: squid/src/store.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/store.c,v
retrieving revision 1.1.1.3.10.8.2.4
retrieving revision 1.1.1.3.10.8.2.5
diff -u -r1.1.1.3.10.8.2.4 -r1.1.1.3.10.8.2.5
--- squid/src/store.c	14 May 2000 23:22:20 -0000	1.1.1.3.10.8.2.4
+++ squid/src/store.c	16 May 2000 18:53:53 -0000	1.1.1.3.10.8.2.5
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store.c,v 1.1.1.3.10.8.2.4 2000/05/14 23:22:20 hno Exp $
+ * $Id: store.c,v 1.1.1.3.10.8.2.5 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 20    Storage Manager
  * AUTHOR: Harvest Derived
@@ -91,9 +91,9 @@
 /*
  * local variables
  */
-int store_pages_max = 0;
-int store_swap_high = 0;
-int store_swap_low = 0;
+static int store_pages_max = 0;
+static int store_swap_high = 0;
+static int store_swap_low = 0;
 static Stack LateReleaseStack;
 
 #if URL_CHECKSUM_DEBUG
@@ -427,7 +427,7 @@
     e->swap_dirn = -1;
     e->refcount = 0;
     e->lastref = squid_curtime;
-    e->timestamp = 0;		/* set in storeTimestampsSet() */
+    e->timestamp = -1;		/* set in storeTimestampsSet() */
     e->ping_status = PING_NONE;
     EBIT_SET(e->flags, ENTRY_VALIDATED);
     return e;
@@ -504,6 +504,7 @@
 	int wrong_content_length;
 	int negative_cached;
 	int too_big;
+	int too_small;
 	int private_key;
 	int too_many_open_files;
 	int too_many_open_fds;
@@ -523,6 +524,19 @@
     return 0;
 }
 
+static int
+storeCheckTooSmall(StoreEntry * e)
+{
+    MemObject *mem = e->mem_obj;
+    if (STORE_OK == e->store_status)
+	if (mem->object_sz < Config.Store.minObjectSize)
+	    return 1;
+    if (mem->reply->content_length > -1)
+	if (mem->reply->content_length < (int) Config.Store.minObjectSize)
+	    return 1;
+    return 0;
+}
+
 int
 storeCheckCachable(StoreEntry * e)
 {
@@ -553,6 +567,9 @@
     } else if (e->mem_obj->reply->content_length > (int) Config.Store.maxObjectSize) {
 	debug(20, 2) ("storeCheckCachable: NO: too big\n");
 	store_check_cachable_hist.no.too_big++;
+    } else if (storeCheckTooSmall(e)) {
+	debug(20, 2) ("storeCheckCachable: NO: too small\n");
+	store_check_cachable_hist.no.too_small++;
     } else if (EBIT_TEST(e->flags, KEY_PRIVATE)) {
 	debug(20, 3) ("storeCheckCachable: NO: private key\n");
 	store_check_cachable_hist.no.private_key++;
@@ -595,6 +612,8 @@
 	store_check_cachable_hist.no.negative_cached);
     storeAppendPrintf(sentry, "no.too_big\t%d\n",
 	store_check_cachable_hist.no.too_big);
+    storeAppendPrintf(sentry, "no.too_small\t%d\n",
+	store_check_cachable_hist.no.too_small);
     storeAppendPrintf(sentry, "no.private_key\t%d\n",
 	store_check_cachable_hist.no.private_key);
     storeAppendPrintf(sentry, "no.too_many_open_files\t%d\n",
@@ -630,8 +649,14 @@
     if (e->mem_obj->request)
 	e->mem_obj->request->hier.store_complete_stop = current_time;
 #endif
-    InvokeHandlers(e);
+    /*
+     * We used to call InvokeHandlers, then storeSwapOut.  However,
+     * Madhukar Reddy <myreddy@persistence.com> reported that
+     * responses without content length would sometimes get released
+     * in client_side, thinking that the response is incomplete.
+     */
     storeSwapOut(e);
+    InvokeHandlers(e);
 }
 
 /*
Index: squid/src/store_client.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/store_client.c,v
retrieving revision 1.1.1.3.10.4.2.4
retrieving revision 1.1.1.3.10.4.2.5
diff -u -r1.1.1.3.10.4.2.4 -r1.1.1.3.10.4.2.5
--- squid/src/store_client.c	16 May 2000 18:44:18 -0000	1.1.1.3.10.4.2.4
+++ squid/src/store_client.c	16 May 2000 18:53:53 -0000	1.1.1.3.10.4.2.5
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_client.c,v 1.1.1.3.10.4.2.4 2000/05/16 18:44:18 hno Exp $
+ * $Id: store_client.c,v 1.1.1.3.10.4.2.5 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 20    Storage Manager Client-Side Interface
  * AUTHOR: Duane Wessels
@@ -297,8 +297,8 @@
 	    /* yuck -- this causes a TCP_SWAPFAIL_MISS on the client side */
 	    storeClientCallback(sc, -1);
 	    return;
-	}
-	if (!sc->flags.disk_io_pending) {
+	} else if (!sc->flags.disk_io_pending) {
+	    sc->flags.disk_io_pending = 1;
 	    storeSwapInStart(sc);
 	    if (NULL == sc->swapin_sio) {
 		storeClientCallback(sc, -1);
Index: squid/src/store_dir.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/store_dir.c,v
retrieving revision 1.1.1.3.10.6.2.2
retrieving revision 1.1.1.3.10.6.2.3
diff -u -r1.1.1.3.10.6.2.2 -r1.1.1.3.10.6.2.3
--- squid/src/store_dir.c	14 May 2000 23:22:20 -0000	1.1.1.3.10.6.2.2
+++ squid/src/store_dir.c	16 May 2000 18:53:53 -0000	1.1.1.3.10.6.2.3
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_dir.c,v 1.1.1.3.10.6.2.2 2000/05/14 23:22:20 hno Exp $
+ * $Id: store_dir.c,v 1.1.1.3.10.6.2.3 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 47    Store Directory Routines
  * AUTHOR: Duane Wessels
@@ -311,7 +311,7 @@
     int i;
     Config.Swap.maxSize = 0;
     for (i = 0; i < Config.cacheSwap.n_configured; i++) {
-	SD = &Config.cacheSwap.swapDirs[i];;
+	SD = &Config.cacheSwap.swapDirs[i];
 	Config.Swap.maxSize += SD->max_size;
 	SD->low_size = (int) (((float) SD->max_size *
 		(float) Config.Swap.lowWaterMark) / 100.0);
Index: squid/src/structs.h
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/structs.h,v
retrieving revision 1.1.1.3.10.8.2.6
retrieving revision 1.1.1.3.10.8.2.7
diff -u -r1.1.1.3.10.8.2.6 -r1.1.1.3.10.8.2.7
--- squid/src/structs.h	14 May 2000 23:22:20 -0000	1.1.1.3.10.8.2.6
+++ squid/src/structs.h	16 May 2000 18:53:53 -0000	1.1.1.3.10.8.2.7
@@ -1,6 +1,6 @@
 
 /*
- * $Id: structs.h,v 1.1.1.3.10.8.2.6 2000/05/14 23:22:20 hno Exp $
+ * $Id: structs.h,v 1.1.1.3.10.8.2.7 2000/05/16 18:53:53 hno Exp $
  *
  *
  * SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
@@ -285,6 +285,7 @@
 	struct in_addr router;
 	struct in_addr incoming;
 	struct in_addr outgoing;
+	int version;
     } Wccp;
 #endif
     char *as_whois_server;
@@ -371,6 +372,7 @@
 	int objectsPerBucket;
 	size_t avgObjectSize;
 	size_t maxObjectSize;
+	size_t minObjectSize;
     } Store;
     struct {
 	int high;
@@ -440,6 +442,7 @@
 	size_t list_width;
 	int list_wrap;
 	char *anon_user;
+	int passive;
     } Ftp;
     refresh_t *Refresh;
     struct _cacheSwap {
@@ -503,6 +506,8 @@
     struct {
 	int enable_purge;
     } onoff;
+    uid_t effectiveUserID;
+    gid_t effectiveGroupID;
 };
 
 struct _close_handler {
Index: squid/src/test_cache_digest.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/test_cache_digest.c,v
retrieving revision 1.1.1.1.8.1
retrieving revision 1.1.1.1.8.1.2.1
diff -u -r1.1.1.1.8.1 -r1.1.1.1.8.1.2.1
--- squid/src/test_cache_digest.c	20 Apr 2000 18:14:23 -0000	1.1.1.1.8.1
+++ squid/src/test_cache_digest.c	16 May 2000 18:53:53 -0000	1.1.1.1.8.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: test_cache_digest.c,v 1.1.1.1.8.1 2000/04/20 18:14:23 hno Exp $
+ * $Id: test_cache_digest.c,v 1.1.1.1.8.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * AUTHOR: Alex Rousskov
  *
@@ -436,7 +436,7 @@
  * strcmp(hier, "SSL_PARENT_MISS") &&
  * strcmp(hier, "DEFAULT_PARENT");
  */
-    memcpy(entry->key, storeKeyPublic(url, method_id), sizeof(entry->key));
+    xmemcpy(entry->key, storeKeyPublic(url, method_id), sizeof(entry->key));
     /*fprintf(stdout, "%s:%d: %s %s %s %s\n",
      * fname, count, method, storeKeyText(entry->key), url, hier); */
     return frOk;
Index: squid/src/tools.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/tools.c,v
retrieving revision 1.1.1.3.6.1
retrieving revision 1.1.1.3.6.1.2.1
diff -u -r1.1.1.3.6.1 -r1.1.1.3.6.1.2.1
--- squid/src/tools.c	20 Apr 2000 18:14:23 -0000	1.1.1.3.6.1
+++ squid/src/tools.c	16 May 2000 18:53:53 -0000	1.1.1.3.6.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: tools.c,v 1.1.1.3.6.1 2000/04/20 18:14:23 hno Exp $
+ * $Id: tools.c,v 1.1.1.3.6.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 21    Misc Functions
  * AUTHOR: Harvest Derived
@@ -416,46 +416,47 @@
     const struct hostent *h = NULL;
     if (Config.visibleHostname != NULL)
 	return Config.visibleHostname;
-    if (present) {
-	(void) 0;
-    } else if (Config.Sockaddr.http->s.sin_addr.s_addr != any_addr.s_addr) {
+    if (present)
+	return host;
+    host[0] = '\0';
+    if (Config.Sockaddr.http->s.sin_addr.s_addr != any_addr.s_addr) {
 	/*
 	 * If the first http_port address has a specific address, try a
 	 * reverse DNS lookup on it.
 	 */
-	host[0] = '\0';
 	h = gethostbyaddr((char *) &Config.Sockaddr.http->s.sin_addr,
 	    sizeof(Config.Sockaddr.http->s.sin_addr), AF_INET);
 	if (h != NULL) {
 	    /* DNS lookup successful */
 	    /* use the official name from DNS lookup */
-	    strcpy(host, h->h_name);
-	    debug(50, 4) ("getMyHostname: resolved tcp_incoming_addr to '%s'\n",
+	    xstrncpy(host, h->h_name, SQUIDHOSTNAMELEN);
+	    debug(50, 4) ("getMyHostname: resolved %s to '%s'\n",
+		inet_ntoa(Config.Sockaddr.http->s.sin_addr),
 		host);
 	    present = 1;
-	} else {
-	    debug(50, 6) ("getMyHostname: failed to resolve tcp_incoming_addr\n");
+	    return host;
 	}
+	debug(50, 1) ("WARNING: failed to resolve %s to a hostname\n",
+	    inet_ntoa(Config.Sockaddr.http->s.sin_addr));
+    }
+    /*
+     * Get the host name and store it in host to return
+     */
+    if (gethostname(host, SQUIDHOSTNAMELEN) < 0) {
+	debug(50, 1) ("WARNING: gethostname failed: %s\n", xstrerror());
+    } else if ((h = gethostbyname(host)) == NULL) {
+	debug(50, 1) ("WARNING: gethostbyname failed for %s\n", host);
     } else {
-	/*
-	 * Get the host name and store it in host to return
-	 */
-	host[0] = '\0';
-	if (gethostname(host, SQUIDHOSTNAMELEN) == -1) {
-	    debug(50, 1) ("getMyHostname: gethostname failed: %s\n",
-		xstrerror());
-	} else {
-	    if ((h = gethostbyname(host)) != NULL) {
-		debug(50, 6) ("getMyHostname: '%s' resolved into '%s'\n",
-		    host, h->h_name);
-		/* DNS lookup successful */
-		/* use the official name from DNS lookup */
-		strcpy(host, h->h_name);
-	    }
-	}
+	debug(50, 6) ("getMyHostname: '%s' resolved into '%s'\n",
+	    host, h->h_name);
+	/* DNS lookup successful */
+	/* use the official name from DNS lookup */
+	xstrncpy(host, h->h_name, SQUIDHOSTNAMELEN);
 	present = 1;
+	return host;
     }
-    return present ? host : NULL;
+    fatal("Could not determine fully qualified hostname.  Please set 'visible_hostname'\n");
+    return NULL;		/* keep compiler happy */
 }
 
 const char *
@@ -480,38 +481,28 @@
 void
 leave_suid(void)
 {
-    struct passwd *pwd = NULL;
-    struct group *grp = NULL;
-    gid_t gid;
     debug(21, 3) ("leave_suid: PID %d called\n", getpid());
     if (geteuid() != 0)
 	return;
     /* Started as a root, check suid option */
     if (Config.effectiveUser == NULL)
 	return;
-    if ((pwd = getpwnam(Config.effectiveUser)) == NULL)
-	return;
-    if (Config.effectiveGroup && (grp = getgrnam(Config.effectiveGroup))) {
-	gid = grp->gr_gid;
-    } else {
-	gid = pwd->pw_gid;
-    }
 #if HAVE_SETGROUPS
-    setgroups(1, &gid);
+    setgroups(1, &Config2.effectiveGroupID);
 #endif
-    if (setgid(gid) < 0)
-	debug(50, 1) ("leave_suid: setgid: %s\n", xstrerror());
+    if (setgid(Config2.effectiveGroupID) < 0)
+	debug(50, 0) ("ALERT: setgid: %s\n", xstrerror());
     debug(21, 3) ("leave_suid: PID %d giving up root, becoming '%s'\n",
-	getpid(), pwd->pw_name);
+	getpid(), Config.effectiveUser);
 #if HAVE_SETRESUID
-    if (setresuid(pwd->pw_uid, pwd->pw_uid, 0) < 0)
-	debug(50, 1) ("leave_suid: setresuid: %s\n", xstrerror());
+    if (setresuid(Config2.effectiveUserID, Config2.effectiveUserID, 0) < 0)
+	debug(50, 0) ("ALERT: setresuid: %s\n", xstrerror());
 #elif HAVE_SETEUID
-    if (seteuid(pwd->pw_uid) < 0)
-	debug(50, 1) ("leave_suid: seteuid: %s\n", xstrerror());
+    if (seteuid(Config2.effectiveUserID) < 0)
+	debug(50, 0) ("ALERT: seteuid: %s\n", xstrerror());
 #else
-    if (setuid(pwd->pw_uid) < 0)
-	debug(50, 1) ("leave_suid: setuid: %s\n", xstrerror());
+    if (setuid(Config2.effectiveUserID) < 0)
+	debug(50, 0) ("ALERT: setuid: %s\n", xstrerror());
 #endif
 }
 
Index: squid/src/unlinkd.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/unlinkd.c,v
retrieving revision 1.1.1.3.10.3.2.2
retrieving revision 1.1.1.3.10.3.2.3
diff -u -r1.1.1.3.10.3.2.2 -r1.1.1.3.10.3.2.3
--- squid/src/unlinkd.c	2 May 2000 22:50:29 -0000	1.1.1.3.10.3.2.2
+++ squid/src/unlinkd.c	16 May 2000 18:53:53 -0000	1.1.1.3.10.3.2.3
@@ -1,6 +1,6 @@
 
 /*
- * $Id: unlinkd.c,v 1.1.1.3.10.3.2.2 2000/05/02 22:50:29 hno Exp $
+ * $Id: unlinkd.c,v 1.1.1.3.10.3.2.3 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 12    Unlink Daemon
  * AUTHOR: Duane Wessels
@@ -79,6 +79,7 @@
 void
 unlinkdUnlink(const char *path)
 {
+#if USE_UNLINKD
     char buf[MAXPATHLEN];
     int l;
     int x;
@@ -141,6 +142,7 @@
     }
     Counter.unlink.requests++;
     queuelen++;
+#endif
 }
 
 void
@@ -158,6 +160,7 @@
 void
 unlinkdInit(void)
 {
+#if USE_UNLINKD
     int x;
     char *args[2];
     struct timeval slp;
@@ -189,6 +192,9 @@
     if (FD_PIPE == fd_table[unlinkd_wfd].type)
 	commUnsetNonBlocking(unlinkd_wfd);
     debug(12, 1) ("Unlinkd pipe opened on FD %d\n", unlinkd_wfd);
+#else
+    debug(12, 1) ("Unlinkd is disabled\n");
+#endif
 }
 
 #endif /* ndef UNLINK_DAEMON */
Index: squid/src/url.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/url.c,v
retrieving revision 1.1.1.3.10.2.2.1
retrieving revision 1.1.1.3.10.2.2.2
diff -u -r1.1.1.3.10.2.2.1 -r1.1.1.3.10.2.2.2
--- squid/src/url.c	14 May 2000 23:22:20 -0000	1.1.1.3.10.2.2.1
+++ squid/src/url.c	16 May 2000 18:53:53 -0000	1.1.1.3.10.2.2.2
@@ -1,6 +1,6 @@
 
 /*
- * $Id: url.c,v 1.1.1.3.10.2.2.1 2000/05/14 23:22:20 hno Exp $
+ * $Id: url.c,v 1.1.1.3.10.2.2.2 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 23    URL Parsing
  * AUTHOR: Duane Wessels
@@ -127,7 +127,7 @@
      * way we expect it to.
      */
     assert(0 == matchDomainName("foo.com", "foo.com"));
-    assert(0 < matchDomainName(".foo.com", "foo.com"));
+    assert(0 == matchDomainName(".foo.com", "foo.com"));
     assert(0 == matchDomainName("foo.com", ".foo.com"));
     assert(0 == matchDomainName(".foo.com", ".foo.com"));
     assert(0 == matchDomainName("x.foo.com", ".foo.com"));
@@ -142,6 +142,7 @@
     assert(0 == matchDomainName("FOO.com", "foo.COM"));
     assert(0 < matchDomainName("bfoo.com", "afoo.com"));
     assert(0 > matchDomainName("afoo.com", "bfoo.com"));
+    assert(0 < matchDomainName("x-foo.com", ".foo.com"));
     /* more cases? */
 }
 
@@ -256,6 +257,17 @@
     }
     for (t = host; *t; t++)
 	*t = xtolower(*t);
+    if (stringHasWhitespace(host)) {
+	if (URI_WHITESPACE_STRIP == Config.uri_whitespace) {
+	    t = q = host;
+	    while (*t) {
+		if (!xisspace(*t))
+		    *q++ = *t;
+		t++;
+	    }
+	    *q = '\0';
+	}
+    }
     if (strspn(host, valid_hostname_chars) != strlen(host)) {
 	debug(23, 1) ("urlParse: Illegal character in hostname '%s'\n", host);
 	return NULL;
@@ -399,12 +411,15 @@
  *    HOST          DOMAIN        MATCH?
  * ------------- -------------    ------
  *    foo.com       foo.com         YES
- *   .foo.com       foo.com          NO
+ *   .foo.com       foo.com         YES
  *  x.foo.com       foo.com          NO
  *    foo.com      .foo.com         YES
  *   .foo.com      .foo.com         YES
  *  x.foo.com      .foo.com         YES
  *
+ *  We strip leading dots on hosts (but not domains!) so that
+ *  ".foo.com" is is always the same as "foo.com".
+ *
  *  Return values:
  *     0 means the host matches the domain
  *     1 means the host is greater than the domain
@@ -416,6 +431,8 @@
 {
     int dl;
     int hl;
+    while ('.' == *h)
+	h++;
     hl = strlen(h);
     dl = strlen(d);
     /*
@@ -458,6 +475,15 @@
     /*
      * We found different characters in the same position (from the end).
      */
+    /*
+     * If one of those character is '.' then its special.  In order
+     * for splay tree sorting to work properly, "x-foo.com" must
+     * be greater than ".foo.com" even though '-' is less than '.'.
+     */
+    if ('.' == d[dl])
+	return 1;
+    if ('.' == h[hl])
+	return -1;
     return (xtolower(h[hl]) - xtolower(d[dl]));
 }
 
Index: squid/src/wccp.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/wccp.c,v
retrieving revision 1.1.1.1.6.1
retrieving revision 1.1.1.1.6.1.2.1
diff -u -r1.1.1.1.6.1 -r1.1.1.1.6.1.2.1
--- squid/src/wccp.c	20 Apr 2000 18:14:23 -0000	1.1.1.1.6.1
+++ squid/src/wccp.c	16 May 2000 18:53:53 -0000	1.1.1.1.6.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: wccp.c,v 1.1.1.1.6.1 2000/04/20 18:14:23 hno Exp $
+ * $Id: wccp.c,v 1.1.1.1.6.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 80    WCCP Support
  * AUTHOR: Glenn Chisholm
@@ -37,7 +37,6 @@
 #if USE_WCCP
 
 #define WCCP_PORT 2048
-#define WCCP_VERSION 4
 #define WCCP_REVISION 0
 #define WCCP_RESPONSE_SIZE 12448
 #define WCCP_ACTIVE_CACHES 32
@@ -108,7 +107,7 @@
 	return;
     memset(&wccp_here_i_am, '\0', sizeof(wccp_here_i_am));
     wccp_here_i_am.type = htonl(WCCP_HERE_I_AM);
-    wccp_here_i_am.version = htonl(WCCP_VERSION);
+    wccp_here_i_am.version = htonl(Config.Wccp.version);
     wccp_here_i_am.revision = htonl(WCCP_REVISION);
     change = 0;
     if (Config.Wccp.router.s_addr != any_addr.s_addr)
@@ -232,7 +231,7 @@
 	return;
     if (Config.Wccp.router.s_addr != from.sin_addr.s_addr)
 	return;
-    if (ntohl(wccp_i_see_you.version) != WCCP_VERSION)
+    if (ntohl(wccp_i_see_you.version) != Config.Wccp.version)
 	return;
     if (ntohl(wccp_i_see_you.type) != WCCP_I_SEE_YOU)
 	return;
Index: squid/src/whois.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/whois.c,v
retrieving revision 1.1.1.2.8.1
retrieving revision 1.1.1.2.8.1.2.1
diff -u -r1.1.1.2.8.1 -r1.1.1.2.8.1.2.1
--- squid/src/whois.c	20 Apr 2000 18:14:23 -0000	1.1.1.2.8.1
+++ squid/src/whois.c	16 May 2000 18:53:53 -0000	1.1.1.2.8.1.2.1
@@ -1,6 +1,6 @@
 
 /*
- * $Id: whois.c,v 1.1.1.2.8.1 2000/04/20 18:14:23 hno Exp $
+ * $Id: whois.c,v 1.1.1.2.8.1.2.1 2000/05/16 18:53:53 hno Exp $
  *
  * DEBUG: section 75    WHOIS protocol
  * AUTHOR: Duane Wessels, Kostas Anagnostakis
@@ -86,6 +86,7 @@
     WhoisState *p = data;
     StoreEntry *entry = p->entry;
     char *buf = memAllocate(MEM_4K_BUF);
+    MemObject *mem = entry->mem_obj;
     int len;
     Counter.syscalls.sock.reads++;
     len = read(fd, buf, 4095);
@@ -93,6 +94,8 @@
     debug(75, 3) ("whoisReadReply: FD %d read %d bytes\n", fd, len);
     debug(75, 5) ("{%s}\n", buf);
     if (len > 0) {
+	if (0 == mem->inmem_hi)
+	    mem->reply->sline.status = HTTP_OK;
 	fd_bytes(fd, len, FD_READ);
 	kb_incr(&Counter.server.all.kbytes_in, len);
 	kb_incr(&Counter.server.http.kbytes_in, len);
@@ -103,7 +106,7 @@
 	    fd, xstrerror());
 	if (ignoreErrno(errno)) {
 	    commSetSelect(fd, COMM_SELECT_READ, whoisReadReply, p, Config.Timeout.read);
-	} else if (entry->mem_obj->inmem_hi == 0) {
+	} else if (mem->inmem_hi == 0) {
 	    ErrorState *err;
 	    err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR);
 	    err->xerrno = errno;
Index: squid/src/fs/coss/store_io_coss.c
===================================================================
RCS file: /cvsroot/squid-sf//squid/src/fs/coss/store_io_coss.c,v
retrieving revision 1.1.4.8.2.4
retrieving revision 1.1.4.8.2.5
diff -u -r1.1.4.8.2.4 -r1.1.4.8.2.5
--- squid/src/fs/coss/store_io_coss.c	14 May 2000 23:22:20 -0000	1.1.4.8.2.4
+++ squid/src/fs/coss/store_io_coss.c	16 May 2000 18:53:54 -0000	1.1.4.8.2.5
@@ -198,7 +198,7 @@
     /* make local copy so we don't have to lock membuf */
     if (p) {
 	cstate->readbuffer = xmalloc(sio->st_size);
-	memcpy(cstate->readbuffer, p, sio->st_size);
+	xmemcpy(cstate->readbuffer, p, sio->st_size);
     } else {
 	/* Do the allocation */
 	/* this is the first time we've been called on a new sio
@@ -303,7 +303,7 @@
     diskoffset = sio->swap_filen + sio->offset;
     dest = storeCossMemPointerFromDiskOffset(SD, diskoffset, &membuf);
     assert(dest != NULL);
-    memcpy(dest, buf, size);
+    xmemcpy(dest, buf, size);
     sio->offset += size;
     if (free_func)
 	(free_func) (buf);
@@ -333,11 +333,11 @@
 	if (cstate->readbuffer == NULL) {
 	    cstate->readbuffer = xmalloc(sio->st_size);
 	    p = storeCossMemPointerFromDiskOffset(SD, sio->swap_filen, NULL);
-	    memcpy(cstate->readbuffer, p, sio->st_size);
+	    xmemcpy(cstate->readbuffer, p, sio->st_size);
 	    storeCossMemBufUnlock(SD, sio);
 	}
 	sio->offset += len;
-	memcpy(cstate->requestbuf, &cstate->readbuffer[cstate->requestoffset],
+	xmemcpy(cstate->requestbuf, &cstate->readbuffer[cstate->requestoffset],
 	    cstate->requestlen);
 	rlen = (size_t) cstate->requestlen;
     }
