diff -u -r -N squid-3.2.0.13/acinclude/compiler-flags.m4 squid-3.2.0.14/acinclude/compiler-flags.m4
--- squid-3.2.0.13/acinclude/compiler-flags.m4	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/acinclude/compiler-flags.m4	2011-12-13 00:08:18.000000000 +1300
@@ -47,19 +47,6 @@
   }])
 ])
 
-# check if the c++ compiler supports the -fhuge-objects flag
-# sets the variable squid_cv_cxx_arg_fhugeobjects to either "yes" or "no"
-#
-AC_DEFUN([SQUID_CXX_CHECK_ARG_FHUGEOBJECTS],[
-  AC_LANG_PUSH([C++])
-  if test "$GCC" = "yes"; then
-    SQUID_CC_CHECK_ARGUMENT([squid_cv_cxx_arg_fhugeobjects],[-Werror -fhuge-objects])
-  else
-    squid_cv_cxx_arg_fhugeobjects=no
-  fi
-  AC_LANG_POP([C++])
-])
-
 # detect what kind of compiler we're using, either by using hints from
 # autoconf itself, or by using predefined preprocessor macros
 # sets the variable squid_cv_compiler to one of
diff -u -r -N squid-3.2.0.13/ChangeLog squid-3.2.0.14/ChangeLog
--- squid-3.2.0.13/ChangeLog	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/ChangeLog	2011-12-13 00:08:18.000000000 +1300
@@ -1,3 +1,29 @@
+Changes to squid-3.2.0.14 (12 Dec 2011):
+
+	- Bug 3433: Segfault closing SNMP
+	- Bug 3420: Request body consumption races and !theConsumer exception.
+	- Bug 3406: SSL Log Error in debug
+	- Bug 3383: store.cc:1631: "new_status != IN_MEMORY" assertion
+	- Bug 3383: unhandled exception: theGroupBSize > 0
+	- Bug 3377: assertion failed: store.cc:885: "store_status == STORE_PENDING"
+	- Bug 3367: fix inverted check on host_strict_verify
+	- Bug 3366: assertion comm.cc:1276: isOpen(fd) via CompositePoolNode::kickReads
+	- Bug 3364: SNMP Orphans
+	- Bug 3301: ERR_DNS_FAIL never shown
+	- Bug 3150: do not start useless unlinkd
+	- ext_session_acl: version 1.2
+	- Add adaptation_meta option
+	- Add a mask on the qos_flows miss configuration value
+	- Support intermediate CA in ssl-bump traffic certificates
+	- Support SSL certificate failure details on error page
+	- Fix flags for NAT intercept and TPROXY not set correctly
+	- Fix fastCheck() default result on multi-line actions
+	- Fix missing SMP shared memory statistics
+	- Fix Comm::Write closing() assertion when retrying a failed UDP DNS query
+	- ... and several other TCP and SMP support behaviour fixes
+	- ... and many code polishing cleanups and fixed build errors
+	- ... and several documentation polishings
+
 Changes to squid-3.2.0.13 (14 Oct 2011):
 
 	- Regression Bug 3363: never_direct always 'unable to forward this request at this time'
@@ -286,6 +312,29 @@
 	- ... and a great many testing improvements
 	- ... and many documentation updates
 
+Changes to squid-3.1.18 (03 Dec 2011):
+
+	- Regression: compile error in FTP
+
+Changes to squid-3.1.17 (03 Dec 2011):
+
+	- Bug 3432: Crash logging FTP errors
+	- Bug 3428: Active FTP data channel accepted twice
+	- Bug 3423: access violation in URL parser
+	- Bug 3422: Buffer overflow in recv-announce
+	- Bug 3412: External ACL Uses Invalid Cache Entry
+	- Bug 3408: Wrong header length leads to EFAULTs when creating UFS swap.log.new
+	- Bug 3398: persistent server connection closed after PUT/DELETE
+	- Bug 3299: dnsserver: various undefined references
+	- Bug 3077: '\' in url query strings cause Digest authentication to fail
+	- Bug 2910: MemBuf may grow beyond max_capacity
+	- Bug 2619: Excessive RAM growth due to unlimited adapted body data consumption
+	- Bug 1243: Build overrides configured AR setting
+	- Avoid crashes when processing bad X509 common names (CN).
+	- Support %% in external ACL format
+	- ... and several other compile error fixes
+	- ... and several documentation fixes
+
 Changes to squid-3.1.16 (14 Oct 2011):
 
 	- Bug 3373: invalid URL in ERR_CACHE_ACCESS_DENIED
diff -u -r -N squid-3.2.0.13/compat/Makefile.am squid-3.2.0.14/compat/Makefile.am
--- squid-3.2.0.13/compat/Makefile.am	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/compat/Makefile.am	2011-12-13 00:08:18.000000000 +1300
@@ -31,12 +31,15 @@
 	initgroups.h \
 	osdetect.h \
 	psignal.h \
+	shm.cc \
 	shm.h \
 	stdio.h \
 	stdvarargs.h \
 	strnstr.cc \
 	strsep.h \
 	strtoll.h \
+	strnrchr.h \
+	strnrchr.c \
 	tempnam.h \
 	types.h \
 	unsafe.h \
diff -u -r -N squid-3.2.0.13/compat/Makefile.in squid-3.2.0.14/compat/Makefile.in
--- squid-3.2.0.13/compat/Makefile.in	2011-10-14 14:46:37.000000000 +1300
+++ squid-3.2.0.14/compat/Makefile.in	2011-12-13 00:10:09.000000000 +1300
@@ -66,9 +66,10 @@
 libcompat_squid_a_AR = $(AR) $(ARFLAGS)
 libcompat_squid_a_DEPENDENCIES = $(LIBOBJS)
 am_libcompat_squid_a_OBJECTS = assert.$(OBJEXT) compat.$(OBJEXT) \
-	debug.$(OBJEXT) GnuRegex.$(OBJEXT) strnstr.$(OBJEXT) \
-	xalloc.$(OBJEXT) xstrerror.$(OBJEXT) xstring.$(OBJEXT) \
-	xstrto.$(OBJEXT) mswin.$(OBJEXT)
+	debug.$(OBJEXT) GnuRegex.$(OBJEXT) shm.$(OBJEXT) \
+	strnstr.$(OBJEXT) strnrchr.$(OBJEXT) xalloc.$(OBJEXT) \
+	xstrerror.$(OBJEXT) xstring.$(OBJEXT) xstrto.$(OBJEXT) \
+	mswin.$(OBJEXT)
 libcompat_squid_a_OBJECTS = $(am_libcompat_squid_a_OBJECTS)
 am_testPreCompiler_OBJECTS = testPreCompiler.$(OBJEXT) \
 	testMain.$(OBJEXT)
@@ -353,12 +354,15 @@
 	initgroups.h \
 	osdetect.h \
 	psignal.h \
+	shm.cc \
 	shm.h \
 	stdio.h \
 	stdvarargs.h \
 	strnstr.cc \
 	strsep.h \
 	strtoll.h \
+	strnrchr.h \
+	strnrchr.c \
 	tempnam.h \
 	types.h \
 	unsafe.h \
@@ -477,6 +481,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mswin.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strnrchr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strnstr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMain.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testPreCompiler.Po@am__quote@
diff -u -r -N squid-3.2.0.13/compat/shm.cc squid-3.2.0.14/compat/shm.cc
--- squid-3.2.0.13/compat/shm.cc	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/compat/shm.cc	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,28 @@
+#include "config.h"
+#include "compat/shm.h"
+
+#if _SQUID_FREEBSD_ && (__FreeBSD__ >= 7)
+#include <sys/sysctl.h>
+#endif
+
+
+/*
+ * Some systems have filesystem-based resources and interpret segment names
+ * as file paths. The so-called 'portable' "/name" format does not work well
+ * for them. And, according to Boost::interprocess, recent FreeBSD versions
+ * make this decision depending on whether the shm_open() caller is jailed!
+ */
+bool
+shm_portable_segment_name_is_path()
+{
+#if _SQUID_HPUX_ || _SQUID_OSF_ || defined(__vms) || (_SQUID_FREEBSD_ && (__FreeBSD__ < 7))
+    return true;
+#elif _SQUID_FREEBSD_
+    int jailed = 0;
+    size_t len = sizeof(jailed);
+    ::sysctlbyname("security.jail.jailed", &jailed, &len, NULL, 0);
+    return !jailed;
+#else
+    return false;
+#endif
+}
diff -u -r -N squid-3.2.0.13/compat/shm.h squid-3.2.0.14/compat/shm.h
--- squid-3.2.0.13/compat/shm.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/compat/shm.h	2011-12-13 00:08:18.000000000 +1300
@@ -42,4 +42,8 @@
 
 #endif /* HAVE_SHM */
 
+
+/// Determines whether segment names are iterpreted as full file paths.
+bool shm_portable_segment_name_is_path();
+
 #endif /* SQUID_COMPAT_CPU_H */
diff -u -r -N squid-3.2.0.13/compat/stdvarargs.h squid-3.2.0.14/compat/stdvarargs.h
--- squid-3.2.0.13/compat/stdvarargs.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/compat/stdvarargs.h	2011-12-13 00:08:18.000000000 +1300
@@ -3,28 +3,35 @@
 
 /*
  * va_* variables come from various places on different platforms.
- * We provide a clean set of wrappers for the variosu operations
+ * We provide a clean set of wrappers for the various operations
  * Depending on what is available and needed.
  */
-#if defined(HAVE_STDARG_H)
+#if HAVE_CSTDARG && defined(__cplusplus)
+#include <cstdarg>
+
+#else
+#if HAVE_STDARG_H
 #include <stdarg.h>
 #define HAVE_STDARGS            /* let's hope that works everywhere (mj) */
 #define VA_LOCAL_DECL va_list ap;
 #define VA_START(f) va_start(ap, f)
 #define VA_SHIFT(v,t) ;         /* no-op for ANSI */
 #define VA_END va_end(ap)
+
 #else
-#if defined(HAVE_VARARGS_H)
+#if HAVE_VARARGS_H
 #include <varargs.h>
 #undef HAVE_STDARGS
 #define VA_LOCAL_DECL va_list ap;
 #define VA_START(f) va_start(ap)        /* f is ignored! */
 #define VA_SHIFT(v,t) v = va_arg(ap,t)
 #define VA_END va_end(ap)
+
 #else
 #error XX **NO VARARGS ** XX
-#endif
-#endif
+#endif /* HAVE_VARARGS_H */
+#endif /* HAVE_STDARG_H */
+#endif /* HAVE_CSTDARG */
 
 /* Make sure syslog goes after stdarg/varargs */
 #if HAVE_SYSLOG_H
diff -u -r -N squid-3.2.0.13/compat/strnrchr.c squid-3.2.0.14/compat/strnrchr.c
--- squid-3.2.0.13/compat/strnrchr.c	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/compat/strnrchr.c	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,46 @@
+/*
+ * strnrchr.c
+ *
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ */
+
+#include "config.h"
+#include "strnrchr.h"
+
+const char *
+strnrchr(const char *s, size_t count, int c)
+{
+    const char *rv=NULL;
+    const char *l=s;
+    while (count > 0 && *l != 0) {
+        if (*l==c)
+            rv=l;
+        ++l;
+        --count;
+    }
+    return rv;
+}
diff -u -r -N squid-3.2.0.13/compat/strnrchr.h squid-3.2.0.14/compat/strnrchr.h
--- squid-3.2.0.13/compat/strnrchr.h	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/compat/strnrchr.h	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,46 @@
+/*
+ * strnrchr.h
+ *
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ */
+
+#ifndef COMPAT_STRNRCHR_H_
+#define COMPAT_STRNRCHR_H_
+
+#if HAVE_STDDEF_H
+#include <stddef.h>
+#endif
+
+/**
+ * look for the last occurrence of a character in a c-string.
+ *
+ * Scanning starts at the beginning of the c-string, and ends
+ * after count bytes or at the end of the c-string, whichever happens first
+ */
+SQUIDCEXTERN const char *strnrchr(const char *s, size_t count, int c);
+
+#endif /* COMPAT_STRNRCHR_H_ */
diff -u -r -N squid-3.2.0.13/compat/strnstr.cc squid-3.2.0.14/compat/strnstr.cc
--- squid-3.2.0.13/compat/strnstr.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/compat/strnstr.cc	2011-12-13 00:08:18.000000000 +1300
@@ -1,5 +1,5 @@
-#ifndef _SQUID_COMPAT_STRNSTR_CC_
-#define _SQUID_COMPAT_STRNSTR_CC_
+#ifndef SQUID_COMPAT_STRNSTR_CC_
+#define SQUID_COMPAT_STRNSTR_CC_
 
 /*
  *  Shamelessly duplicated from the FreeBSD public sources
@@ -93,4 +93,4 @@
 }
 
 #endif /* !HAVE_STRNSTR */
-#endif /* _SQUID_COMPAT_STRNSTR_CC_ */
+#endif /* SQUID_COMPAT_STRNSTR_CC_ */
diff -u -r -N squid-3.2.0.13/compat/xstring.h squid-3.2.0.14/compat/xstring.h
--- squid-3.2.0.13/compat/xstring.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/compat/xstring.h	2011-12-13 00:08:18.000000000 +1300
@@ -1,5 +1,5 @@
-#ifndef _SQUID_COMPAT_XSTRING_H
-#define _SQUID_COMPAT_XSTRING_H
+#ifndef SQUID_COMPAT_XSTRING_H
+#define SQUID_COMPAT_XSTRING_H
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -54,4 +54,4 @@
 }
 #endif
 
-#endif /* _SQUID_COMPAT_XSTRING_H */
+#endif /* SQUID_COMPAT_XSTRING_H */
diff -u -r -N squid-3.2.0.13/compat/xstrto.cc squid-3.2.0.14/compat/xstrto.cc
--- squid-3.2.0.13/compat/xstrto.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/compat/xstrto.cc	2011-12-13 00:08:18.000000000 +1300
@@ -1,5 +1,5 @@
-#ifndef _SQUID_XSTRTO_C_
-#define _SQUID_XSTRTO_C_
+#ifndef SQUID_XSTRTO_C_
+#define SQUID_XSTRTO_C_
 
 /*
  *  Shamelessly duplicated from the netfilter iptables sources
@@ -92,4 +92,4 @@
     return ret;
 }
 
-#endif /* _SQUID_XSTRTO_C_ */
+#endif /* SQUID_XSTRTO_C_ */
diff -u -r -N squid-3.2.0.13/configure squid-3.2.0.14/configure
--- squid-3.2.0.13/configure	2011-10-14 14:49:52.000000000 +1300
+++ squid-3.2.0.14/configure	2011-12-13 00:11:47.000000000 +1300
@@ -1,7 +1,7 @@
 #! /bin/sh
 # From configure.ac Revision.
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for Squid Web Proxy 3.2.0.13.
+# Generated by GNU Autoconf 2.68 for Squid Web Proxy 3.2.0.14.
 #
 # Report bugs to <http://www.squid-cache.org/bugs/>.
 #
@@ -575,8 +575,8 @@
 # Identity of this package.
 PACKAGE_NAME='Squid Web Proxy'
 PACKAGE_TARNAME='squid'
-PACKAGE_VERSION='3.2.0.13'
-PACKAGE_STRING='Squid Web Proxy 3.2.0.13'
+PACKAGE_VERSION='3.2.0.14'
+PACKAGE_STRING='Squid Web Proxy 3.2.0.14'
 PACKAGE_BUGREPORT='http://www.squid-cache.org/bugs/'
 PACKAGE_URL=''
 
@@ -1570,7 +1570,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures Squid Web Proxy 3.2.0.13 to adapt to many kinds of systems.
+\`configure' configures Squid Web Proxy 3.2.0.14 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1640,7 +1640,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Squid Web Proxy 3.2.0.13:";;
+     short | recursive ) echo "Configuration of Squid Web Proxy 3.2.0.14:";;
    esac
   cat <<\_ACEOF
 
@@ -2018,7 +2018,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Squid Web Proxy configure 3.2.0.13
+Squid Web Proxy configure 3.2.0.14
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -3114,7 +3114,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Squid Web Proxy $as_me 3.2.0.13, which was
+It was created by Squid Web Proxy $as_me 3.2.0.14, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -3933,7 +3933,7 @@
 
 # Define the identity of the package.
  PACKAGE='squid'
- VERSION='3.2.0.13'
+ VERSION='3.2.0.14'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4120,11 +4120,6 @@
 #
 
 
-# check if the c++ compiler supports the -fhuge-objects flag
-# sets the variable squid_cv_cxx_arg_fhugeobjects to either "yes" or "no"
-#
-
-
 # detect what kind of compiler we're using, either by using hints from
 # autoconf itself, or by using predefined preprocessor macros
 # sets the variable squid_cv_compiler to one of
@@ -7194,7 +7189,8 @@
 
 
 
-# Extract the first word of "ar", so it can be a program name with args.
+if test "x$AR" = "x"; then
+  # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
@@ -7235,6 +7231,7 @@
 fi
 
 
+fi
 AR_R="$AR r"
 
 
@@ -18478,64 +18475,6 @@
   SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cxx_option_werror"
 fi
 
-
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-  if test "$GCC" = "yes"; then
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler accepts -Werror -fhuge-objects" >&5
-$as_echo_n "checking whether compiler accepts -Werror -fhuge-objects... " >&6; }
-if ${squid_cv_cxx_arg_fhugeobjects+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  {
-
-    SAVED_FLAGS="$CFLAGS"
-    SAVED_CXXFLAGS="$CXXFLAGS"
-    CFLAGS="$CXXFLAGS -Werror -fhuge-objects"
-    CXXFLAGS="$CXXFLAGS -Werror -fhuge-objects"
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-int foo;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  squid_cv_cxx_arg_fhugeobjects=yes
-else
-  squid_cv_cxx_arg_fhugeobjects=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    CFLAGS="$SAVED_CFLAGS"
-    CXXFLAGS="$SAVED_CXXFLAGS"
-  }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $squid_cv_cxx_arg_fhugeobjects" >&5
-$as_echo "$squid_cv_cxx_arg_fhugeobjects" >&6; }
-
-  else
-    squid_cv_cxx_arg_fhugeobjects=no
-  fi
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-if test "x$squid_cv_cxx_arg_fhugeobjects" = "xyes"; then
-  SQUID_CXXFLAGS="$SQUID_CXXFLAGS -fhuge-objects"
-fi
 # squid_cv_cc_arg_pipe is set by SQUID_CC_GUESS_OPTIONS
 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cc_arg_pipe"
 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_arg_pipe"
@@ -19594,6 +19533,7 @@
 	  "x$squid_disk_module_candidates_Blocking" != "xyes"; then
 	  as_fn_error $? "Storage module Rock requires IpcIo or Blocking DiskIO module" "$LINENO" 5
 	fi
+	STORE_TESTS="$STORE_TESTS tests/testRock$EXEEXT"
 	;;
     ufs)
       STORE_TESTS="$STORE_TESTS tests/testUfs$EXEEXT"
@@ -19862,8 +19802,13 @@
   XMLLIB="-lxml2"; HAVE_LIBXML2=1
 fi
 
-    ac_cv_libxml2_include='no'
-  for ac_header in libxml/parser.h
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking location of libxml2 include files" >&5
+$as_echo_n "checking location of libxml2 include files... " >&6; }
+if ${ac_cv_libxml2_include+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    for ac_header in libxml/parser.h
 do :
   ac_fn_cxx_check_header_mongrel "$LINENO" "libxml/parser.h" "ac_cv_header_libxml_parser_h" "$ac_includes_default"
 if test "x$ac_cv_header_libxml_parser_h" = xyes; then :
@@ -19885,42 +19830,50 @@
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBXML_PARSER_H 1
 _ACEOF
- ac_cv_libxml2_include="/usr/include/libxml2"
-fi
-
-done
+ ac_cv_libxml2_include="-I/usr/include/libxml2"
+else
 
-      CPPFLAGS="$SAVED_CPPFLAGS"
-      if test "x$ac_cv_libxml2_include" = "xno"; then
-          { $as_echo "$as_me:${as_lineno-$LINENO}: Testing in /usr/local/include/libxml2" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Testing in /usr/local/include/libxml2" >&5
 $as_echo "$as_me: Testing in /usr/local/include/libxml2" >&6;}
-          SAVED_CPPFLAGS="$CPPFLAGS"
-          CPPFLAGS="-I/usr/local/include/libxml2 $CPPFLAGS"
-          unset ac_cv_header_libxml_parser_h
-          for ac_header in libxml/parser.h
+        CPPFLAGS="-I/usr/local/include/libxml2 $SAVED_CPPFLAGS"
+        unset ac_cv_header_libxml_parser_h
+        for ac_header in libxml/parser.h
 do :
   ac_fn_cxx_check_header_mongrel "$LINENO" "libxml/parser.h" "ac_cv_header_libxml_parser_h" "$ac_includes_default"
 if test "x$ac_cv_header_libxml_parser_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBXML_PARSER_H 1
 _ACEOF
- ac_cv_libxml2_include="/usr/local/include/libxml2"
+ ac_cv_libxml2_include="-I/usr/local/include/libxml2"
+else
+
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find libxml2 header file libxml/parser.h" >&5
+$as_echo "$as_me: Failed to find libxml2 header file libxml/parser.h" >&6;}
+
 fi
 
 done
 
-          CPPFLAGS="$SAVED_CPPFLAGS"
-      fi
 
 fi
 
 done
 
-  if test "x$ac_cv_libxml2_include" != "xno"; then
-      SQUID_CXXFLAGS="-I$ac_cv_libxml2_include $SQUID_CXXFLAGS"
-      CPPFLAGS="-I$ac_cv_libxml2_include $CPPFLAGS"
+      CPPFLAGS="$SAVED_CPPFLAGS"
+
+fi
+
+done
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libxml2_include" >&5
+$as_echo "$ac_cv_libxml2_include" >&6; }
+  if test "x$ac_cv_libxml2_include" != "x"; then
+      SQUID_CXXFLAGS="$ac_cv_libxml2_include $SQUID_CXXFLAGS"
+      CPPFLAGS="$ac_cv_libxml2_include $CPPFLAGS"
   fi
-    for ac_header in libxml/HTMLparser.h libxml/HTMLtree.h
+    for ac_header in libxml/parser.h libxml/HTMLparser.h libxml/HTMLtree.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -24051,6 +24004,7 @@
   bstring.h \
   cassert \
   crypt.h \
+  cstdarg \
   cstdlib \
   cstring \
   list \
@@ -30678,7 +30632,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Squid Web Proxy $as_me 3.2.0.13, which was
+This file was extended by Squid Web Proxy $as_me 3.2.0.14, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -30744,7 +30698,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-Squid Web Proxy config.status 3.2.0.13
+Squid Web Proxy config.status 3.2.0.14
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
diff -u -r -N squid-3.2.0.13/configure.ac squid-3.2.0.14/configure.ac
--- squid-3.2.0.13/configure.ac	2011-10-14 14:49:52.000000000 +1300
+++ squid-3.2.0.14/configure.ac	2011-12-13 00:11:46.000000000 +1300
@@ -3,7 +3,7 @@
 dnl
 dnl
 dnl
-AC_INIT([Squid Web Proxy],[3.2.0.13],[http://www.squid-cache.org/bugs/],[squid])
+AC_INIT([Squid Web Proxy],[3.2.0.14],[http://www.squid-cache.org/bugs/],[squid])
 AC_PREREQ(2.61)
 AC_CONFIG_HEADERS([include/autoconf.h])
 AC_CONFIG_AUX_DIR(cfgaux)
@@ -86,8 +86,10 @@
 fi
 AC_PATH_PROG(POD2MAN, pod2man, $FALSE)
 
-dnl set $(AR)
-AC_PATH_PROG(AR, ar, $FALSE)
+dnl set $(AR) if not provided by the build environment
+if test "x$AR" = "x"; then
+  AC_PATH_PROG(AR, ar, $FALSE)
+fi
 AR_R="$AR r"
 AC_SUBST(AR_R)
 
@@ -319,10 +321,6 @@
   SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cxx_option_werror"
 fi
 
-SQUID_CXX_CHECK_ARG_FHUGEOBJECTS
-if test "x$squid_cv_cxx_arg_fhugeobjects" = "xyes"; then
-  SQUID_CXXFLAGS="$SQUID_CXXFLAGS -fhuge-objects"
-fi
 # squid_cv_cc_arg_pipe is set by SQUID_CC_GUESS_OPTIONS
 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cc_arg_pipe"
 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_arg_pipe"
@@ -777,6 +775,7 @@
 	  "x$squid_disk_module_candidates_Blocking" != "xyes"; then
 	  AC_MSG_ERROR([Storage module Rock requires IpcIo or Blocking DiskIO module])
 	fi
+	STORE_TESTS="$STORE_TESTS tests/testRock$EXEEXT"
 	;;
     ufs)
       STORE_TESTS="$STORE_TESTS tests/testUfs$EXEEXT"
@@ -901,29 +900,29 @@
 if test "x$squid_opt_use_esi" = "xyes" -a "x$with_libxml2" != "xno" ; then
   AC_CHECK_LIB([xml2], [main], [XMLLIB="-lxml2"; HAVE_LIBXML2=1])
   dnl Find the main header and include path...
-  ac_cv_libxml2_include='no'
-  AC_CHECK_HEADERS([libxml/parser.h], [], [
+  AC_CACHE_CHECK([location of libxml2 include files], [ac_cv_libxml2_include], [
+    AC_CHECK_HEADERS([libxml/parser.h], [], [
       AC_MSG_NOTICE([Testing in /usr/include/libxml2])
       SAVED_CPPFLAGS="$CPPFLAGS"
       CPPFLAGS="-I/usr/include/libxml2 $CPPFLAGS"
       unset ac_cv_header_libxml_parser_h
-      AC_CHECK_HEADERS([libxml/parser.h], [ac_cv_libxml2_include="/usr/include/libxml2"], [])
-      CPPFLAGS="$SAVED_CPPFLAGS"
-      if test "x$ac_cv_libxml2_include" = "xno"; then
-          AC_MSG_NOTICE([Testing in /usr/local/include/libxml2])
-          SAVED_CPPFLAGS="$CPPFLAGS"
-          CPPFLAGS="-I/usr/local/include/libxml2 $CPPFLAGS"
-          unset ac_cv_header_libxml_parser_h
-          AC_CHECK_HEADERS([libxml/parser.h], [ac_cv_libxml2_include="/usr/local/include/libxml2"], [])
-          CPPFLAGS="$SAVED_CPPFLAGS"
-      fi
+      AC_CHECK_HEADERS([libxml/parser.h], [ac_cv_libxml2_include="-I/usr/include/libxml2"], [
+        AC_MSG_NOTICE([Testing in /usr/local/include/libxml2])
+        CPPFLAGS="-I/usr/local/include/libxml2 $SAVED_CPPFLAGS"
+        unset ac_cv_header_libxml_parser_h
+        AC_CHECK_HEADERS([libxml/parser.h], [ac_cv_libxml2_include="-I/usr/local/include/libxml2"], [
+          AC_MSG_NOTICE([Failed to find libxml2 header file libxml/parser.h])
+        ])
       ])
-  if test "x$ac_cv_libxml2_include" != "xno"; then
-      SQUID_CXXFLAGS="-I$ac_cv_libxml2_include $SQUID_CXXFLAGS"
-      CPPFLAGS="-I$ac_cv_libxml2_include $CPPFLAGS"
+      CPPFLAGS="$SAVED_CPPFLAGS"
+    ])
+  ])
+  if test "x$ac_cv_libxml2_include" != "x"; then
+      SQUID_CXXFLAGS="$ac_cv_libxml2_include $SQUID_CXXFLAGS"
+      CPPFLAGS="$ac_cv_libxml2_include $CPPFLAGS"
   fi
-  dnl Now that we know where to look find the other headers...
-  AC_CHECK_HEADERS(libxml/HTMLparser.h libxml/HTMLtree.h)
+  dnl Now that we know where to look find the headers...
+  AC_CHECK_HEADERS(libxml/parser.h libxml/HTMLparser.h libxml/HTMLtree.h)
   AC_DEFINE_UNQUOTED(HAVE_LIBXML2, $HAVE_LIBXML2, [Define to 1 if you have the libxml2 library])
   if test "x$with_libxml2" = "xyes" -a "$HAVE_LIBXML2" != "1" ; then
     AC_MSG_ERROR([Required library libxml2 is not able to be found.])
@@ -2278,6 +2277,7 @@
   bstring.h \
   cassert \
   crypt.h \
+  cstdarg \
   cstdlib \
   cstring \
   list \
diff -u -r -N squid-3.2.0.13/CREDITS squid-3.2.0.14/CREDITS
--- squid-3.2.0.13/CREDITS	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/CREDITS	2011-12-13 00:08:18.000000000 +1300
@@ -559,3 +559,36 @@
     documentation for the software which includes the set or a subset
     of the icons contained within. 
 
+==============================================================================
+
+shm_portable_segment_name_is_path() implementation:
+
+  Derived from boost/interprocess/shared_memory_object.hpp and
+      boost/interprocess/detail/workaround.hpp at http://www.boost.org/
+
+  (C) Copyright Ion Gaztanaga 2005-2009.
+  Distributed under the Boost Software License, Version 1.0
+
+  Boost Software License - Version 1.0 - August 17th, 2003
+
+  Permission is hereby granted, free of charge, to any person or organization
+  obtaining a copy of the software and accompanying documentation covered by
+  this license (the "Software") to use, reproduce, display, distribute,
+  execute, and transmit the Software, and to prepare derivative works of the
+  Software, and to permit third-parties to whom the Software is furnished to
+  do so, all subject to the following:
+
+  The copyright notices in the Software and this entire statement, including
+  the above license grant, this restriction and the following disclaimer,
+  must be included in all copies of the Software, in whole or in part, and
+  all derivative works of the Software, unless such copies or derivative
+  works are solely in the form of machine-executable object code generated by
+  a source language processor.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+  SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+  FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  DEALINGS IN THE SOFTWARE.
diff -u -r -N squid-3.2.0.13/doc/debug-sections.txt squid-3.2.0.14/doc/debug-sections.txt
--- squid-3.2.0.13/doc/debug-sections.txt	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/doc/debug-sections.txt	2011-12-13 00:08:18.000000000 +1300
@@ -41,6 +41,7 @@
 section 20    Storage Manager Heap-based replacement
 section 20    Storage Manager Logging Functions
 section 20    Storage Manager MD5 Cache Keys
+section 20    Storage Manager Statistics
 section 20    Storage Manager Swapfile Metadata
 section 20    Storage Manager Swapfile Unpacker
 section 20    Storage Manager Swapin Functions
@@ -112,7 +113,6 @@
 section 66    HTTP Header Tools
 section 67    String
 section 68    HTTP Content-Range Header
-section 69    HTTP Header: Extension Field
 section 70    Cache Digest
 section 71    Store Digest Manager
 section 72    Peer Digest Routines
diff -u -r -N squid-3.2.0.13/errors/af/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/af/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/af/ERR_CANNOT_FORWARD	2011-10-14 14:59:34.000000000 +1300
+++ squid-3.2.0.14/errors/af/ERR_CANNOT_FORWARD	2011-12-13 00:16:33.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FOUT: Die aangevraagde URL kon nie verkry word nie</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Die volgende fout is teëgekom tydens verkryging van die URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Kan nie dié versoek nou aanstuur nie</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Die kasbediener se administrateur is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Gegenereer op %T deur %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FOUT: Die aangevraagde URL kon nie verkry word nie</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Die volgende fout is teëgekom tydens verkryging van die URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Kan nie dié versoek nou aanstuur nie</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Enkele moontlike probleme is:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Die kasbediener se administrateur is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Gegenereer op %T deur %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/af/error-details.txt squid-3.2.0.14/errors/af/error-details.txt
--- squid-3.2.0.13/errors/af/error-details.txt	2011-10-14 15:01:29.000000000 +1300
+++ squid-3.2.0.14/errors/af/error-details.txt	2011-12-13 00:17:44.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/ar/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/ar/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/ar/ERR_CANNOT_FORWARD	2011-10-14 15:01:57.000000000 +1300
+++ squid-3.2.0.14/errors/ar/ERR_CANNOT_FORWARD	2011-12-13 00:17:55.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>خطأ: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>خطأ: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/ar/error-details.txt squid-3.2.0.14/errors/ar/error-details.txt
--- squid-3.2.0.13/errors/ar/error-details.txt	2011-10-14 15:04:09.000000000 +1300
+++ squid-3.2.0.14/errors/ar/error-details.txt	2011-12-13 00:19:02.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/az/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/az/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/az/ERR_CANNOT_FORWARD	2011-10-14 15:04:35.000000000 +1300
+++ squid-3.2.0.14/errors/az/ERR_CANNOT_FORWARD	2011-12-13 00:19:17.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>SƏHV: Sorğulanan URL ilə əlaqə yaradılmadı</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Hal-hazırda sorğunuzu yönlədirmək mümkün deyildir.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>SƏHV: Sorğulanan URL ilə əlaqə yaradılmadı</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Hal-hazırda sorğunuzu yönlədirmək mümkün deyildir.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Mümkün probleml�^�rd�^�n b�^�zil�^�ri:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/az/error-details.txt squid-3.2.0.14/errors/az/error-details.txt
--- squid-3.2.0.13/errors/az/error-details.txt	2011-10-14 15:06:24.000000000 +1300
+++ squid-3.2.0.14/errors/az/error-details.txt	2011-12-13 00:20:58.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/bg/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/bg/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/bg/ERR_CANNOT_FORWARD	2011-10-14 15:06:43.000000000 +1300
+++ squid-3.2.0.14/errors/bg/ERR_CANNOT_FORWARD	2011-12-13 00:21:20.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ГРЕШКА: Заявеният адрес е недостъпен.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Възникна следната грешка при опит за достъп до: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Заявката не може да бъде пренасочена в този момент.</b></p> </blockquote>  <p>Заявката не може да бъде пренасочена към сървъра източник или към някой от висшестоящите кеш сървъри.  Най-вероятно причината за тази грешка е, че администратора не позволява директни обръщения към сървъра източник, и всички кеш сървъри от по-горно ниво в момента са недостъпни.</p>  <p>Вашият кеш администратор е <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Генерирано на %T от %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ГРЕШКА: Заявеният адрес е недостъпен.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Възникна следната грешка при опит за достъп до: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Заявката не може да бъде пренасочена в този момент.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Възможни грешки:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Вашият кеш администратор е <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Генерирано на %T от %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/bg/error-details.txt squid-3.2.0.14/errors/bg/error-details.txt
--- squid-3.2.0.13/errors/bg/error-details.txt	2011-10-14 15:08:37.000000000 +1300
+++ squid-3.2.0.14/errors/bg/error-details.txt	2011-12-13 00:22:57.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/ca/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/ca/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/ca/ERR_CANNOT_FORWARD	2011-10-14 15:08:55.000000000 +1300
+++ squid-3.2.0.14/errors/ca/ERR_CANNOT_FORWARD	2011-12-13 00:23:11.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: No es pot mostrar la URL que heu sol.licitat</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>No es pot mostrar la URL que heu sol.licitat</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>No ha estat possible de reenviar aquesta petici&oacute;.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>L'administrador d'aquesta cache &eacute;s <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: No es pot mostrar la URL que heu sol.licitat</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>No es pot mostrar la URL que heu sol.licitat</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>No ha estat possible de reenviar aquesta petici&oacute;.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>L'administrador d'aquesta cache &eacute;s <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/ca/error-details.txt squid-3.2.0.14/errors/ca/error-details.txt
--- squid-3.2.0.13/errors/ca/error-details.txt	2011-10-14 15:10:25.000000000 +1300
+++ squid-3.2.0.14/errors/ca/error-details.txt	2011-12-13 00:24:31.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/cs/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/cs/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/cs/ERR_CANNOT_FORWARD	2011-10-14 15:10:40.000000000 +1300
+++ squid-3.2.0.14/errors/cs/ERR_CANNOT_FORWARD	2011-12-13 00:24:43.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>CHYBA: Požadovaný dokument je nedostupný</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>CHYBA: Požadovaný dokument je nedostupný</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/cs/error-details.txt squid-3.2.0.14/errors/cs/error-details.txt
--- squid-3.2.0.13/errors/cs/error-details.txt	2011-10-14 15:12:14.000000000 +1300
+++ squid-3.2.0.14/errors/cs/error-details.txt	2011-12-13 00:25:59.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/da/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/da/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/da/ERR_CANNOT_FORWARD	2011-10-14 15:12:28.000000000 +1300
+++ squid-3.2.0.14/errors/da/ERR_CANNOT_FORWARD	2011-12-13 00:26:15.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FEJL: Den angivne URL kunne ikke hentes</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Kunne ikke vidersende foresp&oslash;rgslen.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FEJL: Den angivne URL kunne ikke hentes</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Kunne ikke vidersende foresp&oslash;rgslen.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Mulige problemer kan v&aelig;re:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/da/error-details.txt squid-3.2.0.14/errors/da/error-details.txt
--- squid-3.2.0.13/errors/da/error-details.txt	2011-10-14 15:13:41.000000000 +1300
+++ squid-3.2.0.14/errors/da/error-details.txt	2011-12-13 00:27:27.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/de/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/de/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/de/ERR_CANNOT_FORWARD	2011-10-14 15:13:54.000000000 +1300
+++ squid-3.2.0.14/errors/de/ERR_CANNOT_FORWARD	2011-12-13 00:27:40.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FEHLER: Die angeforderte URL konnte nicht gefunden werden</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Der folgende Fehler wurde beim Versuch die URL <a href="%U">%U</a> zu holen festgestellt:</p>  <blockquote id="error"> <p><b>Kann die Anfrage zurzeit nicht weiterleiten.</b></p> </blockquote>  <p>Die Anfrage kann nicht an den Quellserver oder irgendeinen vorgeschalteten Cache weitergeleitet werden. Der wahrscheinlichste Grund ist, dass der Administrator diesem Cache nicht erlaubt direkte Verbindungen zu Quellservern herzustellen oder alle vorgeschalteten Cache Server momentan nicht erreichbar sind.</p>  <p>Ihr Cache Administrator ist <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Erzeugt am %T von %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FEHLER: Die angeforderte URL konnte nicht gefunden werden</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Der folgende Fehler wurde beim Versuch die URL <a href="%U">%U</a> zu holen festgestellt:</p>  <blockquote id="error"> <p><b>Kann die Anfrage zurzeit nicht weiterleiten.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Mögliche Probleme sind:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Ihr Cache Administrator ist <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Erzeugt am %T von %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/de/error-details.txt squid-3.2.0.14/errors/de/error-details.txt
--- squid-3.2.0.13/errors/de/error-details.txt	2011-10-14 15:15:15.000000000 +1300
+++ squid-3.2.0.14/errors/de/error-details.txt	2011-12-13 00:29:05.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/el/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/el/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/el/ERR_CANNOT_FORWARD	2011-10-14 15:15:33.000000000 +1300
+++ squid-3.2.0.14/errors/el/ERR_CANNOT_FORWARD	2011-12-13 00:29:19.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ΣΦΑΛΜΑ: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Αδύνατη η προώθηση της αιτήσεως σας αυτή τη στιγμή.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Ο διαχειριστής του μεσολαβητή σας είναι ο <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ΣΦΑΛΜΑ: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Αδύνατη η προώθηση της αιτήσεως σας αυτή τη στιγμή.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Ο διαχειριστής του μεσολαβητή σας είναι ο <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/el/error-details.txt squid-3.2.0.14/errors/el/error-details.txt
--- squid-3.2.0.13/errors/el/error-details.txt	2011-10-14 15:17:23.000000000 +1300
+++ squid-3.2.0.14/errors/el/error-details.txt	2011-12-13 00:30:40.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/en/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/en/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/en/ERR_CANNOT_FORWARD	2011-10-14 15:17:36.000000000 +1300
+++ squid-3.2.0.14/errors/en/ERR_CANNOT_FORWARD	2011-12-13 00:30:53.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/en/error-details.txt squid-3.2.0.14/errors/en/error-details.txt
--- squid-3.2.0.13/errors/en/error-details.txt	2011-10-14 15:18:42.000000000 +1300
+++ squid-3.2.0.14/errors/en/error-details.txt	2011-12-13 00:32:18.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/es/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/es/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/es/ERR_CANNOT_FORWARD	2011-10-14 15:18:59.000000000 +1300
+++ squid-3.2.0.14/errors/es/ERR_CANNOT_FORWARD	2011-12-13 00:32:34.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: El URL solicitado no se ha podido conseguir</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>El URL solicitado no se ha podido conseguir</h2> </div> <hr>  <div id="content"> <p>Se encontró el siguiente error al intentar recuperar la dirección URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Imposibilidad de enviar la petici&oacute;n en este momento.</b></p> </blockquote>  <p>Esta solicitud no ha podido comunicarse con el servidor de origen o de alguna de los cachés padres. La causa más probable de este error es que el administrador de caché no permite que este caché realice conexiones directas a los servidores de origen, y todos los cachés configurados como padres son inalcanzables en este momento.</p>  <p>Su administrador del cach&eacute; es <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generado %T por %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: El URL solicitado no se ha podido conseguir</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>El URL solicitado no se ha podido conseguir</h2> </div> <hr>  <div id="content"> <p>Se encontró el siguiente error al intentar recuperar la dirección URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Imposibilidad de enviar la petici&oacute;n en este momento.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Algunos posibles problemas son:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Su administrador del cach&eacute; es <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generado %T por %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/es/error-details.txt squid-3.2.0.14/errors/es/error-details.txt
--- squid-3.2.0.13/errors/es/error-details.txt	2011-10-14 15:20:44.000000000 +1300
+++ squid-3.2.0.14/errors/es/error-details.txt	2011-12-13 00:34:02.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/et/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/et/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/et/ERR_CANNOT_FORWARD	2011-10-14 15:21:00.000000000 +1300
+++ squid-3.2.0.14/errors/et/ERR_CANNOT_FORWARD	2011-12-13 00:34:13.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>VIGA: P&auml;ring URLile ei saa vastust</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>P&auml;ringu edastamine eba&otilde;nnestus.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Teie teenusepakkuja aadress on <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>VIGA: P&auml;ring URLile ei saa vastust</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>P&auml;ringu edastamine eba&otilde;nnestus.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Teie teenusepakkuja aadress on <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/et/error-details.txt squid-3.2.0.14/errors/et/error-details.txt
--- squid-3.2.0.13/errors/et/error-details.txt	2011-10-14 15:22:55.000000000 +1300
+++ squid-3.2.0.14/errors/et/error-details.txt	2011-12-13 00:35:26.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/fa/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/fa/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/fa/ERR_CANNOT_FORWARD	2011-10-14 15:23:12.000000000 +1300
+++ squid-3.2.0.14/errors/fa/ERR_CANNOT_FORWARD	2011-12-13 00:35:38.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>خطا: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>%T توسط %h(%s) تولید شد.</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>خطا: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>بعضی از مشکلات احتمالی:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>%T توسط %h(%s) تولید شد.</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fa/error-details.txt squid-3.2.0.14/errors/fa/error-details.txt
--- squid-3.2.0.13/errors/fa/error-details.txt	2011-10-14 15:24:44.000000000 +1300
+++ squid-3.2.0.14/errors/fa/error-details.txt	2011-12-13 00:37:00.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/fi/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/fi/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/fi/ERR_CANNOT_FORWARD	2011-10-14 15:25:00.000000000 +1300
+++ squid-3.2.0.14/errors/fi/ERR_CANNOT_FORWARD	2011-12-13 00:37:13.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>VIRHE: Pyydettyä URL-osoitetta ei voitu hakea</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Pyyntöä ei voitu edelleenohjata.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>VIRHE: Pyydettyä URL-osoitetta ei voitu hakea</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Pyyntöä ei voitu edelleenohjata.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Mahdollisia ongelmia:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fi/error-details.txt squid-3.2.0.14/errors/fi/error-details.txt
--- squid-3.2.0.13/errors/fi/error-details.txt	2011-10-14 15:26:48.000000000 +1300
+++ squid-3.2.0.14/errors/fi/error-details.txt	2011-12-13 00:38:35.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_ACCESS_DENIED squid-3.2.0.14/errors/fr/ERR_ACCESS_DENIED
--- squid-3.2.0.13/errors/fr/ERR_ACCESS_DENIED	2011-10-14 15:26:52.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_ACCESS_DENIED	2011-12-13 00:38:37.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Accès interdit.</b></p> </blockquote>  <p>La configuration du contrôle d'accès, empêche votre requête d'être acceptée. Si vous pensez que c'est une erreur, contactez votre fournisseur d'accès.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Accès interdit.</b></p> </blockquote>  <p>La configuration du contrôle d'accès, empêche votre requête d'être acceptée. Si vous pensez que c'est une erreur, contactez votre fournisseur d'accès.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_AGENT_CONFIGURE squid-3.2.0.14/errors/fr/ERR_AGENT_CONFIGURE
--- squid-3.2.0.13/errors/fr/ERR_AGENT_CONFIGURE	2011-10-14 15:26:57.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_AGENT_CONFIGURE	2011-12-13 00:38:39.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Configuration du navigateur Web</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERREUR</h1> <h2>Web Browser Configuration</h2> </div> <hr>  <div id="content"> <blockquote id="error"> <p>Vous devez corriger la configuration de votre navigateur Web, pour qu'il soit utilisé dans ce réseau</p> </blockquote>  <p>Comment trouver ces réglages dans votre navigateur :</p>  <div id="firefox"> Pour configurer Firefox, allez à : <ul> <li>Outils -&gt; Options -&gt; Avancé -&gt; Réseau -&gt; Paramètres de Connexion</li> <li>Vous devez indiquer dans la fenêtre du proxy HTTP, le nom du proxy %h et le port 3128</li> </ul> </div>  <div id="microsoft"> Pour configurer Internet Explorer, allez à : <ul> <li>Outils -&gt; Options Internet -&gt; Connexion -&gt; Paramètres LAN -&gt; Proxy</li> <li>In the HTTP proxy box type the proxy name %h and port %b.</li> </ul> </div>  <div id="opera"> Pour configurer Opéra, allez à : <ul> <li>Outils -&gt; Préférences -&gt; Avancé -&gt; Réseau -&gt; Serveur Proxy</li> <li>In the HTTP proxy box type the proxy name %h and port %b.</li> </ul> </div>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Configuration du navigateur Web</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERREUR</h1> <h2>Web Browser Configuration</h2> </div> <hr>  <div id="content"> <blockquote id="error"> <p>Vous devez corriger la configuration de votre navigateur Web, pour qu'il soit utilisé dans ce réseau</p> </blockquote>  <p>Comment trouver ces réglages dans votre navigateur :</p>  <div id="firefox"> Pour configurer Firefox, allez à : <ul> <li>Outils -&gt; Options -&gt; Avancé -&gt; Réseau -&gt; Paramètres de Connexion</li> <li>Vous devez indiquer dans la fenêtre du proxy HTTP, le nom du proxy %h et le port %b</li> </ul> </div>  <div id="microsoft"> Pour configurer Internet Explorer, allez à : <ul> <li>Outils -&gt; Options Internet -&gt; Connexion -&gt; Paramètres LAN -&gt; Proxy</li> <li>In the HTTP proxy box type the proxy name %h and port %b.</li> </ul> </div>  <div id="opera"> Pour configurer Opéra, allez à : <ul> <li>Outils -&gt; Préférences -&gt; Avancé -&gt; Réseau -&gt; Serveur Proxy</li> <li>In the HTTP proxy box type the proxy name %h and port %b.</li> </ul> </div>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_AGENT_WPAD squid-3.2.0.14/errors/fr/ERR_AGENT_WPAD
--- squid-3.2.0.13/errors/fr/ERR_AGENT_WPAD	2011-10-14 15:27:00.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_AGENT_WPAD	2011-12-13 00:38:41.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Configuration du navigateur Web</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERREUR</h1> <h2>Web Browser Configuration</h2> </div> <hr>  <div id="content"> <blockquote id="error"> <p>Vous devez corriger la configuration de votre navigateur Web, pour qu'il soit utilisé dans ce réseau</p> </blockquote>  <p>Comment trouver ces réglages dans votre navigateur :</p>  <div id="firefox"> Pour configurer Firefox, allez à : <ul> <li>Outils -&gt; Options -&gt; Avancé -&gt; Réseau -&gt; Paramètres de Connexion</li> <li>Sélectionnez détection automatique des paramètres de proxy pour ce réseau</li> </ul> </div>  <div id="microsoft"> Pour configurer Internet Explorer, allez à : <ul> <li>Outils -&gt; Options Internet -&gt; Connexion -&gt; Paramètres LAN -&gt; Proxy</li> <li>Sélectionnez la détection automatique des paramètres</li> </ul> </div>  <div id="opera"> Pour configurer Opéra, allez à : <ul> <li>Outils -&gt; Préférences -&gt; Avancé -&gt; Réseau -&gt; Serveur Proxy</li> <li>Utilisez la sélection automatique pour configurer le proxy</li> </ul> </div>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Configuration du navigateur Web</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERREUR</h1> <h2>Web Browser Configuration</h2> </div> <hr>  <div id="content"> <blockquote id="error"> <p>Vous devez corriger la configuration de votre navigateur Web, pour qu'il soit utilisé dans ce réseau</p> </blockquote>  <p>Comment trouver ces réglages dans votre navigateur :</p>  <div id="firefox"> Pour configurer Firefox, allez à : <ul> <li>Outils -&gt; Options -&gt; Avancé -&gt; Réseau -&gt; Paramètres de Connexion</li> <li>Sélectionnez détection automatique dans les paramètres du proxy pour ce réseau</li> </ul> </div>  <div id="microsoft"> Pour configurer Internet Explorer, allez à : <ul> <li>Outils -&gt; Options Internet -&gt; Connexion -&gt; Paramètres LAN -&gt; Proxy</li> <li>Sélectionnez le paramètre détection automatique</li> </ul> </div>  <div id="opera"> Pour configurer Opéra, allez à : <ul> <li>Outils -&gt; Préférences -&gt; Avancé -&gt; Réseau -&gt; Serveur Proxy</li> <li>Utilisez la sélection automatique pour configurer le proxy</li> </ul> </div>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_CACHE_ACCESS_DENIED squid-3.2.0.14/errors/fr/ERR_CACHE_ACCESS_DENIED
--- squid-3.2.0.13/errors/fr/ERR_CACHE_ACCESS_DENIED	2011-10-14 15:27:04.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_CACHE_ACCESS_DENIED	2011-12-13 00:38:43.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: Cache Access Denied</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>Cache Accès interdit.</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Accès au cache interdit.</b></p> </blockquote>  <p>Désolé, vous n'êtes pas autorisé à demander la requête %U de ce cache tant que vous ne vous serez pas identifié.</p>  <p>Please contact the <a href="mailto:%w%W">cache administrator</a> if you have difficulties authenticating yourself.</p>  <br> </div>  <hr>  <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: Cache Access Denied</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>Cache Accès interdit.</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Accès au cache interdit.</b></p> </blockquote>  <p>Désolé, vous n'êtes pas autorisé à demander la requête %U de ce cache tant que vous ne serez pas identifié.</p>  <p>Please contact the <a href="mailto:%w%W">cache administrator</a> if you have difficulties authenticating yourself.</p>  <br> </div>  <hr>  <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_CACHE_MGR_ACCESS_DENIED squid-3.2.0.14/errors/fr/ERR_CACHE_MGR_ACCESS_DENIED
--- squid-3.2.0.13/errors/fr/ERR_CACHE_MGR_ACCESS_DENIED	2011-10-14 15:27:08.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_CACHE_MGR_ACCESS_DENIED	2011-12-13 00:38:46.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: Cache Manager Access Denied</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>Cache Manager Accès interdit.</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Accès au Gestionnaire de Cache Interdit.</b></p> </blockquote>  <p>Désolé, vous n'êtes pas autorisé à demander la requête %U au travers du gestionnaire de cache tant que vous ne vous serez pas identifié.</p>  <p>S'il vous plait, contacter <a href="mailto:%w%W">l'administrateur du proxy</a> si vous avez des difficultés pour vous authentifier ou si vous <em>êtes</em> administrateur, lisez la documentation Squid de l'interface du gestionnaire de cache, vérifiez aussi les fichiers logs du gestionnaire cache pour analyser en détails les messages d'erreurs.</p>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: Cache Manager Access Denied</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>Cache Manager Accès interdit.</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Accès au Gestionnaire de Cache Interdit.</b></p> </blockquote>  <p>Désolé, vous n'êtes pas autorisé à demander la requête %U au travers du gestionnaire de cache tant que vous ne serez pas identifié.</p>  <p>S'il vous plait, contacter <a href="mailto:%w%W">l'administrateur du proxy</a> si vous avez des difficultés pour vous authentifier ou si vous <em>êtes</em> administrateur, lisez la documentation Squid de l'interface du gestionnaire de cache, vérifiez aussi les fichiers logs du gestionnaire cache pour analyser en détails les messages d'erreurs.</p>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/fr/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/fr/ERR_CANNOT_FORWARD	2011-10-14 15:27:12.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_CANNOT_FORWARD	2011-12-13 00:38:47.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>En ce moment, il est impossible de retransmettre cette requête.</b></p> </blockquote>  <p>Cette requête ne peut pas être transférée au serveur source ou à tous les proxy parent. La cause la plus probable est que l'administrateur du proxy a bloqué des connexions directes au serveur d'origine, et tous les proxy parents configurés sont actuellement inaccessibles.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>En ce moment, il est impossible de retransmettre cette requête.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Problèmes possibles :</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_CONNECT_FAIL squid-3.2.0.14/errors/fr/ERR_CONNECT_FAIL
--- squid-3.2.0.13/errors/fr/ERR_CONNECT_FAIL	2011-10-14 15:27:16.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_CONNECT_FAIL	2011-12-13 00:38:49.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" CONTENT="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>La connexion %I a échouée.</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>L'hôte distant ou le réseau sont peut-être défaillant. Veuillez renouveler votre requête.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" CONTENT="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>La connexion %I a échouée.</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>L'hôte distant ou le réseau sont peut-être défaillant. Veuillez renouveler votre requête.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_DIR_LISTING squid-3.2.0.14/errors/fr/ERR_DIR_LISTING
--- squid-3.2.0.13/errors/fr/ERR_DIR_LISTING	2011-10-14 15:27:20.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_DIR_LISTING	2011-12-13 00:38:51.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Répertoire : %U</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h2>Répertoire : <a href="%U">%U</a>/</h2> </div> <hr>  <div id="content"> <h4>Contenu du Répertoire :</h4>  <blockquote id="data"> <pre id="dirmsg">%z</pre> </blockquote>  <table id="dirlisting" summary="Liste du répertoire"> <tr> <th><a href="../"><img border="0" src="/squid-internal-static/icons/silk/arrow_up.png" alt=""></a></th> <th nowrap="nowrap"><a href="../">Répertoire Parent</a> (<a href="/">Répertoire Racine</a>)</th> </tr>  %g  </table> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Répertoire : %U</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h2>Répertoire : <a href="%U">%U</a>/</h2> </div> <hr>  <div id="content"> <h4>Contenu du Répertoire :</h4>  <blockquote id="data"> <pre id="dirmsg">%z</pre> </blockquote>  <table id="dirlisting" summary="Liste du répertoire"> <tr> <th><a href="../"><img border="0" src="/squid-internal-static/icons/silk/arrow_up.png" alt=""></a></th> <th nowrap="nowrap"><a href="../">Répertoire Parent</a> (<a href="/">Répertoire Racine</a>)</th> </tr>  %g  </table> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_DNS_FAIL squid-3.2.0.14/errors/fr/ERR_DNS_FAIL
--- squid-3.2.0.13/errors/fr/ERR_DNS_FAIL	2011-10-14 15:27:23.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_DNS_FAIL	2011-12-13 00:38:53.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Impossible de déterminer l'adresse IP du nom d'hôte <q>%H</q></b></p> </blockquote>  <p>Le serveur DNS a retourné :</p> <blockquote id="data"> <pre>%z</pre> </blockquote>  <p>Cela signifie que le proxy ne peut pas résoudre le nom d'hôte présent dans l'URL. Vérifier si l'adresse est correcte.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Impossible de déterminer l'adresse IP du nom d'hôte <q>%H</q></b></p> </blockquote>  <p>Le serveur DNS a retourné :</p> <blockquote id="data"> <pre>%z</pre> </blockquote>  <p>Cela signifie que le proxy ne peut pas résoudre le nom d'hôte présent dans l'URL. Vérifier si l'adresse est correcte.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_ESI squid-3.2.0.14/errors/fr/ERR_ESI
--- squid-3.2.0.13/errors/fr/ERR_ESI	2011-10-14 15:27:26.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_ESI	2011-12-13 00:38:55.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Le traitement ESI a échoué.</b></p> </blockquote>  <p>Le processeur ESI a répondu :</p> <blockquote id="data"> <pre>%Z</pre> </blockquote>  <p>Cela signifie que le substitut n'a pas été capable de traiter le modèle ESI. Veuillez reporter cette erreur au webmaster.</p>  <p>Votre webmaster est <a href="mailto:%w">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Le traitement ESI a échoué.</b></p> </blockquote>  <p>Le processeur ESI a répondu :</p> <blockquote id="data"> <pre>%Z</pre> </blockquote>  <p>Cela signifie que le substitut n'a pas été capable de traiter le modèle ESI. Veuillez reporter cette erreur au webmaster.</p>  <p>Votre webmaster est <a href="mailto:%w">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_FORWARDING_DENIED squid-3.2.0.14/errors/fr/ERR_FORWARDING_DENIED
--- squid-3.2.0.13/errors/fr/ERR_FORWARDING_DENIED	2011-10-14 15:27:30.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_FORWARDING_DENIED	2011-12-13 00:38:57.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Transmission interdite.</b></p> </blockquote>  <p>Ce proxy ne fera pas suivre votre requête, car il essaye de mettre en application une interaction. Le client %i est peut-être un cache mal configuré.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Transmission interdite.</b></p> </blockquote>  <p>Ce proxy ne fera pas suivre votre requête, car il essaye de mettre en application une interaction. Le client %i est peut-être un cache mal configuré.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_FTP_DISABLED squid-3.2.0.14/errors/fr/ERR_FTP_DISABLED
--- squid-3.2.0.13/errors/fr/ERR_FTP_DISABLED	2011-10-14 15:27:33.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_FTP_DISABLED	2011-12-13 00:39:00.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>FTP est désactivé</b></p> </blockquote>  <p>Ce proxy ne prend pas en compte le protocole FTP.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>FTP est désactivé</b></p> </blockquote>  <p>Ce proxy ne prend pas en compte le protocole FTP.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_FTP_FAILURE squid-3.2.0.14/errors/fr/ERR_FTP_FAILURE
--- squid-3.2.0.13/errors/fr/ERR_FTP_FAILURE	2011-10-14 15:27:36.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_FTP_FAILURE	2011-12-13 00:39:01.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>En essayant de charger l'URL : <a href="%U">%U</a> une erreur de protocole FTP est survenue.</p>  <p>Squid a envoyé la commande FTP suivante :</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>Le serveur a répondu :</p> <blockquote id="error"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>En essayant de charger l'URL : <a href="%U">%U</a> une erreur de protocole FTP est survenue.</p>  <p>Squid a envoyé la commande FTP suivante :</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>Le serveur a répondu :</p> <blockquote id="error"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_FTP_FORBIDDEN squid-3.2.0.14/errors/fr/ERR_FTP_FORBIDDEN
--- squid-3.2.0.13/errors/fr/ERR_FTP_FORBIDDEN	2011-10-14 15:27:40.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_FTP_FORBIDDEN	2011-12-13 00:39:03.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>En essayant de charger l'URL : <a href="%U">%U</a> une erreur d'authentification a eu lieu lors de l'accès au serveur FTP.</p>  <p>Squid a envoyé la commande FTP suivante :</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>Le serveur a répondu :</p> <blockquote id="sysmsg"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>En essayant de charger l'URL : <a href="%U">%U</a> une erreur d'authentification a eu lieu lors de l'accès au serveur FTP.</p>  <p>Squid a envoyé la commande FTP suivante :</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>Le serveur a répondu :</p> <blockquote id="sysmsg"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_FTP_NOT_FOUND squid-3.2.0.14/errors/fr/ERR_FTP_NOT_FOUND
--- squid-3.2.0.13/errors/fr/ERR_FTP_NOT_FOUND	2011-10-14 15:27:42.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_FTP_NOT_FOUND	2011-12-13 00:39:05.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'URL suivante n'a pas pu être chargée : <a href="%U">%U</a></p>  <p>Squid a envoyé la commande FTP suivante :</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>Le serveur a répondu :</p> <blockquote id="sysmsg"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>Cela pourrait être causé par une URL FTP qui contient un chemin absolut (ce qui n'est pas compatible avec la RFC 1738). Si tel est le cas, le fichier peut être disponible à l'adresse <a href="%B">%B</a>.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'URL suivante n'a pas pu être chargée : <a href="%U">%U</a></p>  <p>Squid a envoyé la commande FTP suivante :</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>Le serveur a répondu :</p> <blockquote id="sysmsg"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>Cela pourrait être causé par une URL FTP qui contient un chemin absolut (ce qui n'est pas compatible avec la RFC 1738). Si tel est le cas, le fichier peut être disponible à l'adresse <a href="%B">%B</a>.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_FTP_PUT_CREATED squid-3.2.0.14/errors/fr/ERR_FTP_PUT_CREATED
--- squid-3.2.0.13/errors/fr/ERR_FTP_PUT_CREATED	2011-10-14 15:27:45.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_FTP_PUT_CREATED	2011-12-13 00:39:07.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FTP avec PUT, envoi du fichier réussi.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1 id="ftpsuccess">Opération réussie</h1> <h2>Le fichier a été créé.</h2> </div> <hr>  <br>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FTP avec PUT, envoi du fichier réussi.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1 id="ftpsuccess">Opération réussie</h1> <h2>Le fichier a été créé</h2> </div> <hr>  <br>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_FTP_PUT_ERROR squid-3.2.0.14/errors/fr/ERR_FTP_PUT_ERROR
--- squid-3.2.0.13/errors/fr/ERR_FTP_PUT_ERROR	2011-10-14 15:27:47.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_FTP_PUT_ERROR	2011-12-13 00:39:11.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: FTP upload failed</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>FTP avec PUT, échec lors de l'envoi du fichier</h2> </div> <hr>  <div id="content"> <p>En essayant de charger l'URL : <a href="%U">%U</a> une erreur de protocole FTP est survenue.</p>  <p>Squid a envoyé la commande FTP suivante :</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>Le serveur a répondu :</p> <blockquote id="sysmsg"> <pre>%F</pre> </blockquote>  <p>Cela signifie que le serveur FTP n'a pas les autorisations ou pas assez d'espace pour stocker ce fichier. Veuillez vérifier le chemin, les autorisations et l'espace disque puis essayez de nouveau.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: FTP upload failed</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>FTP avec PUT, échec lors de l'envoi du fichier</h2> </div> <hr>  <div id="content"> <p>En essayant de charger l'URL : <a href="%U">%U</a> une erreur de protocole FTP est survenue.</p>  <p>Squid a envoyé la commande FTP suivante :</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>Le serveur a répondu :</p> <blockquote id="sysmsg"> <pre>%F</pre> </blockquote>  <p>Cela signifie que le serveur FTP n'a pas les autorisations ou pas assez d'espace pour stocker ce fichier. Veuillez vérifier le chemin, les autorisations et l'espace disque puis essayez de nouveau.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_FTP_PUT_MODIFIED squid-3.2.0.14/errors/fr/ERR_FTP_PUT_MODIFIED
--- squid-3.2.0.13/errors/fr/ERR_FTP_PUT_MODIFIED	2011-10-14 15:27:51.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_FTP_PUT_MODIFIED	2011-12-13 00:39:14.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FTP avec PUT, envoi du fichier réussi.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1 id="ftpsuccess">Opération réussie</h1> <h2>Le fichier a été mis à jour</h2> </div> <hr>  <br>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FTP avec PUT, envoi du fichier réussi.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1 id="ftpsuccess">Opération réussie</h1> <h2>Le fichier a été mis à jour</h2> </div> <hr>  <br>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_FTP_UNAVAILABLE squid-3.2.0.14/errors/fr/ERR_FTP_UNAVAILABLE
--- squid-3.2.0.13/errors/fr/ERR_FTP_UNAVAILABLE	2011-10-14 15:27:54.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_FTP_UNAVAILABLE	2011-12-13 00:39:16.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Le serveur FTP est surchargé et ne permet pas d'accéder à l'URL : <a href="%U">%U</a></p>  <p>Squid a envoyé la commande FTP suivante :</p>  <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>Le serveur a répondu :</p> <blockquote id="sysmsg"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Le serveur FTP est surchargé et ne permet pas d'accéder à l'URL : <a href="%U">%U</a></p>  <p>Squid a envoyé la commande FTP suivante :</p>  <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>Le serveur a répondu :</p> <blockquote id="sysmsg"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_GATEWAY_FAILURE squid-3.2.0.14/errors/fr/ERR_GATEWAY_FAILURE
--- squid-3.2.0.13/errors/fr/ERR_GATEWAY_FAILURE	2011-10-14 15:27:57.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_GATEWAY_FAILURE	2011-12-13 00:39:19.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Défaillance de la passerelle Proxy</b></p> </blockquote>  <p>Une défaillance interne non-récupérable ou un problème de configuration empêchent cette requête de s'achever.</p>  <p>Ces limites ont été fixées par le Fournisseur d'Accès Internet et agissent sur ce proxy. Si vous pensez que c'est une erreur, contactez le fournisseur d'accès.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Défaillance de la passerelle Proxy</b></p> </blockquote>  <p>Une défaillance interne non-récupérable ou un problème de configuration empêchent cette requête de s'achever.</p>  <p>Ces limites ont été fixées par le Fournisseur d'Accès Internet et agissent sur ce proxy. Si vous pensez que c'est une erreur, contactez le fournisseur d'accès.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_ICAP_FAILURE squid-3.2.0.14/errors/fr/ERR_ICAP_FAILURE
--- squid-3.2.0.13/errors/fr/ERR_ICAP_FAILURE	2011-10-14 15:28:01.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_ICAP_FAILURE	2011-12-13 00:39:21.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Erreur de protocole ICAP.</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>Cela signifie que certains aspects de la communication ICAP a échoués.</p>  <p>Problèmes possibles :</p> <ul> <li><p>Le serveur ICAP n'est pas joignable.</p></li> <li><p>Une réponse illégale a été reçue par le serveur ICAP.</p></li> </ul>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Erreur de protocole ICAP.</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>Cela signifie que certains aspects de la communication ICAP a échoués.</p>  <p>Problèmes possibles :</p> <ul> <li><p>Le serveur ICAP n'est pas joignable.</p></li> <li><p>Une réponse illégale a été reçue par le serveur ICAP.</p></li> </ul>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_INVALID_REQ squid-3.2.0.14/errors/fr/ERR_INVALID_REQ
--- squid-3.2.0.13/errors/fr/ERR_INVALID_REQ	2011-10-14 15:28:04.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_INVALID_REQ	2011-12-13 00:39:23.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p><b>Requête Invalide</b> une erreur a été rencontrée en essayant de traiter la requête :</p>  <blockquote id="data"> <pre>%R</pre> </blockquote>  <p>Problèmes possibles :</p> <ul> <li id="missing-method"><p>Requête de la méthode non précisée ou inconnue.</p></li> <li id="missing-url"><p>L'URL n'est pas spécifiée</p></li> <li id="missing-protocol"><p>L'identifiant HTTP est absent pour (HTTP/1.0).</p></li> <li><p>La requête est trop volumineuse</p></li> <li><p>Le champ "Content-Length" est absent, pour l'utilisation des requêtes avec POST ou PUT</p></li> <li><p>Caractère non valide dans le nom d'hôte; Les caractères soulignés (underscores) ne sont pas autorisés.</p></li> <li><p>HTTP/1.1 <q>Expect:</q> cette fonction a besoin du logiciel HTTP/1.0.</p></li> </ul>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <script language="javascript"> if ('%M' != '[unknown method]') document.getElementById('missing-method').style.display = 'none'; if ('%u' != '[no URL]') document.getElementById('missing-url').style.display = 'none'; if ('%P' != '[unknown protocol]') document.getElementById('missing-protocol').style.display = 'none'; </script>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p><b>Requête invalide</b> une erreur a été rencontrée en essayant de traiter la requête :</p>  <blockquote id="data"> <pre>%R</pre> </blockquote>  <p>Problèmes possibles :</p> <ul> <li id="missing-method"><p>Requête de la méthode non précisée ou inconnue.</p></li> <li id="missing-url"><p>L'URL n'est pas spécifiée</p></li> <li id="missing-protocol"><p>L'identifiant HTTP est absent pour (HTTP/1.0).</p></li> <li><p>La requête est trop volumineuse</p></li> <li><p>Le champ "Content-Length" est absent, pour l'utilisation des requêtes avec POST ou PUT</p></li> <li><p>Caractère non valide dans le nom d'hôte; Les caractères soulignés (underscores) ne sont pas autorisés.</p></li> <li><p>HTTP/1.1 <q>Expect:</q> cette fonction a besoin du logiciel HTTP/1.0.</p></li> </ul>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <script language="javascript"> if ('%M' != '[unknown method]') document.getElementById('missing-method').style.display = 'none'; if ('%u' != '[no URL]') document.getElementById('missing-url').style.display = 'none'; if ('%P' != '[unknown protocol]') document.getElementById('missing-protocol').style.display = 'none'; </script>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_INVALID_RESP squid-3.2.0.14/errors/fr/ERR_INVALID_RESP
--- squid-3.2.0.13/errors/fr/ERR_INVALID_RESP	2011-10-14 15:28:07.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_INVALID_RESP	2011-12-13 00:39:25.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p><b>Réponse Invalide</b> une erreur a été rencontrée en essayant de traiter la requête :</p>  <blockquote id="data"> <pre>%R</pre> </blockquote>  <p>La réponse HTTP reçu, qui a été envoyée par le serveur n'a pas pu être compris ou a été mal formulé. Veuillez contacter le responsable du site.</p>  <p>Si nécessaire, votre administrateur proxy peut vous fournir plus de détails sur la nature exacte du problème.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p><b>Réponse invalide</b> une erreur a été rencontrée en essayant de traiter la requête :</p>  <blockquote id="data"> <pre>%R</pre> </blockquote>  <p>La réponse HTTP reçu, qui a été envoyée par le serveur n'a pas pu être compris ou a été mal formulé. Veuillez contacter le responsable du site.</p>  <p>Si nécessaire, votre administrateur proxy peut vous fournir plus de détails sur la nature exacte du problème.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_INVALID_URL squid-3.2.0.14/errors/fr/ERR_INVALID_URL
--- squid-3.2.0.13/errors/fr/ERR_INVALID_URL	2011-10-14 15:28:11.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_INVALID_URL	2011-12-13 00:39:27.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>URL invalide</b></p> </blockquote>  <p>Quelque chose dans l'adresse URL est incorrect.</p>  <p>Problèmes possibles :</p> <ul> <li><p>Le protocole d'accès est absent ou incorrect (il doit être de la forme <q>http://</q> ou similaire)</p></li> <li><p>Le nom d'hôte n'est pas spécifié</p></li> <li><p>Les double espaces ne sont pas valides dans une adresse URL</p></li> <li><p>Caractère non valide dans le nom d'hôte; Les caractères soulignés (underscores) ne sont pas autorisés.</p></li> </ul>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>URL invalide</b></p> </blockquote>  <p>Quelque chose dans l'adresse URL est incorrect.</p>  <p>Problèmes possibles :</p> <ul> <li><p>Le protocole d'accès est absent ou incorrect (il doit être de la forme <q>http://</q> ou similaire)</p></li> <li><p>Le nom d'hôte n'est pas spécifié</p></li> <li><p>Les double espaces ne sont pas valides dans une adresse URL</p></li> <li><p>Caractère non valide dans le nom d'hôte; Les caractères soulignés (underscores) ne sont pas autorisés.</p></li> </ul>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_LIFETIME_EXP squid-3.2.0.14/errors/fr/ERR_LIFETIME_EXP
--- squid-3.2.0.13/errors/fr/ERR_LIFETIME_EXP	2011-10-14 15:28:14.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_LIFETIME_EXP	2011-12-13 00:39:31.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>La durée de vie de la connexion est dépassée</b></p> </blockquote>  <p>Squid a mis fin à cette requête car elle a excédé la durée de vie maximale.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>La durée de vie de la connexion est dépassée</b></p> </blockquote>  <p>Squid a mis fin à cette requête car elle a excédé la durée de vie maximale.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_NO_RELAY squid-3.2.0.14/errors/fr/ERR_NO_RELAY
--- squid-3.2.0.13/errors/fr/ERR_NO_RELAY	2011-10-14 15:28:17.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_NO_RELAY	2011-12-13 00:39:34.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Aucun relais WAIS</b></p> </blockquote>  <p>Sur ce proxy Il n'y a pas d'hôte définie pour un relais WAIS! Adressez-vous à votre administrateur.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Aucun relais WAIS</b></p> </blockquote>  <p>Sur ce proxy il n'y a pas d'hôte définie pour le relais WAIS! Adressez-vous à votre administrateur.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_ONLY_IF_CACHED_MISS squid-3.2.0.14/errors/fr/ERR_ONLY_IF_CACHED_MISS
--- squid-3.2.0.13/errors/fr/ERR_ONLY_IF_CACHED_MISS	2011-10-14 15:28:20.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_ONLY_IF_CACHED_MISS	2011-12-13 00:39:36.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Aucun document valide n'a été trouvé dans le cache, de plus la directive <q>only-if-cached</q> a été spécifiée.</b></p> </blockquote>  <p>Vous avez émis une demande avec une directive de contrôle du cache <q>only-if-cached</q>. Le document n'a pas été trouvé dans le cache <em>ou</em> il nécessite une opération de vérification, qui est interdite par la directive <q>only-if-cached</q>.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Aucun document valide n'a été trouvé dans le cache, de plus la directive <q>only-if-cached</q> a été spécifiée.</b></p> </blockquote>  <p>Vous avez émis une demande avec une directive de contrôle du cache <q>only-if-cached</q>. Le document n'a pas été trouvé dans le cache <em>ou</em> il nécessite une opération de vérification, qui est interdite par la directive <q>only-if-cached</q>.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/error-details.txt squid-3.2.0.14/errors/fr/error-details.txt
--- squid-3.2.0.13/errors/fr/error-details.txt	2011-10-14 15:28:55.000000000 +1300
+++ squid-3.2.0.14/errors/fr/error-details.txt	2011-12-13 00:40:09.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_PRECONDITION_FAILED squid-3.2.0.14/errors/fr/ERR_PRECONDITION_FAILED
--- squid-3.2.0.13/errors/fr/ERR_PRECONDITION_FAILED	2011-10-14 15:28:23.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_PRECONDITION_FAILED	2011-12-13 00:39:40.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>La précondition a échouée.</b></p> </blockquote>  <p>Cela signifie :</p> <blockquote>     <p>Au moins une précondition indiquée dans l'en-tête de la requête du client HTTP a échoué.</p> </blockquote>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>La précondition a échouée.</b></p> </blockquote>  <p>Cela signifie :</p> <blockquote>     <p>Au moins une précondition indiquée dans l'en-tête de la requête du client HTTP a échoué.</p> </blockquote>  <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_READ_ERROR squid-3.2.0.14/errors/fr/ERR_READ_ERROR
--- squid-3.2.0.13/errors/fr/ERR_READ_ERROR	2011-10-14 15:28:26.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_READ_ERROR	2011-12-13 00:39:42.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Erreur de lecture</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>Lors de la lecture des informations sur le réseau une erreur est survenue. Veuillez renouveler votre requête.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Erreur de lecture</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>Lors de la lecture des informations sur le réseau une erreur est survenue. Veuillez renouveler votre requête.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_READ_TIMEOUT squid-3.2.0.14/errors/fr/ERR_READ_TIMEOUT
--- squid-3.2.0.13/errors/fr/ERR_READ_TIMEOUT	2011-10-14 15:28:29.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_READ_TIMEOUT	2011-12-13 00:39:44.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Délai de lecture dépassé</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>Le délai a été dépassé lors de la lecture de données sur le réseau. Le réseau ou le serveur sont peut-être hors service ou surchargés. Merci de renouveler votre requête.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Délai de lecture dépassé</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>Le délai a été dépassé lors de la lecture de données sur le réseau. Le réseau ou le serveur sont peut-être hors service ou surchargés. Merci de renouveler votre requête.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_SECURE_CONNECT_FAIL squid-3.2.0.14/errors/fr/ERR_SECURE_CONNECT_FAIL
--- squid-3.2.0.13/errors/fr/ERR_SECURE_CONNECT_FAIL	2011-10-14 15:28:32.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_SECURE_CONNECT_FAIL	2011-12-13 00:39:46.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Il n'a pas été possible d'établir une connexion sécurisée vers %I</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>Ce proxy et l'hôte distant n'ont pas pu négocier mutuellement une connexion sécurisée pour le traitement de votre requête. Il est possible que l'hôte distant ne supporte pas les connexions sécurisées, ou que le proxy n'est pas satisfait du certificat de sécurité de l'hôte distant.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Il n'a pas été possible d'établir une connexion sécurisée vers %I</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>Ce proxy et l'hôte distant n'ont pas pu négocier mutuellement une connexion sécurisée pour le traitement de votre requête. Il est possible que l'hôte distant ne supporte pas les connexions sécurisées, ou que le proxy n'est pas satisfait du certificat de sécurité de l'hôte distant.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_SHUTTING_DOWN squid-3.2.0.14/errors/fr/ERR_SHUTTING_DOWN
--- squid-3.2.0.13/errors/fr/ERR_SHUTTING_DOWN	2011-10-14 15:28:35.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_SHUTTING_DOWN	2011-12-13 00:39:48.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <p>Le proxy est arrêté temporairement, actuellement il est impossible de satisfaire votre requête. Veuillez renouveler votre requête ultérieurement.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <p>Le proxy est arrêté temporairement, actuellement il est impossible de satisfaire votre requête. Veuillez renouveler votre requête ultérieurement.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_SOCKET_FAILURE squid-3.2.0.14/errors/fr/ERR_SOCKET_FAILURE
--- squid-3.2.0.13/errors/fr/ERR_SOCKET_FAILURE	2011-10-14 15:28:38.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_SOCKET_FAILURE	2011-12-13 00:39:51.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Erreur de socket</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>Squid n'est pas en mesure d'ouvrir le socket TCP, probablement due à une surcharge. Veuillez renouveler votre requête.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Erreur de socket</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>Squid n'est pas en mesure d'ouvrir le socket TCP, probablement due à une surcharge. Veuillez renouveler votre requête.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_TOO_BIG squid-3.2.0.14/errors/fr/ERR_TOO_BIG
--- squid-3.2.0.13/errors/fr/ERR_TOO_BIG	2011-10-14 15:28:42.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_TOO_BIG	2011-12-13 00:39:53.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>La requête ou la réponse est trop volumineuse.</b></p> </blockquote>  <p>Si vous effectuez une requête avec POST ou PUT, l'élément que vous essayez d'envoyer est alors trop volumineux.</p> <p>Si vous effectuez une requête avec GET, l'élément que vous essayez de télécharger est alors trop volumineux.</p> <p>Ces limites ont été fixées par le Fournisseur d'Accès Internet et agissent sur ce proxy. Si vous pensez que c'est une erreur, contactez le fournisseur d'accès.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>La requête ou la réponse est trop volumineuse.</b></p> </blockquote>  <p>Si vous effectuez une requête avec POST ou PUT, l'élément que vous essayez d'envoyer est alors trop volumineux.</p> <p>Si vous effectuez une requête avec GET, l'élément que vous essayez de télécharger est alors trop volumineux.</p> <p>Ces limites ont été fixées par le Fournisseur d'Accès Internet et agissent sur ce proxy. Si vous pensez que c'est une erreur, contactez le fournisseur d'accès.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_UNSUP_HTTPVERSION squid-3.2.0.14/errors/fr/ERR_UNSUP_HTTPVERSION
--- squid-3.2.0.13/errors/fr/ERR_UNSUP_HTTPVERSION	2011-10-14 15:28:45.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_UNSUP_HTTPVERSION	2011-12-13 00:39:55.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>Version HTTP non supportée</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unsupported HTTP version</b></p> </blockquote>  <p>Ce Squid ne supporte pas la version HTTP que vous tentez d'utiliser.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>Version HTTP non supportée</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unsupported HTTP version</b></p> </blockquote>  <p>Ce Squid ne supporte pas la version HTTP que vous tentez d'utiliser.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_UNSUP_REQ squid-3.2.0.14/errors/fr/ERR_UNSUP_REQ
--- squid-3.2.0.13/errors/fr/ERR_UNSUP_REQ	2011-10-14 15:28:47.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_UNSUP_REQ	2011-12-13 00:39:57.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>La méthode de requête et le protocole ne sont pas pris en charge.</b></p> </blockquote>  <p>Squid ne prend pas en charge tous les types de requêtes par rapport à tous les protocoles d'accès. Vous ne pouvez pas par exemple utiliser une requête POST avec le protocole Gopher.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>La méthode de requête et le protocole ne sont pas pris en charge.</b></p> </blockquote>  <p>Squid ne prend pas en charge tous les types de requêtes par rapport à tous les protocoles d'accès. Vous ne pouvez pas par exemple utiliser une requête POST avec le protocole Gopher.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_URN_RESOLVE squid-3.2.0.14/errors/fr/ERR_URN_RESOLVE
--- squid-3.2.0.13/errors/fr/ERR_URN_RESOLVE	2011-10-14 15:28:50.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_URN_RESOLVE	2011-12-13 00:39:59.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: The requested URN could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>En utilisant URN, la requête URL n'a pas pu être chargée.</h2> </div> <hr>  <div id="content"> <p>l'erreur suivante s'est produite en essayant d'accéder à l'URN : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Impossible de résoudre l'URN</b></p> </blockquote>  <p>Hé! Il ne faut pas attendre grand-chose des URNs avec %T :)</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: The requested URN could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>En utilisant URN, la requête URL n'a pas pu être chargée.</h2> </div> <hr>  <div id="content"> <p>l'erreur suivante s'est produite en essayant d'accéder à l'URN : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Impossible de résoudre l'URN</b></p> </blockquote>  <p>Hé! Il ne faut pas attendre grand-chose des URNs avec %T :)</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_WRITE_ERROR squid-3.2.0.14/errors/fr/ERR_WRITE_ERROR
--- squid-3.2.0.13/errors/fr/ERR_WRITE_ERROR	2011-10-14 15:28:52.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_WRITE_ERROR	2011-12-13 00:40:03.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Erreur d'écriture</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>Lors de l'écriture des informations sur le réseau une erreur est survenue. Veuillez renouveler votre requête.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Erreur d'écriture</b></p> </blockquote>  <p id="sysmsg">Le système a retourné : <i>%E</i></p>  <p>Lors de l'écriture des informations sur le réseau une erreur est survenue. Veuillez renouveler votre requête.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/fr/ERR_ZERO_SIZE_OBJECT squid-3.2.0.14/errors/fr/ERR_ZERO_SIZE_OBJECT
--- squid-3.2.0.13/errors/fr/ERR_ZERO_SIZE_OBJECT	2011-10-14 15:28:55.000000000 +1300
+++ squid-3.2.0.14/errors/fr/ERR_ZERO_SIZE_OBJECT	2011-12-13 00:40:09.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Réponse de taille zéro</b></p> </blockquote>  <p>Squid n'a pas reçu toutes les données pour cette requête.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T en %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR: L'URL demandée n'a pas pu être trouvé</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>L'erreur suivante s'est produite en essayant d'accéder à l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Réponse de taille zéro</b></p> </blockquote>  <p>Squid n'a pas reçu toutes les données pour cette requête.</p>  <p>Votre administrateur proxy est <a href="mailto:%w%W">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Générer le %T par %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_ACCESS_DENIED squid-3.2.0.14/errors/he/ERR_ACCESS_DENIED
--- squid-3.2.0.13/errors/he/ERR_ACCESS_DENIED	2011-10-14 15:28:58.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_ACCESS_DENIED	2011-12-13 00:40:11.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>הגישה נדחית</b></p> </blockquote>  <p>Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>הגישה נדחתה</b></p> </blockquote>  <p>Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_AGENT_CONFIGURE squid-3.2.0.14/errors/he/ERR_AGENT_CONFIGURE
--- squid-3.2.0.13/errors/he/ERR_AGENT_CONFIGURE	2011-10-14 15:29:01.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_AGENT_CONFIGURE	2011-12-13 00:40:13.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Web Browser Configuration</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>שגיאה</h1> <h2>Web Browser Configuration</h2> </div> <hr>  <div id="content"> <blockquote id="error"> <p>Your Web Browser configuration needs to be corrected to use this network.</p> </blockquote>  <p>How to find these settings in your browser:</p>  <div id="firefox"> For Firefox browsers go to: <ul> <li>Tools -&gt; Options -&gt; Advanced -&gt; Network -&gt; Connection Settings</li> <li>In the HTTP proxy box type the proxy name %h and port %b.</li> </ul> </div>  <div id="microsoft"> For Internet Explorer browsers go to: <ul> <li>Tools -&gt; Internet Options -&gt; Connection -&gt; LAN Settings -&gt;Proxy</li> <li>In the HTTP proxy box type the proxy name %h and port %b.</li> </ul> </div>  <div id="opera"> For Opera browsers go to: <ul> <li>Tools -&gt; Preferences -&gt; Advanced -&gt; Network -&gt; Proxy Servers</li> <li>In the HTTP proxy box type the proxy name %h and port %b.</li> </ul> </div>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>הגדרת דפדפן האינטרנט</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>שגיאה</h1> <h2>Web Browser Configuration</h2> </div> <hr>  <div id="content"> <blockquote id="error"> <p>Your Web Browser configuration needs to be corrected to use this network.</p> </blockquote>  <p>איך למצוא את ההגדרות האלה בדפדפן שלך:</p>  <div id="firefox"> עבור דפדפן פיירפוקס, לך ל: <ul> <li>כלים -&gt; אפשרויות -&gt; אפשרויות מתקדמות -&gt; רשת -&gt; הגדרות חיבור</li> <li>בתיבת הפרוקסי של HTTP, הקלד את שם שרת הפרוקסי %h ואת הפורט %b</li> </ul> </div>  <div id="microsoft"> עבור דפדפן אינטרנט אקספלורר, לך ל: <ul> <li>כלים -&gt; אפשרויות אינטרנט -&gt; חיבורים -&gt; הגדרות LAN -&gt; פרוקסי</li> <li>In the HTTP proxy box type the proxy name %h and port %b.</li> </ul> </div>  <div id="opera"> עבור דפדפן אופרה, לך ל: <ul> <li>כלים -&gt; העדפות -&gt; הגדרות מתקדמות -&gt; רשת -&gt; שרתי פרוקסי</li> <li>In the HTTP proxy box type the proxy name %h and port %b.</li> </ul> </div>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_AGENT_WPAD squid-3.2.0.14/errors/he/ERR_AGENT_WPAD
--- squid-3.2.0.13/errors/he/ERR_AGENT_WPAD	2011-10-14 15:29:04.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_AGENT_WPAD	2011-12-13 00:40:15.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Web Browser Configuration</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>שגיאה</h1> <h2>Web Browser Configuration</h2> </div> <hr>  <div id="content"> <blockquote id="error"> <p>Your Web Browser configuration needs to be corrected to use this network.</p> </blockquote>  <p>How to find these settings in your browser:</p>  <div id="firefox"> For Firefox browsers go to: <ul> <li>Tools -&gt; Options -&gt; Advanced -&gt; Network -&gt; Connection Settings</li> <li>Select Auto-detect proxy settings for this network</li> </ul> </div>  <div id="microsoft"> For Internet Explorer browsers go to: <ul> <li>Tools -&gt; Internet Options -&gt; Connection -&gt; LAN Settings -&gt;Proxy</li> <li>Select Automatically detect settings</li> </ul> </div>  <div id="opera"> For Opera browsers go to: <ul> <li>Tools -&gt; Preferences -&gt; Advanced -&gt; Network -&gt; Proxy Servers</li> <li>Select Use Automatic proxy configuration</li> </ul> </div>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>הגדרת דפדפן האינטרנט</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>שגיאה</h1> <h2>Web Browser Configuration</h2> </div> <hr>  <div id="content"> <blockquote id="error"> <p>Your Web Browser configuration needs to be corrected to use this network.</p> </blockquote>  <p>איך למצוא את ההגדרות האלה בדפדפן שלך:</p>  <div id="firefox"> עבור דפדפן פיירפוקס, לך ל: <ul> <li>כלים -&gt; אפשרויות -&gt; אפשרויות מתקדמות -&gt; רשת -&gt; הגדרות חיבור</li> <li>בחר "איתור הגדרות אוטומטי" עבר הרשת הזו</li> </ul> </div>  <div id="microsoft"> עבור דפדפן אינטרנט אקספלורר, לך ל: <ul> <li>כלים -&gt; אפשרויות אינטרנט -&gt; חיבורים -&gt; הגדרות LAN -&gt; פרוקסי</li> <li>בחר "איתור הגדרות אוטומטי"</li> </ul> </div>  <div id="opera"> עבור דפדפן אופרה, לך ל: <ul> <li>כלים -&gt; העדפות -&gt; הגדרות מתקדמות -&gt; רשת -&gt; שרתי פרוקסי</li> <li>בחר באיתור הגדרות אוטומטי עבור הגדרת הפרוקסי</li> </ul> </div>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_CACHE_ACCESS_DENIED squid-3.2.0.14/errors/he/ERR_CACHE_ACCESS_DENIED
--- squid-3.2.0.13/errors/he/ERR_CACHE_ACCESS_DENIED	2011-10-14 15:29:07.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_CACHE_ACCESS_DENIED	2011-12-13 00:40:17.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: Cache Access Denied</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>Cache הגישה נדחית</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>גישה ל-Cache נדחית</b></p> </blockquote>  <p>Sorry, you are not currently allowed to request %U from this cache until you have authenticated yourself.</p>  <p>Please contact the <a href="mailto:%w%W">cache administrator</a> if you have difficulties authenticating yourself.</p>  <br> </div>  <hr>  <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: Cache Access Denied</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>Cache הגישה נדחתה</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>גישה ל-Cache נדחית</b></p> </blockquote>  <p>Sorry, you are not currently allowed to request %U from this cache until you have authenticated yourself.</p>  <p>Please contact the <a href="mailto:%w%W">cache administrator</a> if you have difficulties authenticating yourself.</p>  <br> </div>  <hr>  <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_CACHE_MGR_ACCESS_DENIED squid-3.2.0.14/errors/he/ERR_CACHE_MGR_ACCESS_DENIED
--- squid-3.2.0.13/errors/he/ERR_CACHE_MGR_ACCESS_DENIED	2011-10-14 15:29:10.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_CACHE_MGR_ACCESS_DENIED	2011-12-13 00:40:19.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: Cache Manager Access Denied</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>Cache Manager הגישה נדחית</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>גישת מנהל לשרת נדחית.</b></p> </blockquote>  <p>Sorry, you are not currently allowed to request %U from this cache manager until you have authenticated yourself.</p>  <p>Please contact the <a href="mailto:%w%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.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: Cache Manager Access Denied</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>Cache Manager הגישה נדחתה</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>גישת מנהל לשרת נדחית.</b></p> </blockquote>  <p>Sorry, you are not currently allowed to request %U from this cache manager until you have authenticated yourself.</p>  <p>Please contact the <a href="mailto:%w%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.</p>  <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/he/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/he/ERR_CANNOT_FORWARD	2011-10-14 15:29:12.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_CANNOT_FORWARD	2011-12-13 00:40:23.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>לא ניתן להעביר את הבקשה בשלב זה.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p>  <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_CONNECT_FAIL squid-3.2.0.14/errors/he/ERR_CONNECT_FAIL
--- squid-3.2.0.13/errors/he/ERR_CONNECT_FAIL	2011-10-14 15:29:15.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_CONNECT_FAIL	2011-12-13 00:40:26.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" CONTENT="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Connection to %I failed.</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <p>The remote host or network may be down. Please try the request again.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" CONTENT="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>החיבור ל %I נכשל.</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <p>The remote host or network may be down. Please try the request again.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p>  <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_DIR_LISTING squid-3.2.0.14/errors/he/ERR_DIR_LISTING
--- squid-3.2.0.13/errors/he/ERR_DIR_LISTING	2011-10-14 15:29:17.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_DIR_LISTING	2011-12-13 00:40:28.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Directory: %U</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h2>Directory: <a href="%U">%U</a>/</h2> </div> <hr>  <div id="content"> <h4>Directory Content:</h4>  <blockquote id="data"> <pre id="dirmsg">%z</pre> </blockquote>  <table id="dirlisting" summary="Directory Listing"> <tr> <th><a href="../"><img border="0" src="/squid-internal-static/icons/silk/arrow_up.png" alt=""></a></th> <th nowrap="nowrap"><a href="../">Parent Directory</a> (<a href="/">Root Directory</a>)</th> </tr>  %g  </table> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>תיקייה: %U</title> <style type="text/css"><!--  %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h2>תיקייה: <a href="%U">%U</a>/</h2> </div> <hr>  <div id="content"> <h4>תוכן התיקיה:</h4>  <blockquote id="data"> <pre id="dirmsg">%z</pre> </blockquote>  <table id="dirlisting" summary="Directory Listing"> <tr> <th><a href="../"><img border="0" src="/squid-internal-static/icons/silk/arrow_up.png" alt=""></a></th> <th nowrap="nowrap"><a href="../">תיקיית אב</a> (<a href="/">תיקיית השורש</a>)</th> </tr>  %g  </table> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_DNS_FAIL squid-3.2.0.14/errors/he/ERR_DNS_FAIL
--- squid-3.2.0.13/errors/he/ERR_DNS_FAIL	2011-10-14 15:29:20.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_DNS_FAIL	2011-12-13 00:40:30.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>לא יכול למצוא כתובת IP בשביל <q>%H</q></b></p> </blockquote>  <p>הודעת שרת השמות:</p> <blockquote id="data"> <pre>%z</pre> </blockquote>  <p>זה אומר ש השרת לא הצליח למצוא את השרת שצויין. בדוק את הכתובת.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>לא יכול למצוא כתובת IP בשביל <q>%H</q></b></p> </blockquote>  <p>הודעת שרת השמות:</p> <blockquote id="data"> <pre>%z</pre> </blockquote>  <p>זה אומר ש השרת לא הצליח למצוא את השרת שצויין. בדוק את הכתובת.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_ESI squid-3.2.0.14/errors/he/ERR_ESI
--- squid-3.2.0.13/errors/he/ERR_ESI	2011-10-14 15:29:22.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_ESI	2011-12-13 00:40:33.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>ESI Processing failed.</b></p> </blockquote>  <p>The ESI processor returned:</p> <blockquote id="data"> <pre>%Z</pre> </blockquote>  <p>This means that the surrogate was not able to process the ESI template. Please report this error to the webmaster.</p>  <p>Your webmaster is <a href="mailto:%w">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>עיבוד ESI נכשל.</b></p> </blockquote>  <p>The ESI processor returned:</p> <blockquote id="data"> <pre>%Z</pre> </blockquote>  <p>משמעות הדבר היא שלא היה ניתן לעבד את תבנית ESI. אנא דווח על שגיאה זו למנהל הרשת.</p>  <p>מנהל הרשת שלך הוא <a href="mailto:%w">%w</a>.</p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_FORWARDING_DENIED squid-3.2.0.14/errors/he/ERR_FORWARDING_DENIED
--- squid-3.2.0.13/errors/he/ERR_FORWARDING_DENIED	2011-10-14 15:29:25.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_FORWARDING_DENIED	2011-12-13 00:40:37.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>העברה נדחית.</b></p> </blockquote>  <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.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>העברה נדחית.</b></p> </blockquote>  <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.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p>  <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_FTP_DISABLED squid-3.2.0.14/errors/he/ERR_FTP_DISABLED
--- squid-3.2.0.13/errors/he/ERR_FTP_DISABLED	2011-10-14 15:29:28.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_FTP_DISABLED	2011-12-13 00:40:40.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>FTP מבוטל</b></p> </blockquote>  <p>שרת זה אינו תוצך ב-FTP.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>FTP מבוטל</b></p> </blockquote>  <p>שרת זה אינו תומך ב-FTP.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p>  <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_FTP_FAILURE squid-3.2.0.14/errors/he/ERR_FTP_FAILURE
--- squid-3.2.0.13/errors/he/ERR_FTP_FAILURE	2011-10-14 15:29:31.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_FTP_FAILURE	2011-12-13 00:40:42.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>קרתה שגיאת פרוטוקול FTP כאשר ניסיתי לגשת אל הכתובת: <a href="%U">%U</a></p>  <p>השרת שלח את פקודת ה-FTP הבאה:</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>The server responded with:</p> <blockquote id="error"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>קרתה שגיאת פרוטוקול FTP כאשר בוצע ניסיון לגשת אל הכתובת: <a href="%U">%U</a></p>  <p>שרת ה Squid שלח את פקודת ה-FTP הבאה:</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>תגובת השרת היא:</p> <blockquote id="error"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_FTP_FORBIDDEN squid-3.2.0.14/errors/he/ERR_FTP_FORBIDDEN
--- squid-3.2.0.13/errors/he/ERR_FTP_FORBIDDEN	2011-10-14 15:29:33.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_FTP_FORBIDDEN	2011-12-13 00:40:45.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>שגיאה בזיהוי משתמש FTP כאשר ניסיתי לגשת אל הכתובת: <a href="%U">%U</a></p>  <p>השרת שלח את פקודת ה-FTP הבאה:</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>The server responded with:</p> <blockquote id="sysmsg"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>שגיאה בזיהוי משתמש FTP כאשר בוצע ניסיון לגשת אל הכתובת: <a href="%U">%U</a></p>  <p>שרת ה Squid שלח את פקודת ה-FTP הבאה:</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>תגובת השרת היא:</p> <blockquote id="sysmsg"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_FTP_NOT_FOUND squid-3.2.0.14/errors/he/ERR_FTP_NOT_FOUND
--- squid-3.2.0.13/errors/he/ERR_FTP_NOT_FOUND	2011-10-14 15:29:36.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_FTP_NOT_FOUND	2011-12-13 00:40:47.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>לא ניתן לגשת אל הכתובת הנ"ל: <a href="%U">%U</a></p>  <p>השרת שלח את פקודת ה-FTP הבאה:</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>The server responded with:</p> <blockquote id="sysmsg"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>This might be caused by an FTP URL with an absolute path (which does not comply with RFC 1738). If this is the cause, then the file can be found at <a href="%B">%B</a>.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>לא ניתן לגשת אל הכתובת: <a href="%U">%U</a></p>  <p>שרת ה Squid שלח את פקודת ה-FTP הבאה:</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>תגובת השרת היא:</p> <blockquote id="sysmsg"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>This might be caused by an FTP URL with an absolute path (which does not comply with RFC 1738). If this is the cause, then the file can be found at <a href="%B">%B</a>.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_FTP_PUT_CREATED squid-3.2.0.14/errors/he/ERR_FTP_PUT_CREATED
--- squid-3.2.0.13/errors/he/ERR_FTP_PUT_CREATED	2011-10-14 15:29:39.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_FTP_PUT_CREATED	2011-12-13 00:40:50.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FTP PUT Successful.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1 id="ftpsuccess">פעולה עברה בהצלחה</h1> <h2>הקובץ נוצר</h2> </div> <hr>  <br>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FTP PUT Successful.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1 id="ftpsuccess">הפעולה עברה בהצלחה</h1> <h2>הקובץ נוצר</h2> </div> <hr>  <br>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_FTP_PUT_ERROR squid-3.2.0.14/errors/he/ERR_FTP_PUT_ERROR
--- squid-3.2.0.13/errors/he/ERR_FTP_PUT_ERROR	2011-10-14 15:29:41.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_FTP_PUT_ERROR	2011-12-13 00:40:51.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: FTP upload failed</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>FTP PUT upload failed</h2> </div> <hr>  <div id="content"> <p>קרתה שגיאת פרוטוקול FTP כאשר ניסיתי לגשת אל הכתובת: <a href="%U">%U</a></p>  <p>השרת שלח את פקודת ה-FTP הבאה:</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>The server responded with:</p> <blockquote id="sysmsg"> <pre>%F</pre> </blockquote>  <p>This means that the FTP server may not have permission or space to store the file. Check the path, permissions, diskspace and try again.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: FTP upload failed</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>FTP PUT upload failed</h2> </div> <hr>  <div id="content"> <p>קרתה שגיאת פרוטוקול FTP כאשר בוצע ניסיון לגשת אל הכתובת: <a href="%U">%U</a></p>  <p>שרת ה Squid שלח את פקודת ה-FTP הבאה:</p> <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>תגובת השרת היא:</p> <blockquote id="sysmsg"> <pre>%F</pre> </blockquote>  <p>This means that the FTP server may not have permission or space to store the file. Check the path, permissions, diskspace and try again.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_FTP_PUT_MODIFIED squid-3.2.0.14/errors/he/ERR_FTP_PUT_MODIFIED
--- squid-3.2.0.13/errors/he/ERR_FTP_PUT_MODIFIED	2011-10-14 15:29:44.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_FTP_PUT_MODIFIED	2011-12-13 00:40:53.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FTP PUT Successful.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1 id="ftpsuccess">פעולה עברה בהצלחה</h1> <h2>הקובץ עודכן</h2> </div> <hr>  <br>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FTP PUT Successful.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1 id="ftpsuccess">הפעולה עברה בהצלחה</h1> <h2>הקובץ עודכן</h2> </div> <hr>  <br>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_FTP_UNAVAILABLE squid-3.2.0.14/errors/he/ERR_FTP_UNAVAILABLE
--- squid-3.2.0.13/errors/he/ERR_FTP_UNAVAILABLE	2011-10-14 15:29:46.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_FTP_UNAVAILABLE	2011-12-13 00:40:55.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>שרת ה-FTP היה עסוק מדי, כאשר ניסיתי לגשת אל הכתובת: <a href="%U">%U</a></p>  <p>השרת שלח את פקודת ה-FTP הבאה:</p>  <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>The server responded with:</p> <blockquote id="sysmsg"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>שרת ה-FTP היה עסוק מדי, כאשר ניסיתי לגשת אל הכתובת: <a href="%U">%U</a></p>  <p>שרת ה Squid שלח את פקודת ה-FTP הבאה:</p>  <blockquote id="data"> <pre>%f</pre> </blockquote>  <p>תגובת השרת היא:</p> <blockquote id="sysmsg"> <pre>%F</pre> <pre>%g</pre> </blockquote>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_GATEWAY_FAILURE squid-3.2.0.14/errors/he/ERR_GATEWAY_FAILURE
--- squid-3.2.0.13/errors/he/ERR_GATEWAY_FAILURE	2011-10-14 15:29:49.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_GATEWAY_FAILURE	2011-12-13 00:40:57.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Gateway Proxy Failure</b></p> </blockquote>  <p>A non-recoverable internal failure or configuration problem prevents this request from being completed.</p>  <p>This may be due to limits established by the Internet Service Provider who operates this cache. Please contact them directly for more information.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Gateway Proxy Failure</b></p> </blockquote>  <p>בעיה פנימית לא מוגדרת או הגדרות שגויות מונעים את השלמת הבקשה</p>  <p>This may be due to limits established by the Internet Service Provider who operates this cache. Please contact them directly for more information.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_ICAP_FAILURE squid-3.2.0.14/errors/he/ERR_ICAP_FAILURE
--- squid-3.2.0.13/errors/he/ERR_ICAP_FAILURE	2011-10-14 15:29:52.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_ICAP_FAILURE	2011-12-13 00:40:58.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>ICAP protocol error.</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <p>This means that some aspect of the ICAP communication failed.</p>  <p>Some possible problems are:</p> <ul> <li><p>The ICAP server is not reachable.</p></li> <li><p>An Illegal response was received from the ICAP server.</p></li> </ul>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>שגיאה בפרוטוקול ICAP.</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <p>משמעות הדבר היא כי היבט כלשהו של התקשורת ICAP נכשל.</p>  <p>Some possible problems are:</p> <ul> <li><p>שרת ה ICAP לא נגיש.</p></li> <li><p>תגובה בלתי חוקית התקבלה משרת ה ICAP.</p></li> </ul>  <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_INVALID_REQ squid-3.2.0.14/errors/he/ERR_INVALID_REQ
--- squid-3.2.0.13/errors/he/ERR_INVALID_REQ	2011-10-14 15:29:56.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_INVALID_REQ	2011-12-13 00:41:00.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p><b>Invalid Request</b> error was encountered while trying to process the request:</p>  <blockquote id="data"> <pre>%R</pre> </blockquote>  <p>Some possible problems are:</p> <ul> <li id="missing-method"><p>סוג בקשה לא ידוע או חסר</p></li> <li id="missing-url"><p>כתובת חסרה</p></li> <li id="missing-protocol"><p>Missing HTTP Identifier (HTTP/1.0).</p></li> <li><p>הבקשה ארוכה מדי</p></li> <li><p>חסר Content-Length בשביל בקשות POST או PUT</p></li> <li><p>תווים לא חוקיים בשם השרת; קווים תחתונים אסורים</p></li> <li><p>HTTP/1.1 <q>Expect:</q> feature is being asked from an HTTP/1.0 software.</p></li> </ul>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <script language="javascript"> if ('%M' != '[unknown method]') document.getElementById('missing-method').style.display = 'none'; if ('%u' != '[no URL]') document.getElementById('missing-url').style.display = 'none'; if ('%P' != '[unknown protocol]') document.getElementById('missing-protocol').style.display = 'none'; </script>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p><b> בקשה לא חוקית </b> אירעה שגיאה בעת ביצוע הבקשה:</p>  <blockquote id="data"> <pre>%R</pre> </blockquote>  <p>Some possible problems are:</p> <ul> <li id="missing-method"><p>סוג בקשה לא ידוע או חסר</p></li> <li id="missing-url"><p>כתובת URL חסרה.</p></li> <li id="missing-protocol"><p>Missing HTTP Identifier (HTTP/1.0).</p></li> <li><p>הבקשה גדולה מידי.</p></li> <li><p>חסר Content-Length בשביל בקשות POST או PUT</p></li> <li><p>תווים לא חוקיים בשם השרת; קווים תחתונים אסורים</p></li> <li><p>HTTP/1.1 <q>Expect:</q> feature is being asked from an HTTP/1.0 software.</p></li> </ul>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <script language="javascript"> if ('%M' != '[unknown method]') document.getElementById('missing-method').style.display = 'none'; if ('%u' != '[no URL]') document.getElementById('missing-url').style.display = 'none'; if ('%P' != '[unknown protocol]') document.getElementById('missing-protocol').style.display = 'none'; </script>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_INVALID_RESP squid-3.2.0.14/errors/he/ERR_INVALID_RESP
--- squid-3.2.0.13/errors/he/ERR_INVALID_RESP	2011-10-14 15:29:58.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_INVALID_RESP	2011-12-13 00:41:03.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p><b>Invalid Response</b> error was encountered while trying to process the request:</p>  <blockquote id="data"> <pre>%R</pre> </blockquote>  <p>The HTTP Response message received from the contacted server could not be understood or was otherwise malformed. Please contact the site operator.</p>  <p>Your cache administrator may be able to provide you with more details about the exact nature of the problem if needed.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p><b>תגובה לא חוקית</b> אירעה שגיאה בעת ביצוע הבקשה:</p>  <blockquote id="data"> <pre>%R</pre> </blockquote>  <p>התגובת ה HTTP שהתקבלה מהשרת אינה מובנת או פגומה. אנא צור קשר עם מפעיל האתר.</p>  <p>Your cache administrator may be able to provide you with more details about the exact nature of the problem if needed.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_INVALID_URL squid-3.2.0.14/errors/he/ERR_INVALID_URL
--- squid-3.2.0.13/errors/he/ERR_INVALID_URL	2011-10-14 15:30:02.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_INVALID_URL	2011-12-13 00:41:06.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>כתובת שגויה</b></p> </blockquote>  <p>Some aspect of the requested URL is incorrect.</p>  <p>Some possible problems are:</p> <ul> <li><p>Missing or incorrect access protocol (should be <q>http://</q> or similar)</p></li> <li><p>חסר שם שרת</p></li> <li><p>בריחה כפולה שגויה בנתיב</p></li> <li><p>תווים לא חוקיים בשם השרת; קווים תחתונים אסורים</p></li> </ul>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>כתובת URL שגויה</b></p> </blockquote>  <p>Some aspect of the requested URL is incorrect.</p>  <p>Some possible problems are:</p> <ul> <li><p>Missing or incorrect access protocol (should be <q>http://</q> or similar)</p></li> <li><p>חסר שם שרת</p></li> <li><p>בריחה כפולה שגויה בנתיב</p></li> <li><p>תווים לא חוקיים בשם השרת; קווים תחתונים אסורים</p></li> </ul>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_LIFETIME_EXP squid-3.2.0.14/errors/he/ERR_LIFETIME_EXP
--- squid-3.2.0.13/errors/he/ERR_LIFETIME_EXP	2011-10-14 15:30:05.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_LIFETIME_EXP	2011-12-13 00:41:08.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>אורך החיים של הבקשה נגמר</b></p> </blockquote>  <p>השרת ביטל את הבקשה בגלל שהיא עברה את אורך החיים המאושר ליצירת חיבור.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>תוקף החיבור פג</b></p> </blockquote>  <p>השרת ביטל את הבקשה בגלל שהיא עברה את אורך החיים המאושר ליצירת חיבור.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_NO_RELAY squid-3.2.0.14/errors/he/ERR_NO_RELAY
--- squid-3.2.0.13/errors/he/ERR_NO_RELAY	2011-10-14 15:30:08.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_NO_RELAY	2011-12-13 00:41:10.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>אין שרת WAIS</b></p> </blockquote>  <p>There is no WAIS Relay host defined for this Cache! Yell at the administrator.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>אין שרת WAIS</b></p> </blockquote>  <p>There is no WAIS Relay host defined for this Cache! Yell at the administrator.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_ONLY_IF_CACHED_MISS squid-3.2.0.14/errors/he/ERR_ONLY_IF_CACHED_MISS
--- squid-3.2.0.13/errors/he/ERR_ONLY_IF_CACHED_MISS	2011-10-14 15:30:12.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_ONLY_IF_CACHED_MISS	2011-12-13 00:41:13.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Valid document was not found in the cache and <q>only-if-cached</q> directive was specified.</b></p> </blockquote>  <p>You have issued a request with a <q>only-if-cached</q> cache control directive. The document was not found in the cache, <em>or</em> it required revalidation prohibited by the <q>only-if-cached</q> directive.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Valid document was not found in the cache and <q>only-if-cached</q> directive was specified.</b></p> </blockquote>  <p>You have issued a request with a <q>only-if-cached</q> cache control directive. The document was not found in the cache, <em>or</em> it required revalidation prohibited by the <q>only-if-cached</q> directive.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/error-details.txt squid-3.2.0.14/errors/he/error-details.txt
--- squid-3.2.0.13/errors/he/error-details.txt	2011-10-14 15:30:40.000000000 +1300
+++ squid-3.2.0.14/errors/he/error-details.txt	2011-12-13 00:41:41.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/he/ERR_PRECONDITION_FAILED squid-3.2.0.14/errors/he/ERR_PRECONDITION_FAILED
--- squid-3.2.0.13/errors/he/ERR_PRECONDITION_FAILED	2011-10-14 15:30:14.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_PRECONDITION_FAILED	2011-12-13 00:41:16.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Precondition Failed.</b></p> </blockquote>  <p>This means:</p> <blockquote>     <p>At least one precondition specified by the HTTP client in the request header has failed.</p> </blockquote>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>ביצוע תנאי מקדים נכשל.</b></p> </blockquote>  <p>מידע מפורט:</p> <blockquote>     <p>לפחות תנאי מוקדם אחד שצויין על ידי לקוח ה HTTP לא מתקיים</p> </blockquote>  <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_READ_ERROR squid-3.2.0.14/errors/he/ERR_READ_ERROR
--- squid-3.2.0.13/errors/he/ERR_READ_ERROR	2011-10-14 15:30:18.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_READ_ERROR	2011-12-13 00:41:19.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>שגיאה בקריאה</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <p>An error condition occurred while reading data from the network. Please retry your request.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>שגיאה בקריאה</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <p>An error condition occurred while reading data from the network. Please retry your request.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_READ_TIMEOUT squid-3.2.0.14/errors/he/ERR_READ_TIMEOUT
--- squid-3.2.0.13/errors/he/ERR_READ_TIMEOUT	2011-10-14 15:30:21.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_READ_TIMEOUT	2011-12-13 00:41:21.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>קריאה הופסקה</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <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.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>הקריאה אורכת יותר מידי זמן</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <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.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_SECURE_CONNECT_FAIL squid-3.2.0.14/errors/he/ERR_SECURE_CONNECT_FAIL
--- squid-3.2.0.13/errors/he/ERR_SECURE_CONNECT_FAIL	2011-10-14 15:30:23.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_SECURE_CONNECT_FAIL	2011-12-13 00:41:24.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Failed to establish a secure connection to %I</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <p>This proxy and the remote host failed to negotiate a mutually acceptable security settings for handling your request. It is possible that the remote host does not support secure connections, or the proxy is not satisfied with the host security credentials.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>אירעה שגיאה בניסיון ליצור חיבור מאובטח ל %I</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <p>This proxy and the remote host failed to negotiate a mutually acceptable security settings for handling your request. It is possible that the remote host does not support secure connections, or the proxy is not satisfied with the host security credentials.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_SHUTTING_DOWN squid-3.2.0.14/errors/he/ERR_SHUTTING_DOWN
--- squid-3.2.0.13/errors/he/ERR_SHUTTING_DOWN	2011-10-14 15:30:26.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_SHUTTING_DOWN	2011-12-13 00:41:26.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <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>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <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>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_SOCKET_FAILURE squid-3.2.0.14/errors/he/ERR_SOCKET_FAILURE
--- squid-3.2.0.13/errors/he/ERR_SOCKET_FAILURE	2011-10-14 15:30:28.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_SOCKET_FAILURE	2011-12-13 00:41:28.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>שגיאת חיבור</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <p>השר לא הצליח ליצור חיבור TCP, כנראה בגלל עומס יתר. אנא נסה שוב.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>שגיאת חיבור</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <p>שרת ה Squid לא הצליח ליצור חיבור TCP, כנראה בגלל עומס יתר. אנא נסה שוב.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_TOO_BIG squid-3.2.0.14/errors/he/ERR_TOO_BIG
--- squid-3.2.0.13/errors/he/ERR_TOO_BIG	2011-10-14 15:30:30.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_TOO_BIG	2011-12-13 00:41:30.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>הבקשה או התשובה גדולים מדי.</b></p> </blockquote>  <p>If you are making a POST or PUT request, then the item you are trying to upload is too large.</p> <p>If you are making a GET request, then the item you are trying to download is too large.</p> <p>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.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>הבקשה או התשובה גדולים מדי.</b></p> </blockquote>  <p>If you are making a POST or PUT request, then the item you are trying to upload is too large.</p> <p>If you are making a GET request, then the item you are trying to download is too large.</p> <p>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.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_UNSUP_HTTPVERSION squid-3.2.0.14/errors/he/ERR_UNSUP_HTTPVERSION
--- squid-3.2.0.13/errors/he/ERR_UNSUP_HTTPVERSION	2011-10-14 15:30:32.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_UNSUP_HTTPVERSION	2011-12-13 00:41:31.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>Unsupported HTTP version</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unsupported HTTP version</b></p> </blockquote>  <p>This Squid does not accept the HTTP version you are attempting to use.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>גרסת HTTP לא נתמכת</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unsupported HTTP version</b></p> </blockquote>  <p>Squid לא מאפשר להשתמש בגרסת ה HTTP שאתה מנסה להשתמש.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_UNSUP_REQ squid-3.2.0.14/errors/he/ERR_UNSUP_REQ
--- squid-3.2.0.13/errors/he/ERR_UNSUP_REQ	2011-10-14 15:30:34.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_UNSUP_REQ	2011-12-13 00:41:33.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>שיטת בקשה ופרוטוקול לא נתמכים</b></p> </blockquote>  <p>השרת אינו תומך בכל שיטות הבקשה לכל הפרוטוקולים. לדוגמא אינך יכול לשלוח בקשת Gopher ב-Post.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>שיטת בקשה ופרוטוקול לא נתמכים</b></p> </blockquote>  <p>שרת ה Squid אינו תומך בכל שיטות הבקשה לכל הפרוטוקולים. לדוגמא אינך יכול לשלוח בקשת POST ב-Gopher.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_URN_RESOLVE squid-3.2.0.14/errors/he/ERR_URN_RESOLVE
--- squid-3.2.0.13/errors/he/ERR_URN_RESOLVE	2011-10-14 15:30:36.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_URN_RESOLVE	2011-12-13 00:41:36.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: The requested URN could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>A URL for the requested URN could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URN: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Cannot Resolve URN</b></p> </blockquote>  <p>אל תצפה יותר מדי מ-URN על %T :)</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: The requested URN could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>לא ניתן לאחזר את כתובת ה URL מתוך כתובת ה URN</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בזמן ניסיון לפענח את כתובת ה URN: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Cannot Resolve URN</b></p> </blockquote>  <p>אל תצפה ליותר מדי מ-URN על %T :)</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_WRITE_ERROR squid-3.2.0.14/errors/he/ERR_WRITE_ERROR
--- squid-3.2.0.13/errors/he/ERR_WRITE_ERROR	2011-10-14 15:30:38.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_WRITE_ERROR	2011-12-13 00:41:39.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>שגיאת כתיבה</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <p>An error condition occurred while writing to the network. Please retry your request.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>שגיאת כתיבה</b></p> </blockquote>  <p id="sysmsg">הודעת המערכת: <i>%E</i></p>  <p>An error condition occurred while writing to the network. Please retry your request.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/he/ERR_ZERO_SIZE_OBJECT squid-3.2.0.14/errors/he/ERR_ZERO_SIZE_OBJECT
--- squid-3.2.0.13/errors/he/ERR_ZERO_SIZE_OBJECT	2011-10-14 15:30:40.000000000 +1300
+++ squid-3.2.0.14/errors/he/ERR_ZERO_SIZE_OBJECT	2011-12-13 00:41:41.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Zero Sized Reply</b></p> </blockquote>  <p>השרת לא קיבל כל תשובה לבקשה זו.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>שגיאה: לא ניתן לגשת אל הכתובת המבוקשת</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>השגיאה הבאה אירעה בעת ניסיון לפענח את כתובת הURL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Zero Sized Reply</b></p> </blockquote>  <p>השרת לא קיבל כל תשובה לבקשה זו.</p>  <p>מנהל השרת הוא <a href="mailto:%w%W">%w</a>. </p> <br> </div>  <hr> <div id="footer"> <p>נוצר %T על ידי %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/hu/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/hu/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/hu/ERR_CANNOT_FORWARD	2011-10-14 15:30:56.000000000 +1300
+++ squid-3.2.0.14/errors/hu/ERR_CANNOT_FORWARD	2011-12-13 00:41:55.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>HIBA: A kért URL nem tölthető le</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>A kérést jelenleg nem lehet továbbítani.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>HIBA: A kért URL nem tölthető le</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>A kérést jelenleg nem lehet továbbítani.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Néhány lehetséges probléma:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/hu/error-details.txt squid-3.2.0.14/errors/hu/error-details.txt
--- squid-3.2.0.13/errors/hu/error-details.txt	2011-10-14 15:32:50.000000000 +1300
+++ squid-3.2.0.14/errors/hu/error-details.txt	2011-12-13 00:43:03.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/hy/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/hy/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/hy/ERR_CANNOT_FORWARD	2011-10-14 15:33:07.000000000 +1300
+++ squid-3.2.0.14/errors/hy/ERR_CANNOT_FORWARD	2011-12-13 00:43:12.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ՍԽԱԼ: Պահանջվող URL-ն հնարավոր չէ ստանալ</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>URL-ի ստացման ընթացքում առաջացավ հետևյալ սխալը: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Ձեր հարցումը հնարավոր չէ վերահասցեագրել տվյալ պահին</b></p> </blockquote>  <p>Այս հարցումը հնարավոր չէ վերահասցեագրել սկզբնաղբյուր սերվերին կամ ծնողական քեշերից որևէ մեկին: Սխալի ամենահավանական պատճառներն են` այս սերվերի կառավարիչը արգելել է բոլոր ուղիղ միացումները սկզբնաղբյուր սերվերների հետ կամ բոլոր ծնողական քեշերը տվյալ պահին անհասանելի են:</p>  <p>Ձեր քեշի կառավարիչը <a href="mailto:%w%W">%w</a> է.</p>  <br> </div>  <hr> <div id="footer"> <p>Ստեղծված է %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ՍԽԱԼ: Պահանջվող URL-ն հնարավոր չէ ստանալ</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>URL-ի ստացման ընթացքում առաջացավ հետևյալ սխալը: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Ձեր հարցումը հնարավոր չէ վերահասցեագրել տվյալ պահին</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Հնարավոր պատճառներն են:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Ձեր քեշի կառավարիչը <a href="mailto:%w%W">%w</a> է.</p>  <br> </div>  <hr> <div id="footer"> <p>Ստեղծված է %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/hy/error-details.txt squid-3.2.0.14/errors/hy/error-details.txt
--- squid-3.2.0.13/errors/hy/error-details.txt	2011-10-14 15:34:50.000000000 +1300
+++ squid-3.2.0.14/errors/hy/error-details.txt	2011-12-13 00:44:05.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/id/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/id/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/id/ERR_CANNOT_FORWARD	2011-10-14 15:35:13.000000000 +1300
+++ squid-3.2.0.14/errors/id/ERR_CANNOT_FORWARD	2011-12-13 00:44:15.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/id/error-details.txt squid-3.2.0.14/errors/id/error-details.txt
--- squid-3.2.0.13/errors/id/error-details.txt	2011-10-14 15:37:01.000000000 +1300
+++ squid-3.2.0.14/errors/id/error-details.txt	2011-12-13 00:45:28.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/it/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/it/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/it/ERR_CANNOT_FORWARD	2011-10-14 15:37:26.000000000 +1300
+++ squid-3.2.0.14/errors/it/ERR_CANNOT_FORWARD	2011-12-13 00:45:40.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERRORE: Non è stato possibile accedere alla URL richiesta.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Mentre si cercava di accedere alla URL <a href="%U">%U</a> si è presentato il seguente errore:</p>  <blockquote id="error"> <p><b>Non è possibile inoltrare la richiesta in questo momento.</b></p> </blockquote>  <p>La richiesta non può essere inoltrata al server di origine dei dati né ad alcun proxy di livello superiore. La causa più probabile è che l'amministratore del proxy abbia bloccato le connessioni dirette al server originario, e che tutti i proxy di livello superiore siano inaccessibili.</p>  <p>L'amministratore del proxy è <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generato da %h (%s) il %T.</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERRORE: Non è stato possibile accedere alla URL richiesta.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Mentre si cercava di accedere alla URL <a href="%U">%U</a> si è presentato il seguente errore:</p>  <blockquote id="error"> <p><b>Non è possibile inoltrare la richiesta in questo momento.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Alcuni dei possibili problemi sono:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>L'amministratore del proxy è <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generato da %h (%s) il %T.</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/it/error-details.txt squid-3.2.0.14/errors/it/error-details.txt
--- squid-3.2.0.13/errors/it/error-details.txt	2011-10-14 15:39:07.000000000 +1300
+++ squid-3.2.0.14/errors/it/error-details.txt	2011-12-13 00:47:05.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/ja/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/ja/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/ja/ERR_CANNOT_FORWARD	2011-10-14 15:39:23.000000000 +1300
+++ squid-3.2.0.14/errors/ja/ERR_CANNOT_FORWARD	2011-12-13 00:47:17.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>エラー: リクエストされた URL は取得できませんでした</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>現在，リクエストの転送はできません．</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>%Tに%h (%s)が生成しました。</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>エラー: リクエストされた URL は取得できませんでした</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>現在，リクエストの転送はできません．</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>ありそうな問題: </p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>%Tに%h (%s)が生成しました。</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/ja/error-details.txt squid-3.2.0.14/errors/ja/error-details.txt
--- squid-3.2.0.13/errors/ja/error-details.txt	2011-10-14 15:41:12.000000000 +1300
+++ squid-3.2.0.14/errors/ja/error-details.txt	2011-12-13 00:48:32.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/ko/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/ko/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/ko/ERR_CANNOT_FORWARD	2011-10-14 15:41:38.000000000 +1300
+++ squid-3.2.0.14/errors/ko/ERR_CANNOT_FORWARD	2011-12-13 00:48:44.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>에러: 요청된 URL을 가져올 수 없습니다.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>현재로서는 이 요청을 진행 시킬 수 없습니다.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>에러: 요청된 URL을 가져올 수 없습니다.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>현재로서는 이 요청을 진행 시킬 수 없습니다.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/ko/error-details.txt squid-3.2.0.14/errors/ko/error-details.txt
--- squid-3.2.0.13/errors/ko/error-details.txt	2011-10-14 15:44:17.000000000 +1300
+++ squid-3.2.0.14/errors/ko/error-details.txt	2011-12-13 00:49:58.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/lt/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/lt/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/lt/ERR_CANNOT_FORWARD	2011-10-14 15:44:48.000000000 +1300
+++ squid-3.2.0.14/errors/lt/ERR_CANNOT_FORWARD	2011-12-13 00:50:22.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>KLAIDA: Puslapis nurodytu adresu negali būti atsiųstas</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Šiuo metu negaliu persiųsti užklausos.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>KLAIDA: Puslapis nurodytu adresu negali būti atsiųstas</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Šiuo metu negaliu persiųsti užklausos.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/lt/error-details.txt squid-3.2.0.14/errors/lt/error-details.txt
--- squid-3.2.0.13/errors/lt/error-details.txt	2011-10-14 15:47:50.000000000 +1300
+++ squid-3.2.0.14/errors/lt/error-details.txt	2011-12-13 00:51:56.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/lv/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/lv/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/lv/ERR_CANNOT_FORWARD	2011-10-14 15:48:21.000000000 +1300
+++ squid-3.2.0.14/errors/lv/ERR_CANNOT_FORWARD	2011-12-13 00:52:08.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Kļūda: Nevar atvērt pieprasīto adresi.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Iestājusies sekojoša kļūda mēģinot atvērt adresi: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Šobrīda nav iespējams pārsūtīt šo pieprasījumu.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Jūsu kešatmiņas administrators ir <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Ģenerēts %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Kļūda: Nevar atvērt pieprasīto adresi.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Iestājusies sekojoša kļūda mēģinot atvērt adresi: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Šobrīda nav iespējams pārsūtīt šo pieprasījumu.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Dažas iespējamās problēmas ir:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Jūsu kešatmiņas administrators ir <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Ģenerēts %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/lv/error-details.txt squid-3.2.0.14/errors/lv/error-details.txt
--- squid-3.2.0.13/errors/lv/error-details.txt	2011-10-14 15:50:53.000000000 +1300
+++ squid-3.2.0.14/errors/lv/error-details.txt	2011-12-13 00:54:02.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/ms/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/ms/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/ms/ERR_CANNOT_FORWARD	2011-10-14 15:51:26.000000000 +1300
+++ squid-3.2.0.14/errors/ms/ERR_CANNOT_FORWARD	2011-12-13 00:54:18.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>RALAT: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Pengurus Proxy anda ialah <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Dibuat pada %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>RALAT: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Pengurus Proxy anda ialah <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Dibuat pada %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/ms/error-details.txt squid-3.2.0.14/errors/ms/error-details.txt
--- squid-3.2.0.13/errors/ms/error-details.txt	2011-10-14 15:53:51.000000000 +1300
+++ squid-3.2.0.14/errors/ms/error-details.txt	2011-12-13 00:55:59.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/nl/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/nl/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/nl/ERR_CANNOT_FORWARD	2011-10-14 15:54:15.000000000 +1300
+++ squid-3.2.0.14/errors/nl/ERR_CANNOT_FORWARD	2011-12-13 00:56:22.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FOUT: De gevraagde URL kon niet worden opgehaald</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>De volgende fout is opgetreden tijdens het ophalen van URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Momenteel niet in staat dit verzoek door te sturen.</b></p> </blockquote>  <p>Dit verzoek kon niet worden doorgestuurd naar de oorspronkelijke server of een van de parent caches.  De meest waarschijnlijke reden voor deze fout is dat de cache beheerder het deze cache niet toestaat met de oorspronkelijke server te praten, en alle ingestelde parent caches op dit moment onbereikbaar zijn.</p>  <p>De beheerder van deze cache is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Gegenereerd %T door %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FOUT: De gevraagde URL kon niet worden opgehaald</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>De volgende fout is opgetreden tijdens het ophalen van URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Momenteel niet in staat dit verzoek door te sturen.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Mogelijke problemen zijn:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>De beheerder van deze cache is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Gegenereerd %T door %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/nl/error-details.txt squid-3.2.0.14/errors/nl/error-details.txt
--- squid-3.2.0.13/errors/nl/error-details.txt	2011-10-14 15:56:40.000000000 +1300
+++ squid-3.2.0.14/errors/nl/error-details.txt	2011-12-13 00:57:51.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/oc/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/oc/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/oc/ERR_CANNOT_FORWARD	2011-10-14 15:57:14.000000000 +1300
+++ squid-3.2.0.14/errors/oc/ERR_CANNOT_FORWARD	2011-12-13 00:58:02.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR : L'URL demandada a pas pogut èsser cargada</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>L'URL demandada a pas pogut èsser cargada</h2> </div> <hr>  <div id="content"> <p>L'error seguenta s'es producha en ensajant d'accedir a l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Vòstre administrator d'amagatal es <a href="mailto:%w">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generada lo %T per %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERREUR : L'URL demandada a pas pogut èsser cargada</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>L'URL demandada a pas pogut èsser cargada</h2> </div> <hr>  <div id="content"> <p>L'error seguenta s'es producha en ensajant d'accedir a l'URL : <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Problèmas envisajables :</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Vòstre administrator d'amagatal es <a href="mailto:%w">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generada lo %T per %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/oc/error-details.txt squid-3.2.0.14/errors/oc/error-details.txt
--- squid-3.2.0.13/errors/oc/error-details.txt	2011-10-14 15:59:35.000000000 +1300
+++ squid-3.2.0.14/errors/oc/error-details.txt	2011-12-13 00:59:21.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/pl/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/pl/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/pl/ERR_CANNOT_FORWARD	2011-10-14 15:59:57.000000000 +1300
+++ squid-3.2.0.14/errors/pl/ERR_CANNOT_FORWARD	2011-12-13 00:59:33.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>BŁĄD: Żądany URL nie może zostać pobrany</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Nie można przekazać tego żądania w chwili obecnej.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Utworzono %T przez %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>BŁĄD: Żądany URL nie może zostać pobrany</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Nie można przekazać tego żądania w chwili obecnej.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Utworzono %T przez %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/pl/error-details.txt squid-3.2.0.14/errors/pl/error-details.txt
--- squid-3.2.0.13/errors/pl/error-details.txt	2011-10-14 16:02:31.000000000 +1300
+++ squid-3.2.0.14/errors/pl/error-details.txt	2011-12-13 01:00:52.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/pt/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/pt/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/pt/ERR_CANNOT_FORWARD	2011-10-14 16:05:28.000000000 +1300
+++ squid-3.2.0.14/errors/pt/ERR_CANNOT_FORWARD	2011-12-13 01:02:31.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERRO: A URL solicitada não pode ser recuperada</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Cache incapaz de encaminhar esta requisição neste momento.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERRO: A URL solicitada não pode ser recuperada</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Cache incapaz de encaminhar esta requisição neste momento.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/pt/error-details.txt squid-3.2.0.14/errors/pt/error-details.txt
--- squid-3.2.0.13/errors/pt/error-details.txt	2011-10-14 16:08:12.000000000 +1300
+++ squid-3.2.0.14/errors/pt/error-details.txt	2011-12-13 01:03:39.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/pt-br/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/pt-br/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/pt-br/ERR_CANNOT_FORWARD	2011-10-14 16:02:58.000000000 +1300
+++ squid-3.2.0.14/errors/pt-br/ERR_CANNOT_FORWARD	2011-12-13 01:01:07.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERRO: A URL requisitada não pôde ser recuperada</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>O seguinte erro foi encontrado ao tentar recuperar a URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Impossível encaminhar esta requisição nesse momento.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Seu administrador do cache é <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Gerado %T por %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERRO: A URL requisitada não pôde ser recuperada</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>O seguinte erro foi encontrado ao tentar recuperar a URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Impossível encaminhar esta requisição nesse momento.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Alguns dos possíveis problemas são:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Seu administrador do cache é <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Gerado %T por %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/pt-br/error-details.txt squid-3.2.0.14/errors/pt-br/error-details.txt
--- squid-3.2.0.13/errors/pt-br/error-details.txt	2011-10-14 16:05:12.000000000 +1300
+++ squid-3.2.0.14/errors/pt-br/error-details.txt	2011-12-13 01:02:21.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/ro/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/ro/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/ro/ERR_CANNOT_FORWARD	2011-10-14 16:08:37.000000000 +1300
+++ squid-3.2.0.14/errors/ro/ERR_CANNOT_FORWARD	2011-12-13 01:03:50.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>EROARE: URL-ul cerut nu a putut fi accesat</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>S-a recepţionat următoarea eroare când se încerca accesarea URL-ului: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Nu pot să forwardez această cerere la acest moment.</b></p> </blockquote>  <p>Această cerere nu a putut fi înaintată către serverul de origine sau un cache părinte. Cea mai probabilă cauză de eroare este că administratorul cache-ului nu permite acestui cache să facă conexiuni directe către serverele de origine şi toate cache-urile părinte nu pot fi contactate în acest moment.</p>  <p>Administratorul cache-ului este <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generat %T de către %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>EROARE: URL-ul cerut nu a putut fi accesat</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>S-a recepţionat următoarea eroare când se încerca accesarea URL-ului: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Nu pot să forwardez această cerere la acest moment.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Unele posibile probleme sunt:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Administratorul cache-ului este <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generat %T de către %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/ro/error-details.txt squid-3.2.0.14/errors/ro/error-details.txt
--- squid-3.2.0.13/errors/ro/error-details.txt	2011-10-14 16:11:21.000000000 +1300
+++ squid-3.2.0.14/errors/ro/error-details.txt	2011-12-13 01:04:52.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/ru/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/ru/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/ru/ERR_CANNOT_FORWARD	2011-10-14 16:11:53.000000000 +1300
+++ squid-3.2.0.14/errors/ru/ERR_CANNOT_FORWARD	2011-12-13 01:05:06.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ОШИБКА: Запрошенный URL не может быть получен</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>При получении URL <a href="%U">%U</a> произошла следующая ошибка</p>  <blockquote id="error"> <p><b>Невозможно переслать этот запрос в данное время.</b></p> </blockquote>  <p>Запрос не может быть направлен на сервер-источник файла или на любой вышестоящий кэширующий прокси-сервер. Наиболее вероятной причиной этой ошибки является то, что кэш-администратор запретил подключаться к серверам интернета напрямую, а все вышестоящие кэширующие прокси-серверы в данный момент не доступны.</p>  <p>Администратор Вашего кэша: <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Создано %T на %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ОШИБКА: Запрошенный URL не может быть получен</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>При получении URL <a href="%U">%U</a> произошла следующая ошибка</p>  <blockquote id="error"> <p><b>Невозможно переслать этот запрос в данное время.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Возможные проблемы:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Администратор Вашего кэша: <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Создано %T на %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/ru/error-details.txt squid-3.2.0.14/errors/ru/error-details.txt
--- squid-3.2.0.13/errors/ru/error-details.txt	2011-10-14 16:13:50.000000000 +1300
+++ squid-3.2.0.14/errors/ru/error-details.txt	2011-12-13 01:07:06.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/sk/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/sk/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/sk/ERR_CANNOT_FORWARD	2011-10-14 16:14:04.000000000 +1300
+++ squid-3.2.0.14/errors/sk/ERR_CANNOT_FORWARD	2011-12-13 01:07:25.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>CHYBA: Požadovaný URL nebolo možné získať</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Pri pokuse o získanie URL sa vyskytla nasledovná chyba: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Požiadavku teraz nie je možné presmerovať.</b></p> </blockquote>  <p>Požiadavku nemožno presmerovať k pôvodnému serveru alebo nadradeným cache serverom. Príčinou môže byť, že správca cache servera nedovolil tomuto cache serveru priamy prístup k pôvodným serverom a všetky nadradené cache servery sú práve nedostupné.</p>  <p>Vaším správcom cache je <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Vytvoril %T, %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>CHYBA: Požadovaný URL nebolo možné získať</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Pri pokuse o získanie URL sa vyskytla nasledovná chyba: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Požiadavku teraz nie je možné presmerovať.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Niektoré možné problémy:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Vaším správcom cache je <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Vytvoril %T, %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/sk/error-details.txt squid-3.2.0.14/errors/sk/error-details.txt
--- squid-3.2.0.13/errors/sk/error-details.txt	2011-10-14 16:15:39.000000000 +1300
+++ squid-3.2.0.14/errors/sk/error-details.txt	2011-12-13 01:09:19.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/sl/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/sl/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/sl/ERR_CANNOT_FORWARD	2011-10-14 16:16:00.000000000 +1300
+++ squid-3.2.0.14/errors/sl/ERR_CANNOT_FORWARD	2011-12-13 01:09:37.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>NAPAKA: Zahtevanega naslova URL ni bilo mogoče naložiti</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Prišlo je do napake med poskusom nalaganja naslova URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Te zahteve trenutno ni mogoče posredovati.</b></p> </blockquote>  <p>Te zahteve ni bilo mogoče posredovati izvornemu strežniku ali nadrejenim predpomnilnikom. Vzrok za napako je najverjetneje to, da skrbnik predpomnilnika ne dovoli, da bi ta predpomnilnik vzpostavljal neposredne povezave z izvornimi strežniki, nastavljeni nadrejeni predpomnilniki pa so trenutno vsi nedosegljivi.</p>  <p>Skrbnik vašega predpomnilnika je <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Ustvaril %h (%s) dne %T</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>NAPAKA: Zahtevanega naslova URL ni bilo mogoče naložiti</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Prišlo je do napake med poskusom nalaganja naslova URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Te zahteve trenutno ni mogoče posredovati.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Težave so lahko med drugim:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Skrbnik vašega predpomnilnika je <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Ustvaril %h (%s) dne %T</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/sl/error-details.txt squid-3.2.0.14/errors/sl/error-details.txt
--- squid-3.2.0.13/errors/sl/error-details.txt	2011-10-14 16:17:39.000000000 +1300
+++ squid-3.2.0.14/errors/sl/error-details.txt	2011-12-13 01:11:05.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/sr-cyrl/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/sr-cyrl/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/sr-cyrl/ERR_CANNOT_FORWARD	2011-10-14 16:17:55.000000000 +1300
+++ squid-3.2.0.14/errors/sr-cyrl/ERR_CANNOT_FORWARD	2011-12-13 01:11:21.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/sr-cyrl/error-details.txt squid-3.2.0.14/errors/sr-cyrl/error-details.txt
--- squid-3.2.0.13/errors/sr-cyrl/error-details.txt	2011-10-14 16:19:07.000000000 +1300
+++ squid-3.2.0.14/errors/sr-cyrl/error-details.txt	2011-12-13 01:12:42.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/sr-latn/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/sr-latn/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/sr-latn/ERR_CANNOT_FORWARD	2011-10-14 16:19:21.000000000 +1300
+++ squid-3.2.0.14/errors/sr-latn/ERR_CANNOT_FORWARD	2011-12-13 01:12:58.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>GREŠKA: Tražena adresa (URL) ne može da se učita</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Greška učitavanja podataka sa adrese (URL): <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Vaš zahtev ne može da se prosledi u ovom trenutku.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Vaš keš/proksi administrator je: <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generisano %T sa %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>GREŠKA: Tražena adresa (URL) ne može da se učita</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>Greška učitavanja podataka sa adrese (URL): <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Vaš zahtev ne može da se prosledi u ovom trenutku.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Mogući problemi su:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Vaš keš/proksi administrator je: <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generisano %T sa %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/sr-latn/error-details.txt squid-3.2.0.14/errors/sr-latn/error-details.txt
--- squid-3.2.0.13/errors/sr-latn/error-details.txt	2011-10-14 16:20:57.000000000 +1300
+++ squid-3.2.0.14/errors/sr-latn/error-details.txt	2011-12-13 01:14:31.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/sv/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/sv/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/sv/ERR_CANNOT_FORWARD	2011-10-14 16:21:29.000000000 +1300
+++ squid-3.2.0.14/errors/sv/ERR_CANNOT_FORWARD	2011-12-13 01:14:47.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FEL: Den beg&auml;rda URL:en kunde inte h&auml;mtas</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>F&ouml;ljande fel p&aring;tr&auml;ffades vid h&auml;mtning av URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Kunde ej vidarebefodra f&ouml;rfr&aring;gan vid detta tillf&auml;lle.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Din cacheserver administrat&ouml;r &auml;r <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Skapad %T av %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>FEL: Den beg&auml;rda URL:en kunde inte h&auml;mtas</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>F&ouml;ljande fel p&aring;tr&auml;ffades vid h&auml;mtning av URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Kunde ej vidarebefodra f&ouml;rfr&aring;gan vid detta tillf&auml;lle.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>N&aring;gra m&ouml;jliga problem &auml;r:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Din cacheserver administrat&ouml;r &auml;r <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Skapad %T av %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/sv/error-details.txt squid-3.2.0.14/errors/sv/error-details.txt
--- squid-3.2.0.13/errors/sv/error-details.txt	2011-10-14 16:23:51.000000000 +1300
+++ squid-3.2.0.14/errors/sv/error-details.txt	2011-12-13 01:17:04.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/templates/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/templates/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/templates/ERR_CANNOT_FORWARD	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/errors/templates/ERR_CANNOT_FORWARD	2011-12-13 00:08:18.000000000 +1300
@@ -23,7 +23,14 @@
 <p><b>Unable to forward this request at this time.</b></p>
 </blockquote>
 
-<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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>
+<p>This request could not be forwarded to the origin server or to any parent caches.</p>
+
+<p>Some possible problems are:</p>
+<ul>
+<li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li>
+<li id="no-peer">All configured parent caches may be currently unreachable.</li>
+<li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li>
+</ul>
 
 <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
 
diff -u -r -N squid-3.2.0.13/errors/templates/error-details.txt squid-3.2.0.14/errors/templates/error-details.txt
--- squid-3.2.0.13/errors/templates/error-details.txt	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/errors/templates/error-details.txt	2011-12-13 00:08:18.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/th/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/th/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/th/ERR_CANNOT_FORWARD	2011-10-14 16:24:19.000000000 +1300
+++ squid-3.2.0.14/errors/th/ERR_CANNOT_FORWARD	2011-12-13 01:17:17.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: ไม่สามารถเรียกดู URL ที่ได้รับการร้องขอ</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>ไม่สามารถเรียกดู URL ที่ได้รับการร้องขอ</h2> </div> <hr>  <div id="content"> <p>พบความผิดพลาดดังต่อไปนี้ระหว่างที่พยายามเรียกดู URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>ในขณะนี้ไม่สามารถส่งต่อ (forward) คำขอนี้</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>ผู้ดูแลระบบแคชของคุณคือ <a href="mailto:%w%W">%w</a></p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: ไม่สามารถเรียกดู URL ที่ได้รับการร้องขอ</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>ไม่สามารถเรียกดู URL ที่ได้รับการร้องขอ</h2> </div> <hr>  <div id="content"> <p>พบความผิดพลาดดังต่อไปนี้ระหว่างที่พยายามเรียกดู URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>ในขณะนี้ไม่สามารถส่งต่อ (forward) คำขอนี้</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>ปัญหาที่เป็นไปได้อาจจะเป็น:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>ผู้ดูแลระบบแคชของคุณคือ <a href="mailto:%w%W">%w</a></p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/th/error-details.txt squid-3.2.0.14/errors/th/error-details.txt
--- squid-3.2.0.13/errors/th/error-details.txt	2011-10-14 16:27:01.000000000 +1300
+++ squid-3.2.0.14/errors/th/error-details.txt	2011-12-13 01:18:35.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/tr/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/tr/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/tr/ERR_CANNOT_FORWARD	2011-10-14 16:27:28.000000000 +1300
+++ squid-3.2.0.14/errors/tr/ERR_CANNOT_FORWARD	2011-12-13 01:18:49.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>HATA: İstenilen URL'e ulaşılamadı</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>URL adresine erişilmeye çalışıyorken hata meydana geldi: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Şu anda sizi yönlendiremem.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Önbellk yöneticiniz <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>%h (%s) tarafından %T oluşturuldu</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>HATA: İstenilen URL'e ulaşılamadı</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>URL adresine erişilmeye çalışıyorken hata meydana geldi: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Şu anda sizi yönlendiremem.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Buna sebep aşağidakilerden herhangi biri olabilir:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Önbellk yöneticiniz <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>%h (%s) tarafından %T oluşturuldu</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/tr/error-details.txt squid-3.2.0.14/errors/tr/error-details.txt
--- squid-3.2.0.13/errors/tr/error-details.txt	2011-10-14 16:30:11.000000000 +1300
+++ squid-3.2.0.14/errors/tr/error-details.txt	2011-12-13 01:20:14.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/uk/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/uk/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/uk/ERR_CANNOT_FORWARD	2011-10-14 16:30:39.000000000 +1300
+++ squid-3.2.0.14/errors/uk/ERR_CANNOT_FORWARD	2011-12-13 01:20:26.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ПОМИЛКА: Запитаний URL не може бути отриманий.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>При отриманні URL: <a href="%U">%U</a> виникла помилка.</p>  <blockquote id="error"> <p><b>В даний момент неможливо переслати даний запит</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Адміністратор даного кешу <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Згенеровано %T на %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ПОМИЛКА: Запитаний URL не може бути отриманий.</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>При отриманні URL: <a href="%U">%U</a> виникла помилка.</p>  <blockquote id="error"> <p><b>В даний момент неможливо переслати даний запит</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Ймовірні причини:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Адміністратор даного кешу <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Згенеровано %T на %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/uk/error-details.txt squid-3.2.0.14/errors/uk/error-details.txt
--- squid-3.2.0.13/errors/uk/error-details.txt	2011-10-14 16:33:33.000000000 +1300
+++ squid-3.2.0.14/errors/uk/error-details.txt	2011-12-13 01:22:01.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/uz/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/uz/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/uz/ERR_CANNOT_FORWARD	2011-10-14 16:33:58.000000000 +1300
+++ squid-3.2.0.14/errors/uz/ERR_CANNOT_FORWARD	2011-12-13 01:22:16.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ХАТО: Сўралган URL топилмади</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>%h (%s) томонидан  %T яратилган</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ХАТО: Сўралган URL топилмади</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Баъзи бўлиши мумкин бўлган муаммолар:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>%h (%s) томонидан  %T яратилган</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/uz/error-details.txt squid-3.2.0.14/errors/uz/error-details.txt
--- squid-3.2.0.13/errors/uz/error-details.txt	2011-10-14 16:36:42.000000000 +1300
+++ squid-3.2.0.14/errors/uz/error-details.txt	2011-12-13 01:23:44.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/vi/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/vi/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/vi/ERR_CANNOT_FORWARD	2011-10-14 16:37:12.000000000 +1300
+++ squid-3.2.0.14/errors/vi/ERR_CANNOT_FORWARD	2011-12-13 01:23:59.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>LỖI: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Tạo %T bởi %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>LỖI: The requested URL could not be retrieved</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>Unable to forward this request at this time.</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Một số vấn đề có thể gặp:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Tạo %T bởi %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/vi/error-details.txt squid-3.2.0.14/errors/vi/error-details.txt
--- squid-3.2.0.13/errors/vi/error-details.txt	2011-10-14 16:40:18.000000000 +1300
+++ squid-3.2.0.14/errors/vi/error-details.txt	2011-12-13 01:25:38.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/zh-cn/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/zh-cn/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/zh-cn/ERR_CANNOT_FORWARD	2011-10-14 16:40:47.000000000 +1300
+++ squid-3.2.0.14/errors/zh-cn/ERR_CANNOT_FORWARD	2011-12-13 01:25:56.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>错误: 您所请求的网址（URL）无法获取</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>当尝试取回该 URL 时遇到下面的错误：<a href="%U">%U</a></p>  <blockquote id="error"> <p><b>目前无法将您的请求进行转送操作</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>缓存服务器的管理员 <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>已由 %h (%s) 生成 %T</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>错误: 您所请求的网址（URL）无法获取</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>当尝试取回该 URL 时遇到下面的错误：<a href="%U">%U</a></p>  <blockquote id="error"> <p><b>目前无法将您的请求进行转送操作</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>可能的问题包括：</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>缓存服务器的管理员 <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>已由 %h (%s) 生成 %T</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/zh-cn/error-details.txt squid-3.2.0.14/errors/zh-cn/error-details.txt
--- squid-3.2.0.13/errors/zh-cn/error-details.txt	2011-10-14 16:43:58.000000000 +1300
+++ squid-3.2.0.14/errors/zh-cn/error-details.txt	2011-12-13 01:27:26.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/errors/zh-tw/ERR_CANNOT_FORWARD squid-3.2.0.14/errors/zh-tw/ERR_CANNOT_FORWARD
--- squid-3.2.0.13/errors/zh-tw/ERR_CANNOT_FORWARD	2011-10-14 16:44:33.000000000 +1300
+++ squid-3.2.0.14/errors/zh-tw/ERR_CANNOT_FORWARD	2011-12-13 01:27:44.000000000 +1300
@@ -1 +1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>錯誤: 欲連結之網址（URL）無法正確的傳回</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>目前無法替您的網站連結要求進行轉向動作</b></p> </blockquote>  <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 the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>錯誤: 欲連結之網址（URL）無法正確的傳回</title> <style type="text/css"><!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; }  --></style> </head><body id=%c> <div id="titles"> <h1>ERROR</h1> <h2>The requested URL could not be retrieved</h2> </div> <hr>  <div id="content"> <p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>  <blockquote id="error"> <p><b>目前無法替您的網站連結要求進行轉向動作</b></p> </blockquote>  <p>This request could not be forwarded to the origin server or to any parent caches.</p>  <p>Some possible problems are:</p> <ul> <li id="network-down">An Internet connection needed to access this domains origin servers may be down.</li> <li id="no-peer">All configured parent caches may be currently unreachable.</li> <li id="permission-denied">The administrator may not allow this cache to make direct connections to origin servers.</li> </ul>  <p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>  <br> </div>  <hr> <div id="footer"> <p>Generated %T by %h (%s)</p> <!-- %c --> </div> </body></html> 
\ No newline at end of file
diff -u -r -N squid-3.2.0.13/errors/zh-tw/error-details.txt squid-3.2.0.14/errors/zh-tw/error-details.txt
--- squid-3.2.0.13/errors/zh-tw/error-details.txt	2011-10-14 16:47:36.000000000 +1300
+++ squid-3.2.0.14/errors/zh-tw/error-details.txt	2011-12-13 01:28:54.000000000 +1300
@@ -1,3 +1,7 @@
+name: SQUID_ERR_SSL_HANDSHAKE
+detail: "%ssl_error_descr: %ssl_lib_error"
+descr: "Handshake with SSL server failed"
+
 name: SQUID_X509_V_ERR_DOMAIN_MISMATCH
 detail: "%ssl_error_descr: %ssl_subject"
 descr: "Certificate does not match domainname"
diff -u -r -N squid-3.2.0.13/helpers/basic_auth/DB/basic_db_auth.8 squid-3.2.0.14/helpers/basic_auth/DB/basic_db_auth.8
--- squid-3.2.0.13/helpers/basic_auth/DB/basic_db_auth.8	2011-10-14 16:47:52.000000000 +1300
+++ squid-3.2.0.14/helpers/basic_auth/DB/basic_db_auth.8	2011-12-13 01:28:59.000000000 +1300
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "BASIC_DB_AUTH 1"
-.TH BASIC_DB_AUTH 1 "2011-10-13" "perl v5.10.1" "User Contributed Perl Documentation"
+.TH BASIC_DB_AUTH 1 "2011-12-12" "perl v5.10.1" "User Contributed Perl Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -u -r -N squid-3.2.0.13/helpers/basic_auth/PAM/basic_pam_auth.cc squid-3.2.0.14/helpers/basic_auth/PAM/basic_pam_auth.cc
--- squid-3.2.0.13/helpers/basic_auth/PAM/basic_pam_auth.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/helpers/basic_auth/PAM/basic_pam_auth.cc	2011-12-13 00:08:18.000000000 +1300
@@ -93,12 +93,12 @@
 #endif
 
 /* The default PAM service name */
-#ifndef DEFAULT_SQUID_PAM_SERVICE
+#if !defined(DEFAULT_SQUID_PAM_SERVICE)
 #define DEFAULT_SQUID_PAM_SERVICE "squid"
 #endif
 
 /* The default TTL */
-#ifndef DEFAULT_SQUID_PAM_TTL
+#if !defined(DEFAULT_SQUID_PAM_TTL)
 #define DEFAULT_SQUID_PAM_TTL 0
 #endif
 
diff -u -r -N squid-3.2.0.13/helpers/basic_auth/SMB/Makefile.am squid-3.2.0.14/helpers/basic_auth/SMB/Makefile.am
--- squid-3.2.0.13/helpers/basic_auth/SMB/Makefile.am	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/helpers/basic_auth/SMB/Makefile.am	2011-12-13 00:08:18.000000000 +1300
@@ -1,7 +1,9 @@
 include $(top_srcdir)/src/Common.am
 
+if !ENABLE_WIN32SPECIFIC
 libexec_SCRIPTS	= basic_smb_auth.sh
 libexec_PROGRAMS = basic_smb_auth
+endif 
 basic_smb_auth_SOURCES= basic_smb_auth.cc
 basic_smb_auth_CXXFLAGS = -DHELPERSCRIPT=\"$(libexecdir)/basic_smb_auth.sh\"
 basic_smb_auth_LDADD = \
diff -u -r -N squid-3.2.0.13/helpers/basic_auth/SMB/Makefile.in squid-3.2.0.14/helpers/basic_auth/SMB/Makefile.in
--- squid-3.2.0.13/helpers/basic_auth/SMB/Makefile.in	2011-10-14 14:46:55.000000000 +1300
+++ squid-3.2.0.14/helpers/basic_auth/SMB/Makefile.in	2011-12-13 00:10:17.000000000 +1300
@@ -40,7 +40,8 @@
 check_PROGRAMS =
 TESTS =
 @USE_LOADABLE_MODULES_TRUE@am__append_1 = $(INCLTDL)
-libexec_PROGRAMS = basic_smb_auth$(EXEEXT)
+@ENABLE_WIN32SPECIFIC_FALSE@libexec_PROGRAMS =  \
+@ENABLE_WIN32SPECIFIC_FALSE@	basic_smb_auth$(EXEEXT)
 subdir = helpers/basic_auth/SMB
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/acinclude/init.m4 \
@@ -331,7 +332,7 @@
 @ENABLE_XPROF_STATS_TRUE@LIBPROFILER = $(top_builddir)/lib/profiler/libprofiler.la
 COMPAT_LIB = -L$(top_builddir)/compat -lcompat-squid $(LIBPROFILER)
 subst_perlshell = sed -e 's,[@]PERL[@],$(PERL),g' <$(srcdir)/$@.pl.in >$@ || ($(RM) -f $@ ; exit 1)
-libexec_SCRIPTS = basic_smb_auth.sh
+@ENABLE_WIN32SPECIFIC_FALSE@libexec_SCRIPTS = basic_smb_auth.sh
 basic_smb_auth_SOURCES = basic_smb_auth.cc
 basic_smb_auth_CXXFLAGS = -DHELPERSCRIPT=\"$(libexecdir)/basic_smb_auth.sh\"
 basic_smb_auth_LDADD = \
diff -u -r -N squid-3.2.0.13/helpers/basic_auth/SSPI/Makefile.am squid-3.2.0.14/helpers/basic_auth/SSPI/Makefile.am
--- squid-3.2.0.13/helpers/basic_auth/SSPI/Makefile.am	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/helpers/basic_auth/SSPI/Makefile.am	2011-12-13 00:08:18.000000000 +1300
@@ -3,14 +3,21 @@
 ## we need our local files too (but avoid -I. at all costs)
 INCLUDES += -I$(srcdir)
 
+if ENABLE_WIN32SPECIFIC
 libexec_PROGRAMS = basic_sspi_auth
+endif
 
-basic_sspi_auth_SOURCES = basic_sspi_auth.cc valid.cc valid.h
+basic_sspi_auth_SOURCES = \
+	basic_sspi_auth.cc \
+	valid.cc valid.h
+basic_sspi_auth_CXXFLAGS = -Wl,--enable-auto-import
 basic_sspi_auth_LDADD = \
-	-L$(top_builddir)/lib -lsspwin32 \
 	$(COMPAT_LIB) \
-	-lnetapi32 -ladvapi32
+	-L$(top_builddir)/lib \
+	-lsspwin32 \
+	-lmiscencoding \
+	-lnetapi32 -ladvapi32 \
 	$(XTRA_LIBS)
 
-man_MANS = basic_db_auth.8
+man_MANS = basic_sspi_auth.8
 EXTRA_DIST = basic_sspi_auth.8 config.test
diff -u -r -N squid-3.2.0.13/helpers/basic_auth/SSPI/Makefile.in squid-3.2.0.14/helpers/basic_auth/SSPI/Makefile.in
--- squid-3.2.0.13/helpers/basic_auth/SSPI/Makefile.in	2011-10-14 14:46:56.000000000 +1300
+++ squid-3.2.0.14/helpers/basic_auth/SSPI/Makefile.in	2011-12-13 00:10:18.000000000 +1300
@@ -39,7 +39,8 @@
 check_PROGRAMS =
 TESTS =
 @USE_LOADABLE_MODULES_TRUE@am__append_1 = $(INCLTDL)
-libexec_PROGRAMS = basic_sspi_auth$(EXEEXT)
+@ENABLE_WIN32SPECIFIC_TRUE@libexec_PROGRAMS =  \
+@ENABLE_WIN32SPECIFIC_TRUE@	basic_sspi_auth$(EXEEXT)
 subdir = helpers/basic_auth/SSPI
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/acinclude/init.m4 \
@@ -58,11 +59,19 @@
 CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(man8dir)"
 PROGRAMS = $(libexec_PROGRAMS)
-am_basic_sspi_auth_OBJECTS = basic_sspi_auth.$(OBJEXT) valid.$(OBJEXT)
+am_basic_sspi_auth_OBJECTS =  \
+	basic_sspi_auth-basic_sspi_auth.$(OBJEXT) \
+	basic_sspi_auth-valid.$(OBJEXT)
 basic_sspi_auth_OBJECTS = $(am_basic_sspi_auth_OBJECTS)
 @ENABLE_XPROF_STATS_TRUE@am__DEPENDENCIES_1 = $(top_builddir)/lib/profiler/libprofiler.la
 am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
-basic_sspi_auth_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am__DEPENDENCIES_3 =
+basic_sspi_auth_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+	$(am__DEPENDENCIES_3)
+basic_sspi_auth_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(basic_sspi_auth_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 DEFAULT_INCLUDES = 
 depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp
 am__depfiles_maybe = depfiles
@@ -335,13 +344,20 @@
 @ENABLE_XPROF_STATS_TRUE@LIBPROFILER = $(top_builddir)/lib/profiler/libprofiler.la
 COMPAT_LIB = -L$(top_builddir)/compat -lcompat-squid $(LIBPROFILER)
 subst_perlshell = sed -e 's,[@]PERL[@],$(PERL),g' <$(srcdir)/$@.pl.in >$@ || ($(RM) -f $@ ; exit 1)
-basic_sspi_auth_SOURCES = basic_sspi_auth.cc valid.cc valid.h
+basic_sspi_auth_SOURCES = \
+	basic_sspi_auth.cc \
+	valid.cc valid.h
+
+basic_sspi_auth_CXXFLAGS = -Wl,--enable-auto-import
 basic_sspi_auth_LDADD = \
-	-L$(top_builddir)/lib -lsspwin32 \
 	$(COMPAT_LIB) \
-	-lnetapi32 -ladvapi32
+	-L$(top_builddir)/lib \
+	-lsspwin32 \
+	-lmiscencoding \
+	-lnetapi32 -ladvapi32 \
+	$(XTRA_LIBS)
 
-man_MANS = basic_db_auth.8
+man_MANS = basic_sspi_auth.8
 EXTRA_DIST = basic_sspi_auth.8 config.test
 all: all-am
 
@@ -431,7 +447,7 @@
 	rm -f $$list
 basic_sspi_auth$(EXEEXT): $(basic_sspi_auth_OBJECTS) $(basic_sspi_auth_DEPENDENCIES) 
 	@rm -f basic_sspi_auth$(EXEEXT)
-	$(CXXLINK) $(basic_sspi_auth_OBJECTS) $(basic_sspi_auth_LDADD) $(LIBS)
+	$(basic_sspi_auth_LINK) $(basic_sspi_auth_OBJECTS) $(basic_sspi_auth_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -439,8 +455,8 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_sspi_auth.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_sspi_auth-basic_sspi_auth.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_sspi_auth-valid.Po@am__quote@
 
 .cc.o:
 @am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -463,6 +479,34 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
 
+basic_sspi_auth-basic_sspi_auth.o: basic_sspi_auth.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(basic_sspi_auth_CXXFLAGS) $(CXXFLAGS) -MT basic_sspi_auth-basic_sspi_auth.o -MD -MP -MF $(DEPDIR)/basic_sspi_auth-basic_sspi_auth.Tpo -c -o basic_sspi_auth-basic_sspi_auth.o `test -f 'basic_sspi_auth.cc' || echo '$(srcdir)/'`basic_sspi_auth.cc
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/basic_sspi_auth-basic_sspi_auth.Tpo $(DEPDIR)/basic_sspi_auth-basic_sspi_auth.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='basic_sspi_auth.cc' object='basic_sspi_auth-basic_sspi_auth.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(basic_sspi_auth_CXXFLAGS) $(CXXFLAGS) -c -o basic_sspi_auth-basic_sspi_auth.o `test -f 'basic_sspi_auth.cc' || echo '$(srcdir)/'`basic_sspi_auth.cc
+
+basic_sspi_auth-basic_sspi_auth.obj: basic_sspi_auth.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(basic_sspi_auth_CXXFLAGS) $(CXXFLAGS) -MT basic_sspi_auth-basic_sspi_auth.obj -MD -MP -MF $(DEPDIR)/basic_sspi_auth-basic_sspi_auth.Tpo -c -o basic_sspi_auth-basic_sspi_auth.obj `if test -f 'basic_sspi_auth.cc'; then $(CYGPATH_W) 'basic_sspi_auth.cc'; else $(CYGPATH_W) '$(srcdir)/basic_sspi_auth.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/basic_sspi_auth-basic_sspi_auth.Tpo $(DEPDIR)/basic_sspi_auth-basic_sspi_auth.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='basic_sspi_auth.cc' object='basic_sspi_auth-basic_sspi_auth.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(basic_sspi_auth_CXXFLAGS) $(CXXFLAGS) -c -o basic_sspi_auth-basic_sspi_auth.obj `if test -f 'basic_sspi_auth.cc'; then $(CYGPATH_W) 'basic_sspi_auth.cc'; else $(CYGPATH_W) '$(srcdir)/basic_sspi_auth.cc'; fi`
+
+basic_sspi_auth-valid.o: valid.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(basic_sspi_auth_CXXFLAGS) $(CXXFLAGS) -MT basic_sspi_auth-valid.o -MD -MP -MF $(DEPDIR)/basic_sspi_auth-valid.Tpo -c -o basic_sspi_auth-valid.o `test -f 'valid.cc' || echo '$(srcdir)/'`valid.cc
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/basic_sspi_auth-valid.Tpo $(DEPDIR)/basic_sspi_auth-valid.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='valid.cc' object='basic_sspi_auth-valid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(basic_sspi_auth_CXXFLAGS) $(CXXFLAGS) -c -o basic_sspi_auth-valid.o `test -f 'valid.cc' || echo '$(srcdir)/'`valid.cc
+
+basic_sspi_auth-valid.obj: valid.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(basic_sspi_auth_CXXFLAGS) $(CXXFLAGS) -MT basic_sspi_auth-valid.obj -MD -MP -MF $(DEPDIR)/basic_sspi_auth-valid.Tpo -c -o basic_sspi_auth-valid.obj `if test -f 'valid.cc'; then $(CYGPATH_W) 'valid.cc'; else $(CYGPATH_W) '$(srcdir)/valid.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/basic_sspi_auth-valid.Tpo $(DEPDIR)/basic_sspi_auth-valid.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='valid.cc' object='basic_sspi_auth-valid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(basic_sspi_auth_CXXFLAGS) $(CXXFLAGS) -c -o basic_sspi_auth-valid.obj `if test -f 'valid.cc'; then $(CYGPATH_W) 'valid.cc'; else $(CYGPATH_W) '$(srcdir)/valid.cc'; fi`
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -822,7 +866,6 @@
 
 
 $(OBJS): $(top_srcdir)/include/version.h $(top_builddir)/include/autoconf.h
-	$(XTRA_LIBS)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff -u -r -N squid-3.2.0.13/helpers/digest_auth/eDirectory/digest_common.h squid-3.2.0.14/helpers/digest_auth/eDirectory/digest_common.h
--- squid-3.2.0.13/helpers/digest_auth/eDirectory/digest_common.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/helpers/digest_auth/eDirectory/digest_common.h	2011-12-13 00:08:18.000000000 +1300
@@ -8,8 +8,8 @@
  * Copyright (c) 2003  Robert Collins  <robertc@squid-cache.org>
  */
 
-#ifndef   _SQUID_DIGEST_COMMON_H_
-#define   _SQUID_DIGEST_COMMON_H_
+#ifndef SQUID_DIGEST_COMMON_H_
+#define SQUID_DIGEST_COMMON_H_
 
 #if HAVE_STDIO_H
 #include <stdio.h>
@@ -59,4 +59,5 @@
  */
 typedef void HandleArguments(int, char **);
 typedef void HHA1Creator(RequestData *);
-#endif /* _SQUID_DIGEST_COMMON_H_ */
+
+#endif /* SQUID_DIGEST_COMMON_H_ */
diff -u -r -N squid-3.2.0.13/helpers/digest_auth/file/digest_common.h squid-3.2.0.14/helpers/digest_auth/file/digest_common.h
--- squid-3.2.0.13/helpers/digest_auth/file/digest_common.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/helpers/digest_auth/file/digest_common.h	2011-12-13 00:08:18.000000000 +1300
@@ -8,8 +8,8 @@
  * Copyright (c) 2003  Robert Collins  <robertc@squid-cache.org>
  */
 
-#ifndef   _SQUID_DIGEST_COMMON_H_
-#define   _SQUID_DIGEST_COMMON_H_
+#ifndef SQUID_DIGEST_COMMON_H_
+#define SQUID_DIGEST_COMMON_H_
 
 #include "hash.h"
 #include "rfc2617.h"
@@ -47,4 +47,5 @@
  */
 typedef void HandleArguments(int, char **);
 typedef void HHA1Creator(RequestData *);
-#endif /* _SQUID_DIGEST_COMMON_H_ */
+
+#endif /* SQUID_DIGEST_COMMON_H_ */
diff -u -r -N squid-3.2.0.13/helpers/digest_auth/LDAP/digest_common.h squid-3.2.0.14/helpers/digest_auth/LDAP/digest_common.h
--- squid-3.2.0.13/helpers/digest_auth/LDAP/digest_common.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/helpers/digest_auth/LDAP/digest_common.h	2011-12-13 00:08:18.000000000 +1300
@@ -8,8 +8,8 @@
  * Copyright (c) 2003  Robert Collins  <robertc@squid-cache.org>
  */
 
-#ifndef   _SQUID_DIGEST_COMMON_H_
-#define   _SQUID_DIGEST_COMMON_H_
+#ifndef SQUID_DIGEST_COMMON_H_
+#define SQUID_DIGEST_COMMON_H_
 
 #if HAVE_STDIO_H
 #include <stdio.h>
@@ -56,4 +56,5 @@
  */
 typedef void HandleArguments(int, char **);
 typedef void HHA1Creator(RequestData *);
-#endif /* _SQUID_DIGEST_COMMON_H_ */
+
+#endif /* SQUID_DIGEST_COMMON_H_ */
diff -u -r -N squid-3.2.0.13/helpers/external_acl/session/config.test squid-3.2.0.14/helpers/external_acl/session/config.test
--- squid-3.2.0.13/helpers/external_acl/session/config.test	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/helpers/external_acl/session/config.test	2011-12-13 00:08:18.000000000 +1300
@@ -1,10 +1,6 @@
 #!/bin/sh
 
-# Actual intended test
-if [ -f /usr/include/db_185.h ]; then
-    exit 0
-fi
-if [ -f /usr/include/db.h ] && grep dbopen /usr/include/db.h; then
+if [ -f /usr/include/db.h ] && grep db_env_create /usr/include/db.h; then
     exit 0
 fi
 exit 1
diff -u -r -N squid-3.2.0.13/helpers/external_acl/session/ext_session_acl.8 squid-3.2.0.14/helpers/external_acl/session/ext_session_acl.8
--- squid-3.2.0.13/helpers/external_acl/session/ext_session_acl.8	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/helpers/external_acl/session/ext_session_acl.8	2011-12-13 00:08:18.000000000 +1300
@@ -1,11 +1,11 @@
-.if !'po4a'hide' .TH ext_session_acl 8 "19 September 2011"
+.if !'po4a'hide' .TH ext_session_acl 8 "9 October 2011"
 .
 .SH NAME
 .if !'po4a'hide' .B ext_session_acl
 .if !'po4a'hide' \-
 Squid session tracking external acl helper.
 .PP
-Version 1.1
+Version 1.2
 .
 .SH SYNOPSIS
 .if !'po4a'hide' .B ext_session_acl
@@ -52,9 +52,15 @@
 .if !'po4a'hide' .TP
 .if !'po4a'hide' .B "\-b path"
 .B Path
-to persistent database. If not specified the session details
-will be kept in memory only and all sessions will reset each time
-Squid restarts its helpers (Squid restart or rotation of logs).
+to persistent database. If a file is specified then that single file is
+used as the database. If a path is specified, a Berkeley DB database
+environment is created within the directory. The advantage of the latter
+is better database support between multiple instances of the session
+helper. Using multiple instances of the session helper with a single
+database file will cause synchronisation problems between processes.
+If this option is not specified the session details will be kept in
+memory only and all sessions will reset each time Squid restarts its
+helpers (Squid restart or rotation of logs).
 .
 .if !'po4a'hide' .TP
 .if !'po4a'hide' .B \-a
@@ -91,6 +97,7 @@
 .SH AUTHOR
 This program and documentation was written by
 .if !'po4a'hide' .I Henrik Nordstrom <henrik@henriknordstrom.net>
+.if !'po4a'hide' .I Andrew Beverley <andy@andybev.com>
 .
 .SH COPYRIGHT
 This program and documentation is copyright to the authors named above.
diff -u -r -N squid-3.2.0.13/helpers/external_acl/session/ext_session_acl.cc squid-3.2.0.14/helpers/external_acl/session/ext_session_acl.cc
--- squid-3.2.0.13/helpers/external_acl/session/ext_session_acl.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/helpers/external_acl/session/ext_session_acl.cc	2011-12-13 00:08:18.000000000 +1300
@@ -23,18 +23,21 @@
 #endif
 #include "helpers/defines.h"
 
-#include <sys/types.h>
-#include <sys/stat.h>
+#if HAVE_DB_H
+#include <db.h>
+#endif
 #include <fcntl.h>
+#if HAVE_GETOPT_H
+#include <getopt.h>
+#endif
 #include <stdio.h>
 #include <stdlib.h>
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
 #include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 #include <time.h>
-#if HAVE_GETOPT_H
-#include <getopt.h>
+#if HAVE_UNISTD_H
+#include <unistd.h>
 #endif
 
 /* At this point all Bit Types are already defined, so we must
@@ -45,45 +48,71 @@
 #define        __BIT_TYPES_DEFINED__
 #endif
 
-#if HAVE_DB_185_H
-#include <db_185.h>
-#elif HAVE_DB_H
-#include <db.h>
-#endif
-
 static int session_ttl = 3600;
 static int fixed_timeout = 0;
 char *db_path = NULL;
 const char *program_name;
 
 DB *db = NULL;
+DB_ENV *db_env = NULL;
 
 static void init_db(void)
 {
-    db = dbopen(db_path, O_CREAT | O_RDWR, 0666, DB_BTREE, NULL);
-    if (!db) {
-        fprintf(stderr, "FATAL: %s: Failed to open session db '%s'\n", program_name, db_path);
-        exit(1);
+    struct stat st_buf;
+
+    if (db_path) {
+        if (!stat(db_path, &st_buf)) {
+            if (S_ISDIR (st_buf.st_mode)) {
+                /* If directory then open database environment. This prevents sync problems
+                    between different processes. Otherwise fallback to single file */
+                db_env_create(&db_env, 0);
+                if (db_env->open(db_env, db_path, DB_CREATE | DB_INIT_MPOOL | DB_INIT_LOCK , 0666)) {
+                    fprintf(stderr, "FATAL: %s: Failed to open database environment in '%s'\n", program_name, db_path);
+                    db_env->close(db_env, 0);
+                    exit(1);
+                }
+                db_create(&db, db_env, 0);
+            }
+        }
+    }
+
+    if (db_env) {
+        if (db->open(db, NULL, "session", NULL, DB_BTREE, DB_CREATE, 0666)) {
+            fprintf(stderr, "FATAL: %s: Failed to open db file '%s' in dir '%s'\n",
+                    program_name, "session", db_path);
+            db_env->close(db_env, 0);
+            exit(1);
+        }
+    } else {
+        db_create(&db, NULL, 0);
+        if (db->open(db, NULL, db_path, NULL, DB_BTREE, DB_CREATE, 0666)) {
+            fprintf(stderr, "FATAL: %s: Failed to open session db '%s'\n", program_name, db_path);
+            exit(1);
+        }
     }
 }
 
 static void shutdown_db(void)
 {
-    db->close(db);
+    db->close(db, 0);
+    if (db_env) {
+        db_env->close(db_env, 0);
+    }
 }
 
 int session_is_active = 0;
 
 static int session_active(const char *details, size_t len)
 {
-    DBT key, data;
+    DBT key = {0};
+    DBT data = {0};
     key.data = (void *)details;
     key.size = len;
-    if (db->get(db, &key, &data, 0) == 0) {
+    if (db->get(db, NULL, &key, &data, 0) == 0) {
         time_t timestamp;
         if (data.size != sizeof(timestamp)) {
             fprintf(stderr, "ERROR: %s: CORRUPTED DATABASE (%s)\n", program_name, details);
-            db->del(db, &key, 0);
+            db->del(db, NULL, &key, 0);
             return 0;
         }
         memcpy(&timestamp, data.data, sizeof(timestamp));
@@ -95,22 +124,22 @@
 
 static void session_login(const char *details, size_t len)
 {
-    DBT key, data;
-    time_t now = time(NULL);
+    DBT key = {0};
+    DBT data = {0};
     key.data = (void *)details;
     key.size = len;
+    time_t now = time(NULL);
     data.data = &now;
     data.size = sizeof(now);
-    db->put(db, &key, &data, 0);
-    db->sync(db, 0);
+    db->put(db, NULL, &key, &data, 0);
 }
 
 static void session_logout(const char *details, size_t len)
 {
-    DBT key;
+    DBT key = {0};
     key.data = (void *)details;
     key.size = len;
-    db->del(db, &key, 0);
+    db->del(db, NULL, &key, 0);
 }
 
 static void usage(void)
@@ -156,21 +185,24 @@
     while (fgets(request, HELPER_INPUT_BUFFER, stdin)) {
         int action = 0;
         const char *channel_id = strtok(request, " ");
-        const char *detail = strtok(NULL, "\n");
+        char *detail = strtok(NULL, "\n");
         if (detail == NULL) {
             // Only 1 paramater supplied. We are expecting at least 2 (including the channel ID)
             fprintf(stderr, "FATAL: %s is concurrent and requires the concurrency option to be specified.\n", program_name);
+            shutdown_db();
             exit(1);
         }
-        const char *lastdetail = strrchr(detail, ' ');
+        char *lastdetail = strrchr(detail, ' ');
         size_t detail_len = strlen(detail);
         if (lastdetail) {
             if (strcmp(lastdetail, " LOGIN") == 0) {
                 action = 1;
                 detail_len = (size_t)(lastdetail-detail);
+                *lastdetail = '\0';
             } else if (strcmp(lastdetail, " LOGOUT") == 0) {
                 action = -1;
                 detail_len = (size_t)(lastdetail-detail);
+                *lastdetail = '\0';
             }
         }
         if (action == -1) {
diff -u -r -N squid-3.2.0.13/helpers/external_acl/wbinfo_group/ext_wbinfo_group_acl.8 squid-3.2.0.14/helpers/external_acl/wbinfo_group/ext_wbinfo_group_acl.8
--- squid-3.2.0.13/helpers/external_acl/wbinfo_group/ext_wbinfo_group_acl.8	2011-10-14 16:48:15.000000000 +1300
+++ squid-3.2.0.14/helpers/external_acl/wbinfo_group/ext_wbinfo_group_acl.8	2011-12-13 01:29:07.000000000 +1300
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "EXT_WBINFO_GROUP_ACL.PL.IN 1"
-.TH EXT_WBINFO_GROUP_ACL.PL.IN 1 "2011-10-13" "perl v5.10.1" "User Contributed Perl Documentation"
+.TH EXT_WBINFO_GROUP_ACL.PL.IN 1 "2011-12-12" "perl v5.10.1" "User Contributed Perl Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -u -r -N squid-3.2.0.13/helpers/log_daemon/file/Makefile.am squid-3.2.0.14/helpers/log_daemon/file/Makefile.am
--- squid-3.2.0.13/helpers/log_daemon/file/Makefile.am	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/helpers/log_daemon/file/Makefile.am	2011-12-13 00:08:18.000000000 +1300
@@ -2,4 +2,7 @@
 
 libexec_PROGRAMS = log_file_daemon
 log_file_daemon_SOURCES = log_file_daemon.cc
+log_file_daemon_LDADD = \
+	-L$(top_builddir)/lib $(COMPAT_LIB) \
+	$(XTRA_LIBS)
 EXTRA_DIST = config.test
diff -u -r -N squid-3.2.0.13/helpers/log_daemon/file/Makefile.in squid-3.2.0.14/helpers/log_daemon/file/Makefile.in
--- squid-3.2.0.13/helpers/log_daemon/file/Makefile.in	2011-10-14 14:47:17.000000000 +1300
+++ squid-3.2.0.14/helpers/log_daemon/file/Makefile.in	2011-12-13 00:10:27.000000000 +1300
@@ -60,7 +60,11 @@
 PROGRAMS = $(libexec_PROGRAMS)
 am_log_file_daemon_OBJECTS = log_file_daemon.$(OBJEXT)
 log_file_daemon_OBJECTS = $(am_log_file_daemon_OBJECTS)
-log_file_daemon_LDADD = $(LDADD)
+@ENABLE_XPROF_STATS_TRUE@am__DEPENDENCIES_1 = $(top_builddir)/lib/profiler/libprofiler.la
+am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+am__DEPENDENCIES_3 =
+log_file_daemon_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+	$(am__DEPENDENCIES_3)
 DEFAULT_INCLUDES = 
 depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp
 am__depfiles_maybe = depfiles
@@ -301,6 +305,10 @@
 COMPAT_LIB = -L$(top_builddir)/compat -lcompat-squid $(LIBPROFILER)
 subst_perlshell = sed -e 's,[@]PERL[@],$(PERL),g' <$(srcdir)/$@.pl.in >$@ || ($(RM) -f $@ ; exit 1)
 log_file_daemon_SOURCES = log_file_daemon.cc
+log_file_daemon_LDADD = \
+	-L$(top_builddir)/lib $(COMPAT_LIB) \
+	$(XTRA_LIBS)
+
 EXTRA_DIST = config.test
 all: all-am
 
diff -u -r -N squid-3.2.0.13/include/autoconf.h.in squid-3.2.0.14/include/autoconf.h.in
--- squid-3.2.0.13/include/autoconf.h.in	2011-10-14 14:46:18.000000000 +1300
+++ squid-3.2.0.14/include/autoconf.h.in	2011-12-13 00:09:57.000000000 +1300
@@ -145,6 +145,9 @@
 /* Define to 1 if you have the <crypt.h> header file. */
 #undef HAVE_CRYPT_H
 
+/* Define to 1 if you have the <cstdarg> header file. */
+#undef HAVE_CSTDARG
+
 /* Define to 1 if you have the <cstdlib> header file. */
 #undef HAVE_CSTDLIB
 
diff -u -r -N squid-3.2.0.13/include/RefCount.h squid-3.2.0.14/include/RefCount.h
--- squid-3.2.0.13/include/RefCount.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/include/RefCount.h	2011-12-13 00:08:18.000000000 +1300
@@ -32,8 +32,8 @@
  *
  */
 
-#ifndef _SQUID_REFCOUNT_H_
-#define _SQUID_REFCOUNT_H_
+#ifndef SQUID_REFCOUNT_H_
+#define SQUID_REFCOUNT_H_
 
 #if HAVE_IOSTREAM
 #include <iostream>
@@ -144,4 +144,4 @@
         return os << "NULL";
 }
 
-#endif /* _SQUID_REFCOUNT_H_ */
+#endif /* SQUID_REFCOUNT_H_ */
diff -u -r -N squid-3.2.0.13/include/squid_endian.h squid-3.2.0.14/include/squid_endian.h
--- squid-3.2.0.13/include/squid_endian.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/include/squid_endian.h	2011-12-13 00:08:18.000000000 +1300
@@ -127,7 +127,7 @@
  *
  *      Except OpenBSD - htole16 & 32 exist, but not le16toh etc
  */
-#if defined(_SQUID_OPENBSD_)
+#if _SQUID_OPENBSD_
 #  define le16toh(x) htole16(x)
 #  define le32toh(x) htole32(x)
 #endif
diff -u -r -N squid-3.2.0.13/include/util.h squid-3.2.0.14/include/util.h
--- squid-3.2.0.13/include/util.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/include/util.h	2011-12-13 00:08:18.000000000 +1300
@@ -48,7 +48,7 @@
 SQUIDCEXTERN double tvSubDsec(struct timeval, struct timeval);
 SQUIDCEXTERN size_t xcountws(const char *str);
 SQUIDCEXTERN void Tolower(char *);
-#ifdef __cplusplus
+#if defined(__cplusplus)
 /*
  * Any code using libstdc++ must have externally resolvable overloads
  * for void * operator new - which means in the .o for the binary,
@@ -56,8 +56,8 @@
  * so, look in the translation unit containing main() in squid
  * for the extern version in squid
  */
-#ifndef _SQUID_EXTERNNEW_
-#ifdef __GNUC_STDC_INLINE__
+#if !defined(_SQUID_EXTERNNEW_)
+#if defined(__GNUC_STDC_INLINE__)
 #define _SQUID_EXTERNNEW_ extern inline __attribute__((gnu_inline))
 #else
 #define _SQUID_EXTERNNEW_ extern inline
diff -u -r -N squid-3.2.0.13/include/version.h squid-3.2.0.14/include/version.h
--- squid-3.2.0.13/include/version.h	2011-10-14 14:49:52.000000000 +1300
+++ squid-3.2.0.14/include/version.h	2011-12-13 00:11:47.000000000 +1300
@@ -9,7 +9,7 @@
  */
 
 #ifndef SQUID_RELEASE_TIME
-#define SQUID_RELEASE_TIME 1318556567
+#define SQUID_RELEASE_TIME 1323688094
 #endif
 
 #ifndef APP_SHORTNAME
diff -u -r -N squid-3.2.0.13/lib/dirent.c squid-3.2.0.14/lib/dirent.c
--- squid-3.2.0.13/lib/dirent.c	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/lib/dirent.c	2011-12-13 00:08:18.000000000 +1300
@@ -51,7 +51,7 @@
 #include "config.h"
 
 /* The following code section is part of the native Windows Squid port */
-#if defined(_SQUID_MSWIN_)
+#if _SQUID_MSWIN_
 
 #include "util.h"
 #include <stdlib.h>
diff -u -r -N squid-3.2.0.13/lib/libTrie/acinclude.m4 squid-3.2.0.14/lib/libTrie/acinclude.m4
--- squid-3.2.0.13/lib/libTrie/acinclude.m4	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/lib/libTrie/acinclude.m4	2011-12-13 00:08:18.000000000 +1300
@@ -1,33 +1 @@
 dnl
-dnl thanks to autogen, for the template..
-dnl
-dnl @synopsis  AC_TEST_CHECKFORHUGEOBJECTS
-dnl
-dnl Test whether -fhuge-objects is available with this c++ compiler. gcc-29.5 series compilers need this on some platform with large objects.
-dnl
-HUGE_OBJECT_FLAG=""
-AC_DEFUN([AC_TEST_CHECKFORHUGEOBJECTS],[
- if test "$GCC" = "yes"; then
-  AC_MSG_CHECKING([whether compiler accepts -fhuge-objects])
-  AC_CACHE_VAL([ac_cv_test_checkforhugeobjects],[
-    ac_cv_test_checkforhugeobjects=`echo "int main(int argc, char **argv) { int foo; }" > conftest.cc
-${CXX} -Werror -fhuge-objects -o conftest.bin conftest.cc 2>/dev/null
-res=$?
-rm -f conftest.*
-echo yes
-exit $res`
-    if [[ $? -ne 0 ]]
-    then ac_cv_test_checkforhugeobjects=no
-    else if [[ -z "$ac_cv_test_checkforhugeobjects" ]]
-         then ac_cv_test_checkforhugeobjects=yes
-    fi ; fi
-  ]) # end of CACHE_VAL
-  AC_MSG_RESULT([${ac_cv_test_checkforhugeobjects}])
-
-  if test "X${ac_cv_test_checkforhugeobjects}" != Xno
-  then
-    HUGE_OBJECT_FLAG="-fhuge-objects"
-  fi
- fi #gcc
-]) # end of AC_DEFUN of AC_TEST_CHECKFORHUGEOBJECTS
-
diff -u -r -N squid-3.2.0.13/lib/libTrie/configure squid-3.2.0.14/lib/libTrie/configure
--- squid-3.2.0.13/lib/libTrie/configure	2011-10-14 14:49:51.000000000 +1300
+++ squid-3.2.0.14/lib/libTrie/configure	2011-12-13 00:11:46.000000000 +1300
@@ -14763,38 +14763,6 @@
      TRIE_CXXFLAGS="-Werror $TRIE_CXXFLAGS"
   fi
 
-
- if test "$GCC" = "yes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler accepts -fhuge-objects" >&5
-$as_echo_n "checking whether compiler accepts -fhuge-objects... " >&6; }
-  if ${ac_cv_test_checkforhugeobjects+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    ac_cv_test_checkforhugeobjects=`echo "int main(int argc, char **argv) { int foo; }" > conftest.cc
-${CXX} -Werror -fhuge-objects -o conftest.bin conftest.cc 2>/dev/null
-res=$?
-rm -f conftest.*
-echo yes
-exit $res`
-    if [ $? -ne 0 ]
-    then ac_cv_test_checkforhugeobjects=no
-    else if [ -z "$ac_cv_test_checkforhugeobjects" ]
-         then ac_cv_test_checkforhugeobjects=yes
-    fi ; fi
-
-fi
- # end of CACHE_VAL
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_test_checkforhugeobjects}" >&5
-$as_echo "${ac_cv_test_checkforhugeobjects}" >&6; }
-
-  if test "X${ac_cv_test_checkforhugeobjects}" != Xno
-  then
-    HUGE_OBJECT_FLAG="-fhuge-objects"
-  fi
- fi #gcc
-
-  TRIE_CXXFLAGS="$TRIE_CXXFLAGS $HUGE_OBJECT_FLAG"
 fi
 
 
diff -u -r -N squid-3.2.0.13/lib/libTrie/configure.ac squid-3.2.0.14/lib/libTrie/configure.ac
--- squid-3.2.0.13/lib/libTrie/configure.ac	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/lib/libTrie/configure.ac	2011-12-13 00:08:18.000000000 +1300
@@ -89,8 +89,6 @@
      TRIE_CXXFLAGS="-Werror $TRIE_CXXFLAGS"
   fi
 
-  AC_TEST_CHECKFORHUGEOBJECTS
-  TRIE_CXXFLAGS="$TRIE_CXXFLAGS $HUGE_OBJECT_FLAG"
 fi
 
 AC_SUBST(TRIE_CFLAGS)
diff -u -r -N squid-3.2.0.13/lib/ntlmauth/support_bits.cci squid-3.2.0.14/lib/ntlmauth/support_bits.cci
--- squid-3.2.0.13/lib/ntlmauth/support_bits.cci	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/lib/ntlmauth/support_bits.cci	2011-12-13 00:08:18.000000000 +1300
@@ -1,5 +1,5 @@
-#ifndef _SQUID_LIBNTLMAUTH_SUPPORT_BITS_CCI
-#define _SQUID_LIBNTLMAUTH_SUPPORT_BITS_CCI
+#ifndef SQUID_LIBNTLMAUTH_SUPPORT_BITS_CCI
+#define SQUID_LIBNTLMAUTH_SUPPORT_BITS_CCI
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -97,4 +97,4 @@
 
 }
 
-#endif /* _SQUID_LIBNTLMAUTH_SUPPORT_BITS_CCI */
+#endif /* SQUID_LIBNTLMAUTH_SUPPORT_BITS_CCI */
diff -u -r -N squid-3.2.0.13/lib/radix.c squid-3.2.0.14/lib/radix.c
--- squid-3.2.0.13/lib/radix.c	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/lib/radix.c	2011-12-13 00:08:18.000000000 +1300
@@ -65,6 +65,8 @@
  */
 
 #include "config.h"
+#include "radix.h"
+#include "util.h"
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
@@ -105,10 +107,6 @@
 #include <assert.h>
 #endif
 
-#include "util.h"
-
-#include "radix.h"
-
 int squid_max_keylen;
 struct squid_radix_mask *squid_rn_mkfreelist;
 struct squid_radix_node_head *squid_mask_rnhead;
diff -u -r -N squid-3.2.0.13/po4a.conf squid-3.2.0.14/po4a.conf
--- squid-3.2.0.13/po4a.conf	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/po4a.conf	2011-12-13 00:08:18.000000000 +1300
@@ -2,6 +2,8 @@
 
 [po4a_paths] doc/manuals/manuals.pot $lang:doc/manuals/$lang.po
 
+[type: man] helpers/basic_auth/DB/basic_db_auth.pl.8 $lang:doc/manuals/$lang/basic_db_auth.pl.8
+
 [type: man] helpers/basic_auth/getpwnam/basic_getpwnam_auth.8 $lang:doc/manuals/$lang/basic_getpwnam_auth.8
 
 [type: man] helpers/basic_auth/LDAP/basic_ldap_auth.8 $lang:doc/manuals/$lang/basic_ldap_auth.8
diff -u -r -N squid-3.2.0.13/RELEASENOTES.html squid-3.2.0.14/RELEASENOTES.html
--- squid-3.2.0.13/RELEASENOTES.html	2011-10-14 16:49:16.000000000 +1300
+++ squid-3.2.0.14/RELEASENOTES.html	2011-12-13 01:29:38.000000000 +1300
@@ -2,10 +2,10 @@
 <HTML>
 <HEAD>
  <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.66">
- <TITLE>Squid 3.2.0.13 release notes</TITLE>
+ <TITLE>Squid 3.2.0.14 release notes</TITLE>
 </HEAD>
 <BODY>
-<H1>Squid 3.2.0.13 release notes</H1>
+<H1>Squid 3.2.0.14 release notes</H1>
 
 <H2>Squid Developers</H2>
 <HR>
@@ -25,18 +25,17 @@
 
 <UL>
 <LI><A NAME="toc2.1">2.1</A> <A HREF="#ss2.1">Fixed CVE-2009-0801 : NAT interception vulnerability to malicious clients.</A>
-<LI><A NAME="toc2.2">2.2</A> <A HREF="#ss2.2">NCSA helper DES algorithm password limits</A>
-<LI><A NAME="toc2.3">2.3</A> <A HREF="#ss2.3">SMP scalability</A>
-<LI><A NAME="toc2.4">2.4</A> <A HREF="#ss2.4">Helper Multiplexer</A>
-<LI><A NAME="toc2.5">2.5</A> <A HREF="#ss2.5">Helpers On-Demand</A>
-<LI><A NAME="toc2.6">2.6</A> <A HREF="#ss2.6">Helper Name Changes</A>
-<LI><A NAME="toc2.7">2.7</A> <A HREF="#ss2.7">Multi-Lingual manuals</A>
-<LI><A NAME="toc2.8">2.8</A> <A HREF="#ss2.8">Solaris 10 pthreads Support (Experimental)</A>
-<LI><A NAME="toc2.9">2.9</A> <A HREF="#ss2.9">Surrogate/1.0 protocol extensions to HTTP</A>
-<LI><A NAME="toc2.10">2.10</A> <A HREF="#ss2.10">Logging Infrastructure Updated</A>
-<LI><A NAME="toc2.11">2.11</A> <A HREF="#ss2.11">Client Bandwidth Limits</A>
-<LI><A NAME="toc2.12">2.12</A> <A HREF="#ss2.12">Better eCAP Suport</A>
-<LI><A NAME="toc2.13">2.13</A> <A HREF="#ss2.13">Cache Manager access changes</A>
+<LI><A NAME="toc2.2">2.2</A> <A HREF="#ss2.2">SMP scalability</A>
+<LI><A NAME="toc2.3">2.3</A> <A HREF="#ss2.3">Helper Multiplexer</A>
+<LI><A NAME="toc2.4">2.4</A> <A HREF="#ss2.4">Helpers On-Demand</A>
+<LI><A NAME="toc2.5">2.5</A> <A HREF="#ss2.5">Helper Name Changes</A>
+<LI><A NAME="toc2.6">2.6</A> <A HREF="#ss2.6">Multi-Lingual manuals</A>
+<LI><A NAME="toc2.7">2.7</A> <A HREF="#ss2.7">Solaris 10 pthreads Support (Experimental)</A>
+<LI><A NAME="toc2.8">2.8</A> <A HREF="#ss2.8">Surrogate/1.0 protocol extensions to HTTP</A>
+<LI><A NAME="toc2.9">2.9</A> <A HREF="#ss2.9">Logging Infrastructure Updated</A>
+<LI><A NAME="toc2.10">2.10</A> <A HREF="#ss2.10">Client Bandwidth Limits</A>
+<LI><A NAME="toc2.11">2.11</A> <A HREF="#ss2.11">Better eCAP Suport</A>
+<LI><A NAME="toc2.12">2.12</A> <A HREF="#ss2.12">Cache Manager access changes</A>
 </UL>
 <P>
 <H2><A NAME="toc3">3.</A> <A HREF="#s3">Changes to squid.conf since Squid-3.1</A></H2>
@@ -73,7 +72,7 @@
 <HR>
 <H2><A NAME="s1">1.</A> <A HREF="#toc1">Notice</A></H2>
 
-<P>The Squid Team are pleased to announce the release of Squid-3.2.0.13 for testing.</P>
+<P>The Squid Team are pleased to announce the release of Squid-3.2.0.14 for testing.</P>
 <P>This new release is available for download from 
 <A HREF="http://www.squid-cache.org/Versions/v3/3.2/">http://www.squid-cache.org/Versions/v3/3.2/</A> or the 
 <A HREF="http://www.squid-cache.org/Mirrors/http-mirrors.html">mirrors</A>.</P>
@@ -101,7 +100,6 @@
 <P>The most important of these new features are:
 <UL>
 <LI>Fixed CVE-2009-0801 : NAT interception vulnerability to malicious clients.</LI>
-<LI>NCSA helper DES algorithm password limits</LI>
 <LI>SMP scalability</LI>
 <LI>Helper Multiplexer and On-Demand</LI>
 <LI>Helper Name Changes</LI>
@@ -134,27 +132,7 @@
 error status page.</P>
 
 
-<H2><A NAME="ss2.2">2.2</A> <A HREF="#toc2.2">NCSA helper DES algorithm password limits</A>
-</H2>
-
-<P>Details in Advisory 
-<A HREF="http://www.squid-cache.org/Advisories/SQUID-2011_1.txt">SQUID-2011:2</A></P>
-
-<P>The DES algorithm used by the NCSA Basic authentication helper has an
-limit of 8 bytes but some implementations do not error when truncating
-longer passwords down to this unsafe level.</P>
-
-<P>This both significantly lowers the threshold of difficulty decrypting
-captured password files and hides from users the fact that the extra bits
-of their chosen long password is not being utilized.</P>
-
-<P>The NCSA helper bundled with Squid will prevent passwords longer than 8
-characters being sent to the DES algorithm. The MD5 hash algorithm which
-supports longer than 8 character passwords is also supported by this helper
-and should be used instead.</P>
-
-
-<H2><A NAME="ss2.3">2.3</A> <A HREF="#toc2.3">SMP scalability</A>
+<H2><A NAME="ss2.2">2.2</A> <A HREF="#toc2.2">SMP scalability</A>
 </H2>
 
 <P>The new "workers" squid.conf option can be used to launch multiple worker
@@ -198,7 +176,7 @@
 configuration" and "SMP-Related Macros" sections in squid.conf.documented.</P>
 
 
-<H2><A NAME="ss2.4">2.4</A> <A HREF="#toc2.4">Helper Multiplexer</A>
+<H2><A NAME="ss2.3">2.3</A> <A HREF="#toc2.3">Helper Multiplexer</A>
 </H2>
 
 <P>The helper multiplexer's purpose is to relieve some of the burden
@@ -246,7 +224,7 @@
 </P>
 
 
-<H2><A NAME="ss2.5">2.5</A> <A HREF="#toc2.5">Helpers On-Demand</A>
+<H2><A NAME="ss2.4">2.4</A> <A HREF="#toc2.4">Helpers On-Demand</A>
 </H2>
 
 <P>Traditionally Squid has been configured with a fixed number of helpers and started them during
@@ -282,7 +260,7 @@
 of starting the maximum number of helpers will occur.</P>
 
 
-<H2><A NAME="ss2.6">2.6</A> <A HREF="#toc2.6">Helper Name Changes</A>
+<H2><A NAME="ss2.5">2.5</A> <A HREF="#toc2.5">Helper Name Changes</A>
 </H2>
 
 <P>To improve the understanding of what each helper does and where it should be used the helper binaries
@@ -328,7 +306,8 @@
 <LI>squid_kerb_ldap - ext_kerberos_ldap_group_acl - Check logged in Kerberos or NTLM users Group membership using LDAP.</LI>
 <LI>squid_ldap_group - ext_ldap_group_acl - Check logged in users Group membership using LDAP.</LI>
 <LI>mswin_check_lm_group - ext_lm_group_acl - Check logged in users Group membership using LanManager.</LI>
-<LI>squid_session - ext_session_acl - Maintain a session cache of client identifiers (usually IP address).</LI>
+<LI>squid_session - ext_session_acl - Maintain a session cache of client identifiers (usually IP address).
+This helper has also gone through a version update and now uses more current BerkeleyDB 4.1+ APIs.</LI>
 <LI>squid_unix_group - ext_unix_group_acl - Check logged in users Group membership using local UNIX groups.</LI>
 <LI>wbinfo_group.pl - ext_wbinfo_group_acl - Check logged in users Group membership using wbinfo.</LI>
 </UL>
@@ -364,7 +343,7 @@
 </P>
 
 
-<H2><A NAME="ss2.7">2.7</A> <A HREF="#toc2.7">Multi-Lingual manuals</A>
+<H2><A NAME="ss2.6">2.6</A> <A HREF="#toc2.6">Multi-Lingual manuals</A>
 </H2>
 
 <P>The man(8) and man(1) pages bundled with Squid are now provided online for all
@@ -377,7 +356,7 @@
 This move begins the Localization of the internal administrator facing manuals.</P>
 
 
-<H2><A NAME="ss2.8">2.8</A> <A HREF="#toc2.8">Solaris 10 pthreads Support (Experimental)</A>
+<H2><A NAME="ss2.7">2.7</A> <A HREF="#toc2.7">Solaris 10 pthreads Support (Experimental)</A>
 </H2>
 
 <P>Automatic detection and use of the pthreads library available from Solaris 10</P>
@@ -389,7 +368,7 @@
 We recommend giving AUFS a try for faster disk storage and encourage feedback.</P>
 
 
-<H2><A NAME="ss2.9">2.9</A> <A HREF="#toc2.9">Surrogate/1.0 protocol extensions to HTTP</A>
+<H2><A NAME="ss2.8">2.8</A> <A HREF="#toc2.8">Surrogate/1.0 protocol extensions to HTTP</A>
 </H2>
 
 <P>The <EM>Surrogate</EM> extensions to HTTP protocol enable an origin web server to specify separate
@@ -414,7 +393,7 @@
 is required to prevent an unacceptable surrogate ID of 'localhost' being generated.</P>
 
 
-<H2><A NAME="ss2.10">2.10</A> <A HREF="#toc2.10">Logging Infrastructure Updated</A>
+<H2><A NAME="ss2.9">2.9</A> <A HREF="#toc2.9">Logging Infrastructure Updated</A>
 </H2>
 
 <P>The advanced logging modules introduced in Squid-2.7 are now available from Squid-3.2.</P>
@@ -441,7 +420,7 @@
 These logs are now created using an access_log line with the format "referrer" or "useragent".</P>
 
 
-<H2><A NAME="ss2.11">2.11</A> <A HREF="#toc2.11">Client Bandwidth Limits</A>
+<H2><A NAME="ss2.10">2.10</A> <A HREF="#toc2.10">Client Bandwidth Limits</A>
 </H2>
 
 <P>In mobile environments, Squid may need to limit Squid-to-client bandwidth
@@ -473,14 +452,14 @@
 high-bandwidth environments.</P>
 
 
-<H2><A NAME="ss2.12">2.12</A> <A HREF="#toc2.12">Better eCAP Suport</A>
+<H2><A NAME="ss2.11">2.11</A> <A HREF="#toc2.11">Better eCAP Suport</A>
 </H2>
 
 <P>Support for libecap version 0.2.0 has been added with this series of Squid. Bringing
 better support for body handling, and logging.</P>
 
 
-<H2><A NAME="ss2.13">2.13</A> <A HREF="#toc2.13">Cache Manager access changes</A>
+<H2><A NAME="ss2.12">2.12</A> <A HREF="#toc2.12">Cache Manager access changes</A>
 </H2>
 
 <P>The Squid Cache Manager has previously only been accessible under the cache_object://
@@ -522,6 +501,10 @@
 
 <P>
 <DL>
+<DT><B>adaptation_meta</B><DD>
+<P>This option allows Squid administrator to add custom ICAP request
+headers or eCAP options to Squid ICAP requests or eCAP transactions.</P>
+
 <DT><B>adaptation_send_client_ip</B><DD>
 <P>Same as depricated icap_send_client_ip
 but applies to both ICAP and eCAP.</P>
@@ -558,6 +541,9 @@
 destination IP to another source indicated by Host: domain DNS or
 cache_peer configuration. It <EM>does not</EM> affect Host: validation.</P>
 
+<DT><B>client_idle_pconn_timeout</B><DD>
+<P>Renamed from <EM>persistent_request_timeout</EM>.</P>
+
 <DT><B>cpu_affinity_map</B><DD>
 <P>New setting for SMP support to map Squid processes onto specific CPU cores.</P>
 
@@ -588,6 +574,9 @@
 <P>The else part is optional. The keywords <EM>if</EM>, <EM>else</EM> and <EM>endif</EM> 
 must be typed on their own lines, as if they were regular configuration directives.</P>
 
+<DT><B>logfile_daemon</B><DD>
+<P>Ported from 2.7. Specify the file I/O daemon helper to run for logging.</P>
+
 <DT><B>max_stale</B><DD>
 <P>Places an upper limit on how stale content Squid will serve from the cache if cache validation fails</P>
 
@@ -605,8 +594,8 @@
 </PRE>
 </P>
 
-<DT><B>logfile_daemon</B><DD>
-<P>Ported from 2.7. Specify the file I/O daemon helper to run for logging.</P>
+<DT><B>server_idle_pconn_timeout</B><DD>
+<P>Renamed from <EM>pconn_timeout</EM>.</P>
 
 <DT><B>tproxy_uses_indirect_client</B><DD>
 <P>Controls whether the indirect client address found in the X-Forwarded-For
@@ -764,9 +753,6 @@
 <DT><B>tcp_outgoing_tos</B><DD>
 <P>This parameter is now compatible with persistent server connections.</P>
 
-<DT><B>windows_ipaddrchangemonitor</B><DD>
-<P>Now only available to be set in Windows builds.</P>
-
 <DT><B>url_rewrite_children</B><DD>
 <P>New options <EM>startup=N</EM>, <EM>idle=N</EM>, <EM>concurrency=N</EM>
 <UL>
@@ -776,6 +762,9 @@
 </UL>
 </P>
 
+<DT><B>windows_ipaddrchangemonitor</B><DD>
+<P>Now only available to be set in Windows builds.</P>
+
 </DL>
 </P>
 
@@ -807,6 +796,12 @@
 <P>The behaviour controlled by this directive is no longer possible.
 It has been replaced by <EM>connect_retries</EM> option which operates a little differently.</P>
 
+<DT><B>pconn_timeout</B><DD>
+<P>Renamed to <EM>server_idle_pconn_timeout</EM></P>
+
+<DT><B>persistent_request_timeout</B><DD>
+<P>Renamed to <EM>client_idle_pconn_timeout</EM></P>
+
 <DT><B>referer_log</B><DD>
 <P>Replaced by the <EM>referrer</EM> format option on an <EM>access_log</EM> directive.</P>
 
@@ -896,7 +891,7 @@
 <P>
 <DL>
 <DT><B>--enable-auth</B><DD>
-<P>No longer takes a list of arguments. This option now is restricted to building with or without for authentication.</P>
+<P>No longer takes a list of arguments. This option now is restricted to building Squid with or without authentication support.</P>
 <P>The new <EM>--enable-auth-X</EM>/<EM>--disable-auth-X</EM> parameters determine which authentication protocols and helpers are built.</P>
 
 </DL>
diff -u -r -N squid-3.2.0.13/src/acl/Checklist.cc squid-3.2.0.14/src/acl/Checklist.cc
--- squid-3.2.0.13/src/acl/Checklist.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/acl/Checklist.cc	2011-12-13 00:08:18.000000000 +1300
@@ -216,7 +216,6 @@
         }
 
         if (!nodeMatched || state_ != NullState::Instance()) {
-            debugs(28, 3, "aclmatchAclList: " << this << " returning false (AND list entry failed to match)");
 
             bool async = state_ != NullState::Instance();
 
@@ -230,6 +229,7 @@
                    " finished() = " << finished());
 
             if (finished()) {
+                debugs(28, 3, "aclmatchAclList: " << this << " returning (AND list entry failed to match)");
                 PROF_stop(aclMatchAclList);
                 return;
             }
@@ -240,8 +240,8 @@
                 continue;
             }
 
+            debugs(28, 3, "aclmatchAclList: " << this << " returning (AND list entry awaiting an async lookup)");
             PROF_stop(aclMatchAclList);
-
             return;
         }
 
@@ -350,9 +350,9 @@
     debugs(28, 5, "aclCheckFast: list: " << accessList);
     const acl_access *acl = cbdataReference(accessList);
     while (acl != NULL && cbdataReferenceValid(acl)) {
-        currentAnswer(acl->allow);
         matchAclList(acl->aclList, true);
         if (finished()) {
+            currentAnswer(acl->allow);
             PROF_stop(aclCheckFast);
             cbdataReferenceDone(acl);
             return currentAnswer();
diff -u -r -N squid-3.2.0.13/src/acl/DestinationDomain.h squid-3.2.0.14/src/acl/DestinationDomain.h
--- squid-3.2.0.13/src/acl/DestinationDomain.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/acl/DestinationDomain.h	2011-12-13 00:08:18.000000000 +1300
@@ -47,6 +47,7 @@
 public:
     virtual int match (ACLData<MatchType> * &, ACLFilledChecklist *);
     static ACLDestinationDomainStrategy *Instance();
+    virtual bool requiresRequest() const {return true;}
 
     /**
      * Not implemented to prevent copies of the instance.
diff -u -r -N squid-3.2.0.13/src/acl/Gadgets.h squid-3.2.0.14/src/acl/Gadgets.h
--- squid-3.2.0.13/src/acl/Gadgets.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/acl/Gadgets.h	2011-12-13 00:08:18.000000000 +1300
@@ -36,5 +36,7 @@
 extern void aclCacheMatchFlush(dlink_list * cache);
 /// \ingroup ACLAPI
 extern void dump_acl_access(StoreEntry * entry, const char *name, acl_access * head);
+/// \ingroup ACLAPI
+extern void dump_acl_list(StoreEntry * entry, ACLList * head);
 
 #endif /* SQUID_ACL_GADGETS_H */
diff -u -r -N squid-3.2.0.13/src/adaptation/AccessCheck.cc squid-3.2.0.14/src/adaptation/AccessCheck.cc
--- squid-3.2.0.13/src/adaptation/AccessCheck.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/adaptation/AccessCheck.cc	2011-12-13 00:08:18.000000000 +1300
@@ -5,6 +5,7 @@
 #include "HttpRequest.h"
 #include "HttpReply.h"
 #include "acl/FilledChecklist.h"
+#include "adaptation/Initiator.h"
 #include "adaptation/Service.h"
 #include "adaptation/ServiceGroups.h"
 #include "adaptation/AccessRule.h"
@@ -18,13 +19,13 @@
 
 bool
 Adaptation::AccessCheck::Start(Method method, VectPoint vp,
-                               HttpRequest *req, HttpReply *rep, AccessCheckCallback *cb, void *cbdata)
+                               HttpRequest *req, HttpReply *rep, Adaptation::Initiator *initiator)
 {
 
     if (Config::Enabled) {
         // the new check will call the callback and delete self, eventually
         AsyncJob::Start(new AccessCheck( // we do not store so not a CbcPointer
-                            ServiceFilter(method, vp, req, rep), cb, cbdata));
+                            ServiceFilter(method, vp, req, rep), initiator));
         return true;
     }
 
@@ -33,11 +34,9 @@
 }
 
 Adaptation::AccessCheck::AccessCheck(const ServiceFilter &aFilter,
-                                     AccessCheckCallback *aCallback,
-                                     void *aCallbackData):
+                                     Adaptation::Initiator *initiator):
         AsyncJob("AccessCheck"), filter(aFilter),
-        callback(aCallback),
-        callback_data(cbdataReference(aCallbackData)),
+        theInitiator(initiator),
         acl_checklist(NULL)
 {
 #if ICAP_CLIENT
@@ -57,8 +56,6 @@
     if (h != NULL)
         h->stop("ACL");
 #endif
-    if (callback_data)
-        cbdataReferenceDone(callback_data);
 }
 
 void
@@ -185,11 +182,8 @@
 Adaptation::AccessCheck::callBack(const ServiceGroupPointer &g)
 {
     debugs(93,3, HERE << g);
-
-    void *validated_cbdata;
-    if (cbdataReferenceValidDone(callback_data, &validated_cbdata)) {
-        callback(g, validated_cbdata);
-    }
+    CallJobHere1(93, 5, theInitiator, Adaptation::Initiator,
+                 noteAdaptationAclCheckDone, g);
     mustStop("done"); // called back or will never be able to call back
 }
 
diff -u -r -N squid-3.2.0.13/src/adaptation/AccessCheck.h squid-3.2.0.14/src/adaptation/AccessCheck.h
--- squid-3.2.0.13/src/adaptation/AccessCheck.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/adaptation/AccessCheck.h	2011-12-13 00:08:18.000000000 +1300
@@ -5,6 +5,7 @@
 #include "base/AsyncJob.h"
 #include "adaptation/Elements.h"
 #include "adaptation/forward.h"
+#include "adaptation/Initiator.h"
 #include "adaptation/ServiceFilter.h"
 
 class HttpRequest;
@@ -24,17 +25,16 @@
 
     // use this to start async ACL checks; returns true if started
     static bool Start(Method method, VectPoint vp, HttpRequest *req,
-                      HttpReply *rep, AccessCheckCallback *cb, void *cbdata);
+                      HttpReply *rep, Adaptation::Initiator *initiator);
 
 protected:
     // use Start to start adaptation checks
-    AccessCheck(const ServiceFilter &aFilter, AccessCheckCallback *, void *);
+    AccessCheck(const ServiceFilter &aFilter, Adaptation::Initiator *);
     ~AccessCheck();
 
 private:
     const ServiceFilter filter;
-    AccessCheckCallback *callback;
-    void *callback_data;
+    CbcPointer<Adaptation::Initiator> theInitiator; ///< the job which ordered this access check
     ACLFilledChecklist *acl_checklist;
 
     typedef int Candidate;
diff -u -r -N squid-3.2.0.13/src/adaptation/Config.cc squid-3.2.0.14/src/adaptation/Config.cc
--- squid-3.2.0.13/src/adaptation/Config.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/adaptation/Config.cc	2011-12-13 00:08:18.000000000 +1300
@@ -37,11 +37,13 @@
 #include "acl/Gadgets.h"
 #include "Store.h"
 #include "Array.h"    // really Vector
+#include "acl/FilledChecklist.h"
 #include "adaptation/Config.h"
 #include "adaptation/Service.h"
 #include "adaptation/AccessRule.h"
 #include "adaptation/ServiceGroups.h"
 #include "adaptation/History.h"
+#include "HttpRequest.h"
 
 
 bool Adaptation::Config::Enabled = false;
@@ -50,6 +52,54 @@
 int Adaptation::Config::send_client_ip = false;
 int Adaptation::Config::send_username = false;
 int Adaptation::Config::use_indirect_client = true;
+Adaptation::Config::MetaHeaders Adaptation::Config::metaHeaders;
+
+
+Adaptation::Config::MetaHeader::Value::~Value()
+{
+    aclDestroyAclList(&aclList);
+}
+
+Adaptation::Config::MetaHeader::Value::Pointer
+Adaptation::Config::MetaHeader::addValue(const String &value)
+{
+    Value::Pointer v = new Value(value);
+    values.push_back(v);
+    return v;
+}
+
+const char *
+Adaptation::Config::MetaHeader::match(HttpRequest *request, HttpReply *reply)
+{
+
+    typedef Values::iterator VLI;
+    ACLFilledChecklist ch(NULL, request, NULL);
+    if (reply)
+        ch.reply = HTTPMSGLOCK(reply);
+
+    for (VLI i = values.begin(); i != values.end(); ++i ) {
+        const int ret= ch.fastCheck((*i)->aclList);
+        debugs(93, 5, HERE << "Check for header name: " << name << ": " << (*i)->value
+               <<", HttpRequest: " << request << " HttpReply: " << reply << " matched: " << ret);
+        if (ret == ACCESS_ALLOWED)
+            return (*i)->value.termedBuf();
+    }
+    return NULL;
+}
+
+Adaptation::Config::MetaHeader::Pointer
+Adaptation::Config::addMetaHeader(const String &headerName)
+{
+    typedef MetaHeaders::iterator AMLI;
+    for (AMLI i = metaHeaders.begin(); i != metaHeaders.end(); ++i) {
+        if ((*i)->name == headerName)
+            return (*i);
+    }
+
+    MetaHeader::Pointer meta = new MetaHeader(headerName);
+    metaHeaders.push_back(meta);
+    return meta;
+}
 
 
 Adaptation::ServiceConfig*
@@ -135,6 +185,8 @@
     DetachServices();
 
     serviceConfigs.clean();
+
+    FreeMetaHeader();
 }
 
 void
@@ -209,6 +261,64 @@
 }
 
 void
+Adaptation::Config::ParseMetaHeader(ConfigParser &parser)
+{
+    String name, value;
+    const char *warnFor[] = {
+        "Methods",
+        "Service",
+        "ISTag",
+        "Encapsulated",
+        "Opt-body-type",
+        "Max-Connections",
+        "Options-TTL",
+        "Date",
+        "Service-ID",
+        "Allow",
+        "Preview",
+        "Transfer-Preview",
+        "Transfer-Ignore",
+        "Transfer-Complete",
+        NULL
+    };
+    ConfigParser::ParseString(&name);
+    ConfigParser::ParseQuotedString(&value);
+
+    // TODO: Find a way to move this check to ICAP
+    for (int i = 0; warnFor[i] != NULL; i++) {
+        if (name.caseCmp(warnFor[i]) == 0) {
+            fatalf("%s:%d: meta name \"%s\" is a reserved ICAP header name",
+                   cfg_filename, config_lineno, name.termedBuf());
+        }
+    }
+
+    MetaHeader::Pointer meta = addMetaHeader(name);
+    MetaHeader::Value::Pointer headValue = meta->addValue(value);
+    aclParseAclList(parser, &headValue->aclList);
+}
+
+void
+Adaptation::Config::DumpMetaHeader(StoreEntry *entry, const char *name)
+{
+    typedef MetaHeaders::iterator AMLI;
+    for (AMLI m = metaHeaders.begin(); m != metaHeaders.end(); ++m) {
+        typedef MetaHeader::Values::iterator VLI;
+        for (VLI v =(*m)->values.begin(); v != (*m)->values.end(); ++v ) {
+            storeAppendPrintf(entry, "%s " SQUIDSTRINGPH " %s",
+                              name, SQUIDSTRINGPRINT((*m)->name), ConfigParser::QuoteString((*v)->value));
+            dump_acl_list(entry, (*v)->aclList);
+            storeAppendPrintf(entry, "\n");
+        }
+    }
+}
+
+void
+Adaptation::Config::FreeMetaHeader()
+{
+    metaHeaders.clean();
+}
+
+void
 Adaptation::Config::ParseServiceSet()
 {
     Adaptation::Config::ParseServiceGroup(new ServiceSet);
diff -u -r -N squid-3.2.0.13/src/adaptation/Config.h squid-3.2.0.14/src/adaptation/Config.h
--- squid-3.2.0.13/src/adaptation/Config.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/adaptation/Config.h	2011-12-13 00:08:18.000000000 +1300
@@ -2,6 +2,7 @@
 #define SQUID_ADAPTATION__CONFIG_H
 
 #include "event.h"
+#include "acl/Gadgets.h"
 #include "base/AsyncCall.h"
 #include "adaptation/forward.h"
 #include "adaptation/Elements.h"
@@ -19,6 +20,9 @@
 
     static void ParseServiceSet(void);
     static void ParseServiceChain(void);
+    static void ParseMetaHeader(ConfigParser &parser);
+    static void FreeMetaHeader();
+    static void DumpMetaHeader(StoreEntry *, const char *);
 
     static void ParseAccess(ConfigParser &parser);
     static void FreeAccess(void);
@@ -43,6 +47,54 @@
     time_t oldest_service_failure;
     int service_revival_delay;
 
+    /**
+     * Used to store meta headers. The meta headers are custom
+     * ICAP request headers or ECAP options used to pass custom
+     * transaction-state related meta information to a service.
+     */
+    class MetaHeader: public RefCountable
+    {
+    public:
+        typedef RefCount<MetaHeader> Pointer;
+        /// Stores a value for the meta header.
+        class Value: public RefCountable
+        {
+        public:
+            typedef RefCount<Value> Pointer;
+            String value; ///< a header value
+            ACLList *aclList; ///< The access list used to determine if this value is valid for a request
+            explicit Value(const String &aVal) : value(aVal), aclList(NULL) {}
+            ~Value();
+        };
+        typedef Vector<Value::Pointer> Values;
+
+        explicit MetaHeader(const String &aName): name(aName) {}
+
+        /**
+         * Adds a value to the meta header and returns a  pointer to the
+         * related Value object.
+         */
+        Value::Pointer addValue(const String &value);
+
+        /**
+         * Walks through the  possible values list of the  meta and selects
+         * the first value which matches the given HttpRequest and HttpReply
+         * or NULL if none matches.
+         */
+        const char *match(HttpRequest *request, HttpReply *reply);
+        String name; ///< The meta header name
+        Values values; ///< The possible values list for the meta header
+    };
+    typedef Vector<MetaHeader::Pointer> MetaHeaders;
+    static MetaHeaders metaHeaders; ///< The list of configured meta headers
+
+    /**
+     * Adds a header to the meta headers list and returns a pointer to the
+     * related metaHeaders object. If the header name already exists in list,
+     * returns a pointer to the existing object.
+     */
+    static MetaHeader::Pointer addMetaHeader(const String &header);
+
     typedef Vector<ServiceConfigPointer> ServiceConfigs;
     ServiceConfigs serviceConfigs;
 
diff -u -r -N squid-3.2.0.13/src/adaptation/ecap/XactionRep.cc squid-3.2.0.14/src/adaptation/ecap/XactionRep.cc
--- squid-3.2.0.13/src/adaptation/ecap/XactionRep.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/adaptation/ecap/XactionRep.cc	2011-12-13 00:08:18.000000000 +1300
@@ -81,11 +81,13 @@
         return clientIpValue();
     if (name == libecap::metaUserName)
         return usernameValue();
-    if (name == Adaptation::Config::masterx_shared_name)
+    if (Adaptation::Config::masterx_shared_name && name == Adaptation::Config::masterx_shared_name)
         return masterxSharedValue(name);
 
     // TODO: metaServerIp, metaAuthenticatedUser, and metaAuthenticatedGroups
-    return libecap::Area();
+
+    // If the name is unknown, metaValue returns an emtpy area
+    return metaValue(name);
 }
 
 void
@@ -102,6 +104,8 @@
             visitor.visit(name, value);
     }
 
+    visitEachMetaHeader(visitor);
+
     // TODO: metaServerIp, metaAuthenticatedUser, and metaAuthenticatedGroups
 }
 
@@ -162,6 +166,48 @@
     return libecap::Area();
 }
 
+const libecap::Area
+Adaptation::Ecap::XactionRep::metaValue(const libecap::Name &name) const
+{
+    HttpRequest *request = dynamic_cast<HttpRequest*>(theCauseRep ?
+                           theCauseRep->raw().header : theVirginRep.raw().header);
+    Must(request);
+    HttpReply *reply = dynamic_cast<HttpReply*>(theVirginRep.raw().header);
+
+    if (name.known()) { // must check to avoid empty names matching unset cfg
+        typedef Adaptation::Config::MetaHeaders::iterator ACAMLI;
+        for (ACAMLI i = Adaptation::Config::metaHeaders.begin(); i != Adaptation::Config::metaHeaders.end(); ++i) {
+            if (name == (*i)->name.termedBuf()) {
+                if (const char *value = (*i)->match(request, reply))
+                    return libecap::Area::FromTempString(value);
+                else
+                    return libecap::Area();
+            }
+        }
+    }
+
+    return libecap::Area();
+}
+
+void
+Adaptation::Ecap::XactionRep::visitEachMetaHeader(libecap::NamedValueVisitor &visitor) const
+{
+    HttpRequest *request = dynamic_cast<HttpRequest*>(theCauseRep ?
+                           theCauseRep->raw().header : theVirginRep.raw().header);
+    Must(request);
+    HttpReply *reply = dynamic_cast<HttpReply*>(theVirginRep.raw().header);
+
+    typedef Adaptation::Config::MetaHeaders::iterator ACAMLI;
+    for (ACAMLI i = Adaptation::Config::metaHeaders.begin(); i != Adaptation::Config::metaHeaders.end(); ++i) {
+        const char *v;
+        if (v = (*i)->match(request, reply)) {
+            const libecap::Name name((*i)->name.termedBuf());
+            const libecap::Area value = libecap::Area::FromTempString(v);
+            visitor.visit(name, value);
+        }
+    }
+}
+
 void
 Adaptation::Ecap::XactionRep::start()
 {
diff -u -r -N squid-3.2.0.13/src/adaptation/ecap/XactionRep.h squid-3.2.0.14/src/adaptation/ecap/XactionRep.h
--- squid-3.2.0.13/src/adaptation/ecap/XactionRep.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/adaptation/ecap/XactionRep.h	2011-12-13 00:08:18.000000000 +1300
@@ -93,6 +93,10 @@
     const libecap::Area clientIpValue() const;
     const libecap::Area usernameValue() const;
     const libecap::Area masterxSharedValue(const libecap::Name &name) const;
+    /// Return the adaptation meta header value for the given header "name"
+    const libecap::Area metaValue(const libecap::Name &name) const;
+    /// Return the adaptation meta headers and their values
+    void visitEachMetaHeader(libecap::NamedValueVisitor &visitor) const;
 
 private:
     AdapterXaction theMaster; // the actual adaptation xaction we represent
diff -u -r -N squid-3.2.0.13/src/adaptation/icap/ModXact.cc squid-3.2.0.14/src/adaptation/icap/ModXact.cc
--- squid-3.2.0.13/src/adaptation/icap/ModXact.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/adaptation/icap/ModXact.cc	2011-12-13 00:08:18.000000000 +1300
@@ -1414,6 +1414,19 @@
     if (TheConfig.send_username && request)
         makeUsernameHeader(request, buf);
 
+    // Adaptation::Config::metaHeaders
+    typedef Adaptation::Config::MetaHeaders::iterator ACAMLI;
+    for (ACAMLI i = Adaptation::Config::metaHeaders.begin(); i != Adaptation::Config::metaHeaders.end(); ++i) {
+        HttpRequest *r = virgin.cause ?
+                         virgin.cause : dynamic_cast<HttpRequest*>(virgin.header);
+        Must(r);
+
+        HttpReply *reply = dynamic_cast<HttpReply*>(virgin.header);
+
+        if (const char *value = (*i)->match(r, reply))
+            buf.Printf("%s: %s\r\n", (*i)->name.termedBuf(), value);
+    }
+
     // fprintf(stderr, "%s\n", buf.content());
 
     buf.append(ICAP::crlf, 2); // terminate ICAP header
diff -u -r -N squid-3.2.0.13/src/adaptation/Initiator.cc squid-3.2.0.14/src/adaptation/Initiator.cc
--- squid-3.2.0.13/src/adaptation/Initiator.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/adaptation/Initiator.cc	2011-12-13 00:08:18.000000000 +1300
@@ -7,6 +7,12 @@
 #include "adaptation/Initiator.h"
 #include "base/AsyncJobCalls.h"
 
+void
+Adaptation::Initiator::noteAdaptationAclCheckDone(Adaptation::ServiceGroupPointer group)
+{
+    Must(false);
+}
+
 CbcPointer<Adaptation::Initiate>
 Adaptation::Initiator::initiateAdaptation(Initiate *x)
 {
diff -u -r -N squid-3.2.0.13/src/adaptation/Initiator.h squid-3.2.0.14/src/adaptation/Initiator.h
--- squid-3.2.0.13/src/adaptation/Initiator.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/adaptation/Initiator.h	2011-12-13 00:08:18.000000000 +1300
@@ -23,6 +23,9 @@
     Initiator(): AsyncJob("Initiator") {}
     virtual ~Initiator() {}
 
+    /// AccessCheck calls this back with a possibly nil service group
+    /// to signal whether adaptation is needed and where it should start.
+    virtual void noteAdaptationAclCheckDone(Adaptation::ServiceGroupPointer group);
     /// called with the initial adaptation decision (adapt, block, error);
     /// virgin and/or adapted body transmission may continue after this
     virtual void noteAdaptationAnswer(const Answer &answer) = 0;
diff -u -r -N squid-3.2.0.13/src/base/AsyncCbdataCalls.h squid-3.2.0.14/src/base/AsyncCbdataCalls.h
--- squid-3.2.0.13/src/base/AsyncCbdataCalls.h	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/base/AsyncCbdataCalls.h	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,36 @@
+#ifndef SQUID_BASE_ASYNCCBDATACALLS_H
+#define SQUID_BASE_ASYNCCBDATACALLS_H
+
+#include "base/AsyncCall.h"
+#include "base/CbcPointer.h"
+
+// dialer to run cbdata callback functions as Async Calls
+// to ease the transition of these cbdata objects to full Jobs
+template<class Argument1>
+class UnaryCbdataDialer : public CallDialer
+{
+public:
+    typedef void Handler(Argument1 *);
+
+    UnaryCbdataDialer(Handler *aHandler, Argument1 *aArg) :
+            arg1(aArg),
+            handler(aHandler) {}
+
+    virtual bool canDial(AsyncCall &call) { return arg1.valid(); }
+    void dial(AsyncCall &call) { handler(arg1.get()); }
+    virtual void print(std::ostream &os) const {  os << '(' << arg1 << ')'; }
+
+public:
+    CbcPointer<Argument1> arg1;
+    Handler *handler;
+};
+
+// helper function to simplify Dialer creation.
+template <class Argument1>
+UnaryCbdataDialer<Argument1>
+cbdataDialer(typename UnaryCbdataDialer<Argument1>::Handler *handler, Argument1 *arg1)
+{
+    return UnaryCbdataDialer<Argument1>(handler, arg1);
+}
+
+#endif
diff -u -r -N squid-3.2.0.13/src/base/Makefile.am squid-3.2.0.14/src/base/Makefile.am
--- squid-3.2.0.13/src/base/Makefile.am	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/base/Makefile.am	2011-12-13 00:08:18.000000000 +1300
@@ -7,6 +7,7 @@
 libbase_la_SOURCES = \
 	AsyncCall.cc \
 	AsyncCall.h \
+	AsyncCbdataCalls.h \
 	AsyncJob.h \
 	AsyncJob.cc \
 	AsyncJobCalls.h \
diff -u -r -N squid-3.2.0.13/src/base/Makefile.in squid-3.2.0.14/src/base/Makefile.in
--- squid-3.2.0.13/src/base/Makefile.in	2011-10-14 14:48:00.000000000 +1300
+++ squid-3.2.0.14/src/base/Makefile.in	2011-12-13 00:10:47.000000000 +1300
@@ -312,6 +312,7 @@
 libbase_la_SOURCES = \
 	AsyncCall.cc \
 	AsyncCall.h \
+	AsyncCbdataCalls.h \
 	AsyncJob.h \
 	AsyncJob.cc \
 	AsyncJobCalls.h \
diff -u -r -N squid-3.2.0.13/src/base/RunnersRegistry.h squid-3.2.0.14/src/base/RunnersRegistry.h
--- squid-3.2.0.13/src/base/RunnersRegistry.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/base/RunnersRegistry.h	2011-12-13 00:08:18.000000000 +1300
@@ -21,6 +21,11 @@
 
 /// well-known registries
 typedef enum {
+    /// managed by main.cc; activated after parsing squid.conf but
+    /// before rrAfterConfig, deactivated after rrAfterConfig but
+    /// before freeing configuration-related memory or exit()-ing
+    rrClaimMemoryNeeds,
+
     /// managed by main.cc; activated after parsing squid.conf and
     /// deactivated before freeing configuration-related memory or exit()-ing
     rrAfterConfig,
diff -u -r -N squid-3.2.0.13/src/BodyPipe.h squid-3.2.0.14/src/BodyPipe.h
--- squid-3.2.0.13/src/BodyPipe.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/BodyPipe.h	2011-12-13 00:08:18.000000000 +1300
@@ -87,7 +87,7 @@
     typedef BodyConsumer Consumer;
     typedef BodyPipeCheckout Checkout;
 
-    enum { MaxCapacity = SQUID_TCP_SO_RCVBUF };
+    enum { MaxCapacity = 64*1024 };
 
     friend class BodyPipeCheckout;
 
diff -u -r -N squid-3.2.0.13/src/cache_cf.cc squid-3.2.0.14/src/cache_cf.cc
--- squid-3.2.0.13/src/cache_cf.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/cache_cf.cc	2011-12-13 00:08:18.000000000 +1300
@@ -98,6 +98,9 @@
 static void parse_adaptation_service_set_type();
 static void parse_adaptation_service_chain_type();
 static void parse_adaptation_access_type();
+static void parse_adaptation_meta_type(Adaptation::Config::MetaHeaders *);
+static void dump_adaptation_meta_type(StoreEntry *, const char *, Adaptation::Config::MetaHeaders &);
+static void free_adaptation_meta_type(Adaptation::Config::MetaHeaders *);
 #endif
 
 #if ICAP_CLIENT
@@ -909,7 +912,7 @@
                                        s->cafile, s->capath, s->crlfile, s->dhfile,
                                        s->sslContextSessionId));
 
-            Ssl::readCertAndPrivateKeyFromFiles(s->signingCert, s->signPkey, s->cert, s->key);
+            Ssl::readCertChainAndPrivateKeyFromFiles(s->signingCert, s->signPkey, s->certsToChain, s->cert, s->key);
         }
     }
 
@@ -4373,6 +4376,23 @@
     Adaptation::Config::ParseAccess(LegacyParser);
 }
 
+static void
+parse_adaptation_meta_type(Adaptation::Config::MetaHeaders *)
+{
+    Adaptation::Config::ParseMetaHeader(LegacyParser);
+}
+
+static void
+dump_adaptation_meta_type(StoreEntry *entry, const char *name, Adaptation::Config::MetaHeaders &)
+{
+    Adaptation::Config::DumpMetaHeader(entry, name);
+}
+
+static void
+free_adaptation_meta_type(Adaptation::Config::MetaHeaders *)
+{
+    // Nothing to do, it is released inside Adaptation::Config::freeService()
+}
 #endif /* USE_ADAPTATION */
 
 
diff -u -r -N squid-3.2.0.13/src/cache_manager.cc squid-3.2.0.14/src/cache_manager.cc
--- squid-3.2.0.13/src/cache_manager.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/cache_manager.cc	2011-12-13 00:08:18.000000000 +1300
@@ -320,12 +320,11 @@
 void
 CacheManager::Start(const Comm::ConnectionPointer &client, HttpRequest * request, StoreEntry * entry)
 {
-    ErrorState *err = NULL;
     debugs(16, 3, "CacheManager::Start: '" << entry->url() << "'" );
 
     Mgr::Command::Pointer cmd = ParseUrl(entry->url());
     if (!cmd) {
-        err = errorCon(ERR_INVALID_URL, HTTP_NOT_FOUND, request);
+        ErrorState *err = new ErrorState(ERR_INVALID_URL, HTTP_NOT_FOUND, request);
         err->url = xstrdup(entry->url());
         errorAppendEntry(entry, err);
         entry->expires = squid_curtime;
@@ -348,9 +347,7 @@
 
     if (CheckPassword(*cmd) != 0) {
         /* build error message */
-        ErrorState *errState;
-        HttpReply *rep;
-        errState = errorCon(ERR_CACHE_MGR_ACCESS_DENIED, HTTP_UNAUTHORIZED, request);
+        ErrorState errState(ERR_CACHE_MGR_ACCESS_DENIED, HTTP_UNAUTHORIZED, request);
         /* warn if user specified incorrect password */
 
         if (cmd->params.password.size()) {
@@ -365,9 +362,7 @@
                    actionName << "'" );
         }
 
-        rep = errState->BuildHttpReply();
-
-        errorStateFree(errState);
+        HttpReply *rep = errState.BuildHttpReply();
 
 #if HAVE_AUTH_MODULE_BASIC
         /*
diff -u -r -N squid-3.2.0.13/src/cf.data.depend squid-3.2.0.14/src/cf.data.depend
--- squid-3.2.0.13/src/cf.data.depend	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/cf.data.depend	2011-12-13 00:08:18.000000000 +1300
@@ -36,6 +36,7 @@
 adaptation_access_type	adaptation_service_set adaptation_service_chain acl icap_service icap_class
 adaptation_service_set_type	icap_service ecap_service
 adaptation_service_chain_type	icap_service ecap_service
+adaptation_meta_type	acl
 icap_access_type	icap_class acl
 icap_class_type		icap_service
 icap_service_type
diff -u -r -N squid-3.2.0.13/src/cf.data.pre squid-3.2.0.14/src/cf.data.pre
--- squid-3.2.0.13/src/cf.data.pre	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/cf.data.pre	2011-12-13 00:08:18.000000000 +1300
@@ -29,24 +29,30 @@
 COMMENT_START
 	WELCOME TO @SQUID@
 	----------------------------
-
-	This is the default Squid configuration file. You may wish
-	to look at the Squid home page (http://www.squid-cache.org/)
-	for the FAQ and other documentation.
-
-	The default Squid config file shows what the defaults for
-	various options happen to be.  If you don't need to change the
-	default, you shouldn't uncomment the line.  Doing so may cause
-	run-time problems.  In some cases "none" refers to no default
-	setting at all, while in other cases it refers to a valid
-	option - the comments for that keyword indicate if this is the
-	case.
+	
+	This is the documentation for the Squid configuration file.
+	This documentation can also be found online at:
+		http://www.squid-cache.org/Doc/config/
+	
+	You may wish to look at the Squid home page and wiki for the
+	FAQ and other documentation:
+		http://www.squid-cache.org/
+		http://wiki.squid-cache.org/SquidFaq
+		http://wiki.squid-cache.org/ConfigExamples
+	
+	This documentation shows what the defaults for various directives
+	happen to be.  If you don't need to change the default, you should
+	leave the line out of your squid.conf in most cases.
+	
+	In some cases "none" refers to no default setting at all,
+	while in other cases it refers to the value of the option
+	- the comments for that keyword indicate if this is the case.
 
 COMMENT_END
 
 COMMENT_START
   Configuration options can be included using the "include" directive.
-  Include takes a list of files to include. Quoting and wildcards is
+  Include takes a list of files to include. Quoting and wildcards are
   supported.
 
   For example,
@@ -74,6 +80,8 @@
 	must be typed on their own lines, as if they were regular
 	configuration directives.
 
+	NOTE: An else-if condition is not supported.
+
 	These individual conditions types are supported:
 
 	    true
@@ -592,6 +600,9 @@
 	  		list separator. ; can be any non-alphanumeric
 			character.
 
+	  %%		The percent sign. Useful for helpers which need
+			an unchanging input format.
+
 	In addition to the above, any string specified in the referencing
 	acl will also be included in the helper request line, after the
 	specified formats (see the "acl external" directive)
@@ -995,7 +1006,7 @@
 
 	SECURITY WARNING: Usage of this option is dangerous
 	and should not be used trivially. Correct configuration
-	of folow_x_forewarded_for with a limited set of trusted
+	of follow_x_forewarded_for with a limited set of trusted
 	sources is required to prevent abuse of your proxy.
 DOC_END
 
@@ -1365,6 +1376,10 @@
 			    4	TLSv1 only
 
 	   cipher=	Colon separated list of supported ciphers.
+			NOTE: some ciphers such as EDH ciphers depend on
+			      additional settings. If those settings are
+			      omitted the ciphers may be silently ignored
+			      by the OpenSSL library.
 
 	   options=	Various SSL engine options. The most important
 			being:
@@ -1373,8 +1388,8 @@
 			    NO_TLSv1  Disallow the use of TLSv1
 			    SINGLE_DH_USE Always create a new key when using
 				      temporary/ephemeral DH key exchanges
-			See src/ssl_support.c or OpenSSL SSL_CTX_set_options
-			documentation for a complete list of options.
+			See OpenSSL SSL_CTX_set_options documentation for a
+			complete list of options.
 
 	   clientca=	File containing the list of CAs to use when
 			requesting a client certificate.
@@ -1391,7 +1406,10 @@
 			the capath. Implies VERIFY_CRL flag below.
 
 	   dhparams=	File containing DH parameters for temporary/ephemeral
-			DH key exchanges.
+			DH key exchanges. See OpenSSL documentation for details
+			on how to create this file.
+			WARNING: EDH ciphers will be silently disabled if this
+				 option is not set.
 
 	   sslflags=	Various flags modifying the use of SSL:
 			    DELAYED_AUTH
@@ -1697,8 +1715,10 @@
 
 	parent-hit=0xFF		Value to mark hits from parent peers.
 
-	miss=0xFF		Value to mark cache misses. Takes precedence
-				over the preserve-miss feature (see below).
+	miss=0xFF[/mask]	Value to mark cache misses. Takes precedence
+				over the preserve-miss feature (see below), unless
+				mask is specified, in which case only the bits
+				specified in the mask are written.
 
 	The TOS variant of the following features are only possible on Linux
 	and require your kernel to be patched with the TOS preserving ZPH
@@ -2097,7 +2117,7 @@
 	cache_peer parent.foo.net       parent    3128  3130  default
 	cache_peer sib1.foo.net         sibling   3128  3130  proxy-only
 	cache_peer sib2.foo.net         sibling   3128  3130  proxy-only
-	cache_peer example.com          parent    80       0  no-query default
+	cache_peer example.com          parent    80       0  default
 	cache_peer cdn.example.com      sibling   3128     0  
 	
 	      type:	either 'parent', 'sibling', or 'multicast'.
@@ -2193,7 +2213,7 @@
 	multicast-siblings
 			To be used only for cache peers of type "multicast".
 			ALL members of this multicast group have "sibling"
-			relationship with it, not "parent".  This is to a mulicast
+			relationship with it, not "parent".  This is to a multicast
 			group when the requested object would be fetched only from
 			a "parent" cache, anyway.  It's useful, e.g., when
 			configuring a pool of redundant Squid proxies, being
@@ -2804,9 +2824,13 @@
 	expected swap wait time.
 
 	max-swap-rate=swaps/sec: Artificially limits disk access using
-	the specified I/O rate limit. Swap in and swap out requests that
+	the specified I/O rate limit. Swap out requests that
 	would cause the average I/O rate to exceed the limit are
-	delayed. This is necessary on file systems that buffer "too
+	delayed. Individual swap in requests (i.e., hits or reads) are
+	not delayed, but they do contribute to measured swap rate and
+	since they are placed in the same FIFO queue as swap out
+	requests, they may wait longer if max-swap-rate is smaller.
+	This is necessary on file systems that buffer "too
 	many" writes and then start blocking Squid and other processes
 	while committing those writes to disk.  Usually used together
 	with swap-timeout to avoid excessive delays and queue overflows
@@ -3167,11 +3191,11 @@
 	
 	udp	To send each log line as text data to a UDP receiver.
 		Place: The destination host name or IP and port.
-		Place Format:   \\host:port
+		Place Format:   //host:port
 
 	tcp	To send each log line as text data to a TCP receiver.
 		Place: The destination host name or IP and port.
-		Place Format:   \\host:port
+		Place Format:   //host:port
 
 	Default:
 		access_log daemon:@DEFAULT_ACCESS_LOG@ squid
@@ -4647,13 +4671,13 @@
 	connection establishment.
 DOC_END
 
-NAME: persistent_request_timeout
+NAME: client_idle_pconn_timeout persistent_request_timeout
 TYPE: time_t
-LOC: Config.Timeout.persistent_request
+LOC: Config.Timeout.clientIdlePconn
 DEFAULT: 2 minutes
 DOC_START
 	How long to wait for the next HTTP request on a persistent
-	connection after the previous request completes.
+	client connection after the previous request completes.
 DOC_END
 
 NAME: client_lifetime
@@ -4697,9 +4721,9 @@
 	it is recommended to leave OFF.
 DOC_END
 
-NAME: pconn_timeout
+NAME: server_idle_pconn_timeout pconn_timeout
 TYPE: time_t
-LOC: Config.Timeout.pconn
+LOC: Config.Timeout.serverIdlePconn
 DEFAULT: 1 minute
 DOC_START
 	Timeout for idle persistent connections to servers and other
@@ -7010,6 +7034,41 @@
 adaptation_masterx_shared_names X-Subscriber-ID
 DOC_END
 
+NAME: adaptation_meta
+TYPE: adaptation_meta_type
+IFDEF: USE_ADAPTATION
+LOC: Adaptation::Config::metaHeaders
+DEFAULT: none
+DOC_START
+	This option allows Squid administrator to add custom ICAP request
+	headers or eCAP options to Squid ICAP requests or eCAP transactions.
+	Use it to pass custom authentication tokens and other
+	transaction-state related meta information to an ICAP/eCAP service.
+	
+	The addition of a meta header is ACL-driven:
+		adaptation_meta name value [!]aclname ...
+	
+	Processing for a given header name stops after the first ACL list match.
+	Thus, it is impossible to add two headers with the same name. If no ACL
+	lists match for a given header name, no such header is added. For 
+	example:
+	
+		# do not debug transactions except for those that need debugging
+		adaptation_meta X-Debug 1 needs_debugging
+	
+		# log all transactions except for those that must remain secret
+		adaptation_meta X-Log 1 !keep_secret
+	
+		# mark transactions from users in the "G 1" group
+		adaptation_meta X-Authenticated-Groups "G 1" authed_as_G1
+	
+	The "value" parameter may be a regular squid.conf token or a "double
+	quoted string". Within the quoted string, use backslash (\) to escape
+	any character, which is currently only useful for escaping backslashes
+	and double quotes. For example,
+	    "this string has one backslash (\\) and two \"quotes\""
+DOC_END
+
 NAME: icap_retry
 TYPE: acl_access
 IFDEF: ICAP_CLIENT
diff -u -r -N squid-3.2.0.13/src/client_db.cc squid-3.2.0.14/src/client_db.cc
--- squid-3.2.0.13/src/client_db.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/client_db.cc	2011-12-13 00:08:18.000000000 +1300
@@ -34,7 +34,7 @@
 
 #include "squid.h"
 #include "event.h"
-#include "format/Tokens.h"
+#include "format/Token.h"
 #include "ClientInfo.h"
 #include "ip/Address.h"
 #include "mgr/Registration.h"
diff -u -r -N squid-3.2.0.13/src/ClientRequestContext.h squid-3.2.0.14/src/ClientRequestContext.h
--- squid-3.2.0.13/src/ClientRequestContext.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ClientRequestContext.h	2011-12-13 00:08:18.000000000 +1300
@@ -38,7 +38,6 @@
 #if USE_ADAPTATION
 
     void adaptationAccessCheck();
-    void adaptationAclCheckDone(Adaptation::ServiceGroupPointer g);
 #endif
 #if USE_SSL
     /**
diff -u -r -N squid-3.2.0.13/src/client_side.cc squid-3.2.0.14/src/client_side.cc
--- squid-3.2.0.13/src/client_side.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/client_side.cc	2011-12-13 00:08:18.000000000 +1300
@@ -1485,14 +1485,14 @@
 {
     debugs(33, 5, HERE << clientConnection << " reading next req");
 
-    fd_note(clientConnection->fd, "Waiting for next request");
+    fd_note(clientConnection->fd, "Idle client: Waiting for next request");
     /**
      * Set the timeout BEFORE calling clientReadRequest().
      */
     typedef CommCbMemFunT<ConnStateData, CommTimeoutCbParams> TimeoutDialer;
     AsyncCall::Pointer timeoutCall = JobCallback(33, 5,
                                      TimeoutDialer, this, ConnStateData::requestTimeout);
-    commSetConnTimeout(clientConnection, Config.Timeout.persistent_request, timeoutCall);
+    commSetConnTimeout(clientConnection, Config.Timeout.clientIdlePconn, timeoutCall);
 
     readSomeData();
     /** Please don't do anything with the FD past here! */
@@ -1520,6 +1520,7 @@
      */
 }
 
+/// called when we have successfully finished writing the response
 void
 ClientSocketContext::keepaliveNextRequest()
 {
@@ -1535,6 +1536,26 @@
     }
 
     /** \par
+     * We are done with the response, and we are either still receiving request
+     * body (early response!) or have already stopped receiving anything.
+     *
+     * If we are still receiving, then clientParseRequest() below will fail.
+     * (XXX: but then we will call readNextRequest() which may succeed and
+     * execute a smuggled request as we are not done with the current request).
+     *
+     * If we stopped because we got everything, then try the next request.
+     *
+     * If we stopped receiving because of an error, then close now to avoid
+     * getting stuck and to prevent accidental request smuggling.
+     */
+
+    if (const char *reason = conn->stoppedReceiving()) {
+        debugs(33, 3, HERE << "closing for earlier request error: " << reason);
+        conn->clientConnection->close();
+        return;
+    }
+
+    /** \par
      * Attempt to parse a request from the request buffer.
      * If we've been fed a pipelined request it may already
      * be in our read buffer.
@@ -1778,44 +1799,35 @@
     clientConnection->close();
 }
 
-/** Called to initiate (and possibly complete) closing of the context.
- * The underlying socket may be already closed */
+/// called when we encounter a response-related error
 void
 ClientSocketContext::initiateClose(const char *reason)
 {
-    debugs(33, 5, HERE << "initiateClose: closing for " << reason);
-
-    if (http != NULL) {
-        ConnStateData * conn = http->getConn();
+    http->getConn()->stopSending(reason); // closes ASAP
+}
 
-        if (conn != NULL) {
-            if (const int64_t expecting = conn->mayNeedToReadMoreBody()) {
-                debugs(33, 5, HERE << "ClientSocketContext::initiateClose: " <<
-                       "closing, but first " << conn << " needs to read " <<
-                       expecting << " request body bytes with " <<
-                       conn->in.notYetUsed << " notYetUsed");
-
-                if (conn->closing()) {
-                    debugs(33, 2, HERE << "avoiding double-closing " << conn);
-                    return;
-                }
+void
+ConnStateData::stopSending(const char *error)
+{
+    debugs(33, 4, HERE << "sending error (" << clientConnection << "): " << error <<
+           "; old receiving error: " <<
+           (stoppedReceiving() ? stoppedReceiving_ : "none"));
 
-                /*
-                * XXX We assume the reply fits in the TCP transmit
-                * window.  If not the connection may stall while sending
-                * the reply (before reaching here) if the client does not
-                * try to read the response while sending the request body.
-                * As of yet we have not received any complaints indicating
-                * this may be an issue.
-                */
-                conn->startClosing(reason);
+    if (const char *oldError = stoppedSending()) {
+        debugs(33, 3, HERE << "already stopped sending: " << oldError);
+        return; // nothing has changed as far as this connection is concerned
+    }
+    stoppedSending_ = error;
 
-                return;
-            }
+    if (!stoppedReceiving()) {
+        if (const int64_t expecting = mayNeedToReadMoreBody()) {
+            debugs(33, 5, HERE << "must still read " << expecting <<
+                   " request body bytes with " << in.notYetUsed << " unused");
+            return; // wait for the request receiver to finish reading
         }
     }
 
-    doClose();
+    clientConnection->close();
 }
 
 void
@@ -2541,8 +2553,8 @@
      * from the port settings to the request.
      */
     if (http->clientConnection != NULL) {
-        request->flags.intercepted = (http->clientConnection->flags & COMM_INTERCEPTION);
-        request->flags.spoof_client_ip = (http->clientConnection->flags & COMM_TRANSPARENT);
+        request->flags.intercepted = ((http->clientConnection->flags & COMM_INTERCEPTION) != 0);
+        request->flags.spoof_client_ip = ((http->clientConnection->flags & COMM_TRANSPARENT) != 0 ) ;
     }
 
     if (internalCheck(request->urlpath.termedBuf())) {
@@ -2936,10 +2948,11 @@
     if (!bodyPipe) {
         debugs(33,5, HERE << "produced entire request body for " << clientConnection);
 
-        if (closing()) {
+        if (const char *reason = stoppedSending()) {
             /* we've finished reading like good clients,
              * now do the close that initiateClose initiated.
              */
+            debugs(33, 3, HERE << "closing for earlier sending error: " << reason);
             clientConnection->close();
             return false;
         }
@@ -3036,7 +3049,7 @@
         return;
 
     // too late to read more body
-    if (!isOpen() || closing())
+    if (!isOpen() || stoppedReceiving())
         return;
 
     readSomeData();
@@ -3045,8 +3058,11 @@
 void
 ConnStateData::noteBodyConsumerAborted(BodyPipe::Pointer )
 {
-    if (!closing())
-        startClosing("body consumer aborted");
+    // request reader may get stuck waiting for space if nobody consumes body
+    if (bodyPipe != NULL)
+        bodyPipe->enableAutoConsumption();
+
+    stopReceiving("virgin request body consumer aborted"); // closes ASAP
 }
 
 /** general lifetime handler for HTTP requests */
@@ -3192,37 +3208,37 @@
 
 /** Handle a new connection on HTTP socket. */
 void
-httpAccept(int, const Comm::ConnectionPointer &details, comm_err_t flag, int xerrno, void *data)
+httpAccept(const CommAcceptCbParams &params)
 {
-    http_port_list *s = (http_port_list *)data;
+    http_port_list *s = (http_port_list *)params.data;
 
-    if (flag != COMM_OK) {
+    if (params.flag != COMM_OK) {
         // Its possible the call was still queued when the client disconnected
-        debugs(33, 2, "httpAccept: " << s->listenConn << ": accept failure: " << xstrerr(xerrno));
+        debugs(33, 2, "httpAccept: " << s->listenConn << ": accept failure: " << xstrerr(params.xerrno));
         return;
     }
 
-    debugs(33, 4, HERE << details << ": accepted");
-    fd_note(details->fd, "client http connect");
+    debugs(33, 4, HERE << params.conn << ": accepted");
+    fd_note(params.conn->fd, "client http connect");
 
     if (s->tcp_keepalive.enabled) {
-        commSetTcpKeepalive(details->fd, s->tcp_keepalive.idle, s->tcp_keepalive.interval, s->tcp_keepalive.timeout);
+        commSetTcpKeepalive(params.conn->fd, s->tcp_keepalive.idle, s->tcp_keepalive.interval, s->tcp_keepalive.timeout);
     }
 
     incoming_sockets_accepted++;
 
     // Socket is ready, setup the connection manager to start using it
-    ConnStateData *connState = connStateCreate(details, s);
+    ConnStateData *connState = connStateCreate(params.conn, s);
 
     typedef CommCbMemFunT<ConnStateData, CommTimeoutCbParams> TimeoutDialer;
     AsyncCall::Pointer timeoutCall =  JobCallback(33, 5,
                                       TimeoutDialer, connState, ConnStateData::requestTimeout);
-    commSetConnTimeout(details, Config.Timeout.read, timeoutCall);
+    commSetConnTimeout(params.conn, Config.Timeout.read, timeoutCall);
 
     connState->readSomeData();
 
 #if USE_DELAY_POOLS
-    fd_table[details->fd].clientInfo = NULL;
+    fd_table[params.conn->fd].clientInfo = NULL;
 
     if (Config.onoff.client_db) {
         /* it was said several times that client write limiter does not work if client_db is disabled */
@@ -3233,8 +3249,8 @@
         // TODO: we check early to limit error response bandwith but we
         // should recheck when we can honor delay_pool_uses_indirect
         // TODO: we should also pass the port details for myportname here.
-        ch.src_addr = details->remote;
-        ch.my_addr = details->local;
+        ch.src_addr = params.conn->remote;
+        ch.my_addr = params.conn->local;
 
         for (unsigned int pool = 0; pool < pools.size(); pool++) {
 
@@ -3246,11 +3262,11 @@
 
                     /*  request client information from db after we did all checks
                         this will save hash lookup if client failed checks */
-                    ClientInfo * cli = clientdbGetInfo(details->remote);
+                    ClientInfo * cli = clientdbGetInfo(params.conn->remote);
                     assert(cli);
 
                     /* put client info in FDE */
-                    fd_table[details->fd].clientInfo = cli;
+                    fd_table[params.conn->fd].clientInfo = cli;
 
                     /* setup write limiter for this request */
                     const double burst = floor(0.5 +
@@ -3270,24 +3286,24 @@
 
 /** Create SSL connection structure and update fd_table */
 static SSL *
-httpsCreate(const Comm::ConnectionPointer &details, SSL_CTX *sslContext)
+httpsCreate(const Comm::ConnectionPointer &conn, SSL_CTX *sslContext)
 {
     SSL *ssl = SSL_new(sslContext);
 
     if (!ssl) {
         const int ssl_error = ERR_get_error();
-        debugs(83, 1, "httpsAccept: Error allocating handle: " << ERR_error_string(ssl_error, NULL)  );
-        details->close();
+        debugs(83, DBG_IMPORTANT, "ERROR: httpsAccept: Error allocating handle: " << ERR_error_string(ssl_error, NULL)  );
+        conn->close();
         return NULL;
     }
 
-    SSL_set_fd(ssl, details->fd);
-    fd_table[details->fd].ssl = ssl;
-    fd_table[details->fd].read_method = &ssl_read_method;
-    fd_table[details->fd].write_method = &ssl_write_method;
+    SSL_set_fd(ssl, conn->fd);
+    fd_table[conn->fd].ssl = ssl;
+    fd_table[conn->fd].read_method = &ssl_read_method;
+    fd_table[conn->fd].write_method = &ssl_write_method;
 
-    debugs(33, 5, "httpsCreate: will negotate SSL on " << details);
-    fd_note(details->fd, "client https start");
+    debugs(33, 5, "httpsCreate: will negotate SSL on " << conn);
+    fd_note(conn->fd, "client https start");
 
     return ssl;
 }
@@ -3413,39 +3429,39 @@
 
 /** handle a new HTTPS connection */
 static void
-httpsAccept(int, const Comm::ConnectionPointer& details, comm_err_t flag, int xerrno, void *data)
+httpsAccept(const CommAcceptCbParams &params)
 {
-    https_port_list *s = (https_port_list *)data;
+    https_port_list *s = (https_port_list *)params.data;
 
-    if (flag != COMM_OK) {
+    if (params.flag != COMM_OK) {
         // Its possible the call was still queued when the client disconnected
-        debugs(33, 2, "httpsAccept: " << s->listenConn << ": accept failure: " << xstrerr(xerrno));
+        debugs(33, 2, "httpsAccept: " << s->listenConn << ": accept failure: " << xstrerr(params.xerrno));
         return;
     }
 
     SSL_CTX *sslContext = s->staticSslContext.get();
     SSL *ssl = NULL;
-    if (!(ssl = httpsCreate(details, sslContext)))
+    if (!(ssl = httpsCreate(params.conn, sslContext)))
         return;
 
-    debugs(33, 4, HERE << details << " accepted, starting SSL negotiation.");
-    fd_note(details->fd, "client https connect");
+    debugs(33, 4, HERE << params.conn << " accepted, starting SSL negotiation.");
+    fd_note(params.conn->fd, "client https connect");
 
     if (s->http.tcp_keepalive.enabled) {
-        commSetTcpKeepalive(details->fd, s->http.tcp_keepalive.idle, s->http.tcp_keepalive.interval, s->http.tcp_keepalive.timeout);
+        commSetTcpKeepalive(params.conn->fd, s->http.tcp_keepalive.idle, s->http.tcp_keepalive.interval, s->http.tcp_keepalive.timeout);
     }
 
     incoming_sockets_accepted++;
 
     // Socket is ready, setup the connection manager to start using it
-    ConnStateData *connState = connStateCreate(details, &s->http);
+    ConnStateData *connState = connStateCreate(params.conn, &s->http);
 
     typedef CommCbMemFunT<ConnStateData, CommTimeoutCbParams> TimeoutDialer;
     AsyncCall::Pointer timeoutCall =  JobCallback(33, 5,
                                       TimeoutDialer, connState, ConnStateData::requestTimeout);
-    commSetConnTimeout(details, Config.Timeout.request, timeoutCall);
+    commSetConnTimeout(params.conn, Config.Timeout.request, timeoutCall);
 
-    Comm::SetSelect(details->fd, COMM_SELECT_READ, clientNegotiateSSL, connState, 0);
+    Comm::SetSelect(params.conn->fd, COMM_SELECT_READ, clientNegotiateSSL, connState, 0);
 }
 
 void
@@ -3469,7 +3485,8 @@
                 debugs(33, 5, HERE << "Certificate for " << sslHostName << " cannot be generated. ssl_crtd response: " << reply_message.getBody());
             } else {
                 debugs(33, 5, HERE << "Certificate for " << sslHostName << " was successfully recieved from ssl_crtd");
-                getSslContextDone(Ssl::generateSslContextUsingPkeyAndCertFromMemory(reply_message.getBody().c_str()), true);
+                SSL_CTX *ctx = Ssl::generateSslContextUsingPkeyAndCertFromMemory(reply_message.getBody().c_str());
+                getSslContextDone(ctx, true);
                 return;
             }
         }
@@ -3523,6 +3540,9 @@
 {
     // Try to add generated ssl context to storage.
     if (port->generateHostCertificates && isNew) {
+
+        Ssl::addChainToSslContext(sslContext, port->certsToChain.get());
+
         Ssl::LocalContextStorage & ssl_ctx_cache(Ssl::TheGlobalContextStorage.getLocalStorage(port->s));
         if (sslContext && sslHostName != "") {
             if (!ssl_ctx_cache.add(sslHostName.termedBuf(), sslContext)) {
@@ -3852,8 +3872,9 @@
 
 ConnStateData::ConnStateData() :
         AsyncJob("ConnStateData"),
-        closing_(false),
-        switchedToHttps_(false)
+        switchedToHttps_(false),
+        stoppedSending_(NULL),
+        stoppedReceiving_(NULL)
 {
     pinning.pinned = false;
     pinning.auth = false;
@@ -3910,32 +3931,24 @@
     return needToProduce - haveAvailable;
 }
 
-bool
-ConnStateData::closing() const
-{
-    return closing_;
-}
-
-/**
- * Called by ClientSocketContext to give the connection a chance to read
- * the entire body before closing the socket.
- */
 void
-ConnStateData::startClosing(const char *reason)
+ConnStateData::stopReceiving(const char *error)
 {
-    debugs(33, 5, HERE << "startClosing " << this << " for " << reason);
-    assert(!closing());
-    closing_ = true;
+    debugs(33, 4, HERE << "receiving error (" << clientConnection << "): " << error <<
+           "; old sending error: " <<
+           (stoppedSending() ? stoppedSending_ : "none"));
 
-    assert(bodyPipe != NULL);
+    if (const char *oldError = stoppedReceiving()) {
+        debugs(33, 3, HERE << "already stopped receiving: " << oldError);
+        return; // nothing has changed as far as this connection is concerned
+    }
+
+    stoppedReceiving_ = error;
 
-    // We do not have to abort the body pipeline because we are going to
-    // read the entire body anyway.
-    // Perhaps an ICAP server wants to log the complete request.
-
-    // If a consumer abort have caused this closing, we may get stuck
-    // as nobody is consuming our data. Allow auto-consumption.
-    bodyPipe->enableAutoConsumption();
+    if (const char *sendError = stoppedSending()) {
+        debugs(33, 3, HERE << "closing because also stopped sending: " << sendError);
+        clientConnection->close();
+    }
 }
 
 void
diff -u -r -N squid-3.2.0.13/src/client_side.h squid-3.2.0.14/src/client_side.h
--- squid-3.2.0.13/src/client_side.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/client_side.h	2011-12-13 00:08:18.000000000 +1300
@@ -260,8 +260,15 @@
     bool reading() const;
     void stopReading(); ///< cancels comm_read if it is scheduled
 
-    bool closing() const;
-    void startClosing(const char *reason);
+    /// true if we stopped receiving the request
+    const char *stoppedReceiving() const { return stoppedReceiving_; }
+    /// true if we stopped sending the response
+    const char *stoppedSending() const { return stoppedSending_; }
+    /// note request receiving error and close as soon as we write the response
+    void stopReceiving(const char *error);
+    /// note response sending error and close as soon as we read the request
+    void stopSending(const char *error);
+
     void expectNoForwarding(); ///< cleans up virgin request [body] forwarding state
 
     BodyPipe::Pointer expectRequestBody(int64_t size);
@@ -341,9 +348,14 @@
 
     // XXX: CBDATA plays with public/private and leaves the following 'private' fields all public... :(
     CBDATA_CLASS2(ConnStateData);
-    bool closing_;
 
     bool switchedToHttps_;
+
+    /// the reason why we no longer write the response or nil
+    const char *stoppedSending_;
+    /// the reason why we no longer read the request or nil
+    const char *stoppedReceiving_;
+
     String sslHostName; ///< Host name for SSL certificate generation
     AsyncCall::Pointer reader; ///< set when we are reading
     BodyPipe::Pointer bodyPipe; // set when we are reading request body
diff -u -r -N squid-3.2.0.13/src/client_side_reply.cc squid-3.2.0.14/src/client_side_reply.cc
--- squid-3.2.0.13/src/client_side_reply.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/client_side_reply.cc	2011-12-13 00:08:18.000000000 +1300
@@ -55,7 +55,7 @@
 #endif
 #include "fde.h"
 #include "forward.h"
-#include "format/Tokens.h"
+#include "format/Token.h"
 #include "HttpReply.h"
 #include "HttpRequest.h"
 #include "ip/QosConfig.h"
@@ -2193,7 +2193,7 @@
 clientBuildError(err_type page_id, http_status status, char const *url,
                  Ip::Address &src_addr, HttpRequest * request)
 {
-    ErrorState *err = errorCon(page_id, status, request);
+    ErrorState *err = new ErrorState(page_id, status, request);
     err->src_addr = src_addr;
 
     if (url)
diff -u -r -N squid-3.2.0.13/src/client_side_request.cc squid-3.2.0.14/src/client_side_request.cc
--- squid-3.2.0.13/src/client_side_request.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/client_side_request.cc	2011-12-13 00:08:18.000000000 +1300
@@ -66,7 +66,7 @@
 #include "comm/Write.h"
 #include "compat/inet_pton.h"
 #include "fde.h"
-#include "format/Tokens.h"
+#include "format/Token.h"
 #include "HttpHdrCc.h"
 #include "HttpReply.h"
 #include "HttpRequest.h"
@@ -634,7 +634,7 @@
             // verify the destination DNS is one of the Host: headers IPs
             ipcache_nbgethostbyname(host, hostHeaderIpVerifyWrapper, this);
         }
-    } else if (Config.onoff.hostStrictVerify) {
+    } else if (!Config.onoff.hostStrictVerify) {
         debugs(85, 3, HERE << "validate skipped.");
         http->doCallouts();
     } else if (strlen(host) != strlen(http->request->GetHost())) {
@@ -815,45 +815,33 @@
 }
 
 #if USE_ADAPTATION
-static void
-adaptationAclCheckDoneWrapper(Adaptation::ServiceGroupPointer g, void *data)
-{
-    ClientRequestContext *calloutContext = (ClientRequestContext *)data;
-
-    if (!calloutContext->httpStateIsValid())
-        return;
-
-    calloutContext->adaptationAclCheckDone(g);
-}
-
 void
-ClientRequestContext::adaptationAclCheckDone(Adaptation::ServiceGroupPointer g)
+ClientHttpRequest::noteAdaptationAclCheckDone(Adaptation::ServiceGroupPointer g)
 {
     debugs(93,3,HERE << this << " adaptationAclCheckDone called");
-    assert(http);
 
 #if ICAP_CLIENT
-    Adaptation::Icap::History::Pointer ih = http->request->icapHistory();
+    Adaptation::Icap::History::Pointer ih = request->icapHistory();
     if (ih != NULL) {
-        if (http->getConn() != NULL) {
-            ih->rfc931 = http->getConn()->clientConnection->rfc931;
+        if (getConn() != NULL) {
+            ih->rfc931 = getConn()->clientConnection->rfc931;
 #if USE_SSL
-            assert(http->getConn()->clientConnection != NULL);
-            ih->ssluser = sslGetUserEmail(fd_table[http->getConn()->clientConnection->fd].ssl);
+            assert(getConn()->clientConnection != NULL);
+            ih->ssluser = sslGetUserEmail(fd_table[getConn()->clientConnection->fd].ssl);
 #endif
         }
-        ih->log_uri = http->log_uri;
-        ih->req_sz = http->req_sz;
+        ih->log_uri = log_uri;
+        ih->req_sz = req_sz;
     }
 #endif
 
     if (!g) {
         debugs(85,3, HERE << "no adaptation needed");
-        http->doCallouts();
+        doCallouts();
         return;
     }
 
-    http->startAdaptation(g);
+    startAdaptation(g);
 }
 
 #endif
@@ -1496,7 +1484,7 @@
         calloutContext->adaptation_acl_check_done = true;
         if (Adaptation::AccessCheck::Start(
                     Adaptation::methodReqmod, Adaptation::pointPreCache,
-                    request, NULL, adaptationAclCheckDoneWrapper, calloutContext))
+                    request, NULL, this))
             return; // will call callback
     }
 #endif
@@ -1690,17 +1678,46 @@
 }
 
 void
+ClientHttpRequest::resumeBodyStorage()
+{
+    if (!adaptedBodySource)
+        return;
+
+    noteMoreBodyDataAvailable(adaptedBodySource);
+}
+
+void
 ClientHttpRequest::noteMoreBodyDataAvailable(BodyPipe::Pointer)
 {
     assert(request_satisfaction_mode);
     assert(adaptedBodySource != NULL);
 
-    if (const size_t contentSize = adaptedBodySource->buf().contentSize()) {
+    if (size_t contentSize = adaptedBodySource->buf().contentSize()) {
+        // XXX: entry->bytesWanted returns contentSize-1 if entry can accept data.
+        // We have to add 1 to avoid suspending forever.
+        const size_t bytesWanted = storeEntry()->bytesWanted(Range<size_t>(0,contentSize));
+        const size_t spaceAvailable = bytesWanted >  0 ? (bytesWanted + 1) : 0;
+
+        if (spaceAvailable < contentSize ) {
+            // No or partial body data consuming
+            typedef NullaryMemFunT<ClientHttpRequest> Dialer;
+            AsyncCall::Pointer call = asyncCall(93, 5, "ClientHttpRequest::resumeBodyStorage",
+                                                Dialer(this, &ClientHttpRequest::resumeBodyStorage));
+            storeEntry()->deferProducer(call);
+        }
+
+        // XXX: bytesWanted API does not allow us to write just one byte!
+        if (!spaceAvailable && contentSize > 1)
+            return;
+
+        if (spaceAvailable < contentSize )
+            contentSize = spaceAvailable;
+
         BodyPipeCheckout bpc(*adaptedBodySource);
-        const StoreIOBuffer ioBuf(&bpc.buf, request_satisfaction_offset);
+        const StoreIOBuffer ioBuf(&bpc.buf, request_satisfaction_offset, contentSize);
         storeEntry()->write(ioBuf);
-        // assume can write everything
-        request_satisfaction_offset += contentSize;
+        // assume StoreEntry::write() writes the entire ioBuf
+        request_satisfaction_offset += ioBuf.length;
         bpc.buf.consume(contentSize);
         bpc.checkIn();
     }
@@ -1714,13 +1731,9 @@
 ClientHttpRequest::noteBodyProductionEnded(BodyPipe::Pointer)
 {
     assert(!virginHeadSource);
-    if (adaptedBodySource != NULL) { // did not end request satisfaction yet
-        // We do not expect more because noteMoreBodyDataAvailable always
-        // consumes everything. We do not even have a mechanism to consume
-        // leftovers after noteMoreBodyDataAvailable notifications seize.
-        assert(adaptedBodySource->exhausted());
+    // should we end request satisfaction now?
+    if (adaptedBodySource != NULL && adaptedBodySource->exhausted())
         endRequestSatisfaction();
-    }
 }
 
 void
diff -u -r -N squid-3.2.0.13/src/client_side_request.h squid-3.2.0.14/src/client_side_request.h
--- squid-3.2.0.13/src/client_side_request.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/client_side_request.h	2011-12-13 00:08:18.000000000 +1300
@@ -180,6 +180,7 @@
     virtual void noteAdaptationAnswer(const Adaptation::Answer &answer);
     void handleAdaptedHeader(HttpMsg *msg);
     void handleAdaptationBlock(const Adaptation::Answer &answer);
+    virtual void noteAdaptationAclCheckDone(Adaptation::ServiceGroupPointer group);
 
     // BodyConsumer API, called by BodyPipe
     virtual void noteMoreBodyDataAvailable(BodyPipe::Pointer);
@@ -187,6 +188,8 @@
     virtual void noteBodyProducerAborted(BodyPipe::Pointer);
 
     void endRequestSatisfaction();
+    /// called by StoreEntry when it has more buffer space available
+    void resumeBodyStorage();
 
 private:
     CbcPointer<Adaptation::Initiate> virginHeadSource;
diff -u -r -N squid-3.2.0.13/src/CommCalls.cc squid-3.2.0.14/src/CommCalls.cc
--- squid-3.2.0.13/src/CommCalls.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/CommCalls.cc	2011-12-13 00:08:18.000000000 +1300
@@ -44,7 +44,6 @@
 {
 }
 
-
 /* CommConnectCbParams */
 
 CommConnectCbParams::CommConnectCbParams(void *aData):
@@ -109,6 +108,12 @@
 {
 }
 
+/* FdeCbParams */
+
+FdeCbParams::FdeCbParams(void *aData):
+        CommCommonCbParams(aData)
+{
+}
 
 /* CommAcceptCbPtrFun */
 
@@ -128,7 +133,7 @@
 void
 CommAcceptCbPtrFun::dial()
 {
-    handler(params.fd, params.conn, params.flag, params.xerrno, params.data);
+    handler(params);
 }
 
 void
@@ -189,7 +194,7 @@
 
 /* CommCloseCbPtrFun */
 
-CommCloseCbPtrFun::CommCloseCbPtrFun(PF *aHandler,
+CommCloseCbPtrFun::CommCloseCbPtrFun(CLCB *aHandler,
                                      const CommCloseCbParams &aParams):
         CommDialerParamsT<CommCloseCbParams>(aParams),
         handler(aHandler)
@@ -199,7 +204,7 @@
 void
 CommCloseCbPtrFun::dial()
 {
-    handler(params.fd, params.data);
+    handler(params);
 }
 
 void
@@ -230,5 +235,27 @@
 {
     os << '(';
     params.print(os);
+    os << ')';
+}
+
+/* FdeCbPtrFun */
+
+FdeCbPtrFun::FdeCbPtrFun(FDECB *aHandler, const FdeCbParams &aParams) :
+        CommDialerParamsT<FdeCbParams>(aParams),
+        handler(aHandler)
+{
+}
+
+void
+FdeCbPtrFun::dial()
+{
+    handler(params);
+}
+
+void
+FdeCbPtrFun::print(std::ostream &os) const
+{
+    os << '(';
+    params.print(os);
     os << ')';
 }
diff -u -r -N squid-3.2.0.13/src/CommCalls.h squid-3.2.0.14/src/CommCalls.h
--- squid-3.2.0.13/src/CommCalls.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/CommCalls.h	2011-12-13 00:08:18.000000000 +1300
@@ -20,15 +20,26 @@
  *     - connect (CNCB)
  *     - I/O (IOCB)
  *     - timeout (CTCB)
+ *     - close (CLCB)
+ * and a special callback kind for passing pipe FD, disk FD or fd_table index 'FD' to the handler:
+ *     - FD passing callback (FDECB)
  */
 
-typedef void IOACB(int fd, const Comm::ConnectionPointer &details, comm_err_t flag, int xerrno, void *data);
+class CommAcceptCbParams;
+typedef void IOACB(const CommAcceptCbParams &params);
+
 typedef void CNCB(const Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data);
 typedef void IOCB(const Comm::ConnectionPointer &conn, char *, size_t size, comm_err_t flag, int xerrno, void *data);
 
 class CommTimeoutCbParams;
 typedef void CTCB(const CommTimeoutCbParams &params);
 
+class CommCloseCbParams;
+typedef void CLCB(const CommCloseCbParams &params);
+
+class FdeCbParams;
+typedef void FDECB(const FdeCbParams &params);
+
 /*
  * TODO: When there are no function-pointer-based callbacks left, all
  * this complexity can be removed. Jobs that need comm services will just
@@ -73,7 +84,7 @@
     comm_err_t flag;  ///< comm layer result status.
     int xerrno;      ///< The last errno to occur. non-zero if flag is COMM_ERR.
 
-    int fd; // raw FD which the call was about. use conn instead for new code.
+    int fd; ///< FD which the call was about. Set by the async call creator.
 private:
     // should not be needed and not yet implemented
     CommCommonCbParams &operator =(const CommCommonCbParams &params);
@@ -122,6 +133,16 @@
     CommTimeoutCbParams(void *aData);
 };
 
+/// Special Calls parameter, for direct use of an FD without a controlling Comm::Connection
+/// This is used for pipe() FD with helpers, and internally by Comm when handling some special FD actions.
+class FdeCbParams: public CommCommonCbParams
+{
+public:
+    FdeCbParams(void *aData);
+    // TODO make this a standalone object with FD value and pointer to fde table entry.
+    // that requires all the existing Comm handlers to be updated first though
+};
+
 // Interface to expose comm callback parameters of all comm dialers.
 // GetCommParams() uses this interface to access comm parameters.
 template <class Params_>
@@ -231,20 +252,20 @@
 };
 
 
-// close (PF) dialer
+// close (CLCB) dialer
 class CommCloseCbPtrFun: public CallDialer,
         public CommDialerParamsT<CommCloseCbParams>
 {
 public:
     typedef CommCloseCbParams Params;
 
-    CommCloseCbPtrFun(PF *aHandler, const Params &aParams);
+    CommCloseCbPtrFun(CLCB *aHandler, const Params &aParams);
     void dial();
 
     virtual void print(std::ostream &os) const;
 
 public:
-    PF *handler;
+    CLCB *handler;
 };
 
 class CommTimeoutCbPtrFun:public CallDialer,
@@ -262,6 +283,21 @@
     CTCB *handler;
 };
 
+/// FD event (FDECB) dialer
+class FdeCbPtrFun: public CallDialer,
+        public CommDialerParamsT<FdeCbParams>
+{
+public:
+    typedef FdeCbParams Params;
+
+    FdeCbPtrFun(FDECB *aHandler, const Params &aParams);
+    void dial();
+    virtual void print(std::ostream &os) const;
+
+public:
+    FDECB *handler;
+};
+
 // AsyncCall to comm handlers implemented as global functions.
 // The dialer is one of the Comm*CbPtrFunT above
 // TODO: Get rid of this class by moving canFire() to canDial() method
diff -u -r -N squid-3.2.0.13/src/comm.cc squid-3.2.0.14/src/comm.cc
--- squid-3.2.0.13/src/comm.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/comm.cc	2011-12-13 00:08:18.000000000 +1300
@@ -870,7 +870,7 @@
             debugs(14,9, "connecting to: " << address );
         }
     } else {
-#if defined(_SQUID_NEWSOS6_)
+#if _SQUID_NEWSOS6_
         /* Makoto MATSUSHITA <matusita@ics.es.osaka-u.ac.jp> */
 
         connect(sock, AI->ai_addr, AI->ai_addrlen);
@@ -891,7 +891,7 @@
         if (x == 0)
             errno = err;
 
-#if defined(_SQUID_SOLARIS_)
+#if _SQUID_SOLARIS_
         /*
         * Solaris 2.4's socket emulation doesn't allow you
         * to determine the error from a failed non-blocking
@@ -962,6 +962,7 @@
         // If call is not canceled schedule it for execution else ignore it
         if (!call->canceled()) {
             debugs(5, 5, "commCallCloseHandlers: ch->handler=" << call);
+            // XXX: this should not be needed. Params can be set by the call creator
             typedef CommCloseCbParams Params;
             Params &params = GetCommParams<Params>(call);
             params.fd = fd;
@@ -998,10 +999,8 @@
 comm_lingering_close(int fd)
 {
 #if USE_SSL
-
     if (fd_table[fd].ssl)
-        ssl_shutdown_method(fd);
-
+        ssl_shutdown_method(fd_table[fd].ssl);
 #endif
 
     if (shutdown(fd, 1) < 0) {
@@ -1047,23 +1046,20 @@
     comm_close(fd);
 }
 
+#if USE_SSL
 void
-comm_close_start(int fd, void *data)
+commStartSslClose(const FdeCbParams &params)
 {
-#if USE_SSL
-    fde *F = &fd_table[fd];
-    if (F->ssl)
-        ssl_shutdown_method(fd);
-
-#endif
-
+    assert(&fd_table[params.fd].ssl);
+    ssl_shutdown_method(fd_table[params.fd].ssl);
 }
+#endif
 
 void
-comm_close_complete(int fd, void *data)
+comm_close_complete(const FdeCbParams &params)
 {
 #if USE_SSL
-    fde *F = &fd_table[fd];
+    fde *F = &fd_table[params.fd];
 
     if (F->ssl) {
         SSL_free(F->ssl);
@@ -1075,13 +1071,12 @@
         F->dynamicSslContext = NULL;
     }
 #endif
-    fd_close(fd);		/* update fdstat */
-
-    close(fd);
+    fd_close(params.fd);		/* update fdstat */
+    close(params.fd);
 
     statCounter.syscalls.sock.closes++;
 
-    /* When an fd closes, give accept() a chance, if need be */
+    /* When one connection closes, give accept() a chance, if need be */
     Comm::AcceptLimiter::Instance().kick();
 }
 
@@ -1122,12 +1117,15 @@
 
     F->flags.close_request = 1;
 
-    AsyncCall::Pointer startCall=commCbCall(5,4, "comm_close_start",
-                                            CommCloseCbPtrFun(comm_close_start, NULL));
-    typedef CommCloseCbParams Params;
-    Params &startParams = GetCommParams<Params>(startCall);
-    startParams.fd = fd;
-    ScheduleCallHere(startCall);
+#if USE_SSL
+    if (F->ssl) {
+        AsyncCall::Pointer startCall=commCbCall(5,4, "commStartSslClose",
+                                                FdeCbPtrFun(commStartSslClose, NULL));
+        FdeCbParams &startParams = GetCommParams<FdeCbParams>(startCall);
+        startParams.fd = fd;
+        ScheduleCallHere(startCall);
+    }
+#endif
 
     // a half-closed fd may lack a reader, so we stop monitoring explicitly
     if (commHasHalfClosedMonitor(fd))
@@ -1163,8 +1161,8 @@
 
 
     AsyncCall::Pointer completeCall=commCbCall(5,4, "comm_close_complete",
-                                    CommCloseCbPtrFun(comm_close_complete, NULL));
-    Params &completeParams = GetCommParams<Params>(completeCall);
+                                    FdeCbPtrFun(comm_close_complete, NULL));
+    FdeCbParams &completeParams = GetCommParams<FdeCbParams>(completeCall);
     completeParams.fd = fd;
     // must use async call to wait for all callbacks
     // scheduled before comm_close() to finish
@@ -1215,7 +1213,7 @@
 }
 
 void
-comm_add_close_handler(int fd, PF * handler, void *data)
+comm_add_close_handler(int fd, CLCB * handler, void *data)
 {
     debugs(5, 5, "comm_add_close_handler: FD " << fd << ", handler=" <<
            handler << ", data=" << data);
@@ -1242,7 +1240,7 @@
 
 // remove function-based close handler
 void
-comm_remove_close_handler(int fd, PF * handler, void *data)
+comm_remove_close_handler(int fd, CLCB * handler, void *data)
 {
     assert (isOpen(fd));
     /* Find handler in list */
@@ -2022,6 +2020,7 @@
     // We have to use a global function as a closer and point to temp
     // instead of "this" because DeferredReadManager is not a job and
     // is not even cbdata protected
+    // XXX: and yet we use cbdata protection functions on it??
     AsyncCall::Pointer closer = commCbCall(5,4,
                                            "DeferredReadManager::CloseHandler",
                                            CommCloseCbPtrFun(&CloseHandler, temp));
@@ -2030,12 +2029,12 @@
 }
 
 void
-DeferredReadManager::CloseHandler(int fd, void *thecbdata)
+DeferredReadManager::CloseHandler(const CommCloseCbParams &params)
 {
-    if (!cbdataReferenceValid (thecbdata))
+    if (!cbdataReferenceValid(params.data))
         return;
 
-    CbDataList<DeferredRead> *temp = (CbDataList<DeferredRead> *)thecbdata;
+    CbDataList<DeferredRead> *temp = (CbDataList<DeferredRead> *)params.data;
 
     temp->element.closer = NULL;
     temp->element.markCancelled();
@@ -2047,6 +2046,19 @@
     assert (!deferredReads.empty());
 
     DeferredRead &read = deferredReads.head->element;
+
+    // NOTE: at this point the connection has been paused/stalled for an unknown
+    //       amount of time. We must re-validate that it is active and usable.
+
+    // If the connection has been closed already. Cancel this read.
+    if (!Comm::IsConnOpen(read.theRead.conn)) {
+        if (read.closer != NULL) {
+            read.closer->cancel("Connection closed before.");
+            read.closer = NULL;
+        }
+        read.markCancelled();
+    }
+
     if (!read.cancelled) {
         comm_remove_close_handler(read.theRead.conn->fd, read.closer);
         read.closer = NULL;
diff -u -r -N squid-3.2.0.13/src/comm.h squid-3.2.0.14/src/comm.h
--- squid-3.2.0.13/src/comm.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/comm.h	2011-12-13 00:08:18.000000000 +1300
@@ -72,9 +72,9 @@
 
 
 //typedef void IOACB(int fd, int nfd, Comm::ConnectionPointer details, comm_err_t flag, int xerrno, void *data);
-extern void comm_add_close_handler(int fd, PF *, void *);
+extern void comm_add_close_handler(int fd, CLCB *, void *);
 extern void comm_add_close_handler(int fd, AsyncCall::Pointer &);
-extern void comm_remove_close_handler(int fd, PF *, void *);
+extern void comm_remove_close_handler(int fd, CLCB *, void *);
 extern void comm_remove_close_handler(int fd, AsyncCall::Pointer &);
 
 
diff -u -r -N squid-3.2.0.13/src/CommRead.h squid-3.2.0.14/src/CommRead.h
--- squid-3.2.0.13/src/CommRead.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/CommRead.h	2011-12-13 00:08:18.000000000 +1300
@@ -80,7 +80,7 @@
     void kickReads(int const count);
 
 private:
-    static PF CloseHandler;
+    static CLCB CloseHandler;
     static DeferredRead popHead(CbDataListContainer<DeferredRead> &deferredReads);
     void kickARead(DeferredRead const &);
     void flushReads();
diff -u -r -N squid-3.2.0.13/src/ConfigParser.cc squid-3.2.0.14/src/ConfigParser.cc
--- squid-3.2.0.13/src/ConfigParser.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ConfigParser.cc	2011-12-13 00:08:18.000000000 +1300
@@ -114,3 +114,69 @@
 
     return t;
 }
+
+void
+ConfigParser::ParseQuotedString(char **var)
+{
+    String sVar;
+    ParseQuotedString(&sVar);
+    *var = xstrdup(sVar.termedBuf());
+}
+
+void
+ConfigParser::ParseQuotedString(String *var)
+{
+    // Get all of the remaining string
+    char *token = strtok(NULL, "");
+    if (token == NULL)
+        self_destruct();
+
+    if (*token != '"') {
+        token = strtok(token, w_space);
+        var->reset(token);
+        return;
+    }
+
+    char  *s = token + 1;
+    /* scan until the end of the quoted string, unescaping " and \  */
+    while (*s && *s != '"') {
+        if (*s == '\\') {
+            const char * next = s+1; // may point to 0
+            memmove(s, next, strlen(next) + 1);
+        }
+        s++;
+    }
+
+    if (*s != '"') {
+        debugs(3, DBG_CRITICAL, "ParseQuotedString: missing '\"' at the end of quoted string" );
+        self_destruct();
+    }
+    strtok(s-1, "\""); /*Reset the strtok to point after the "  */
+    *s = '\0';
+
+    var->reset(token+1);
+}
+
+const char *
+ConfigParser::QuoteString(String &var)
+{
+    static String quotedStr;
+    const char *s = var.termedBuf();
+    bool  needQuote = false;
+
+    for (const char *l = s; !needQuote &&  *l != '\0'; l++  )
+        needQuote = !isalnum(*l);
+
+    if (!needQuote)
+        return s;
+
+    quotedStr.clean();
+    quotedStr.append('"');
+    for (; *s != '\0'; s++) {
+        if (*s == '"' || *s == '\\')
+            quotedStr.append('\\');
+        quotedStr.append(*s);
+    }
+    quotedStr.append('"');
+    return quotedStr.termedBuf();
+}
diff -u -r -N squid-3.2.0.13/src/ConfigParser.h squid-3.2.0.14/src/ConfigParser.h
--- squid-3.2.0.13/src/ConfigParser.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ConfigParser.h	2011-12-13 00:08:18.000000000 +1300
@@ -67,6 +67,9 @@
     static void ParseBool(bool *var);
     static void ParseString(char **var);
     static void ParseString(String *var);
+    static void ParseQuotedString(char **var);
+    static void ParseQuotedString(String *var);
+    static const char *QuoteString(String &var);
     static void ParseWordList(wordlist **list);
     static char * strtokFile();
 };
diff -u -r -N squid-3.2.0.13/src/Debug.h squid-3.2.0.14/src/Debug.h
--- squid-3.2.0.13/src/Debug.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/Debug.h	2011-12-13 00:08:18.000000000 +1300
@@ -137,8 +137,8 @@
 }
 
 /* Legacy debug style. Still used in some places. needs to die... */
-#define do_debug(SECTION, LEVEL)   ((Debug::level = (LEVEL)) > Debug::Levels[SECTION])
-#define old_debug(SECTION, LEVEL)  if( (Debug::level=(LEVEL)) <= Debug::Levels[SECTION] ) _db_print
+#define do_debug(SECTION, LEVEL)   ((Debug::level = (LEVEL)) <= Debug::Levels[SECTION])
+#define old_debug(SECTION, LEVEL)  if do_debug((SECTION), (LEVEL)) _db_print
 
 /* Legacy debug function definitions */
 extern void _db_init(const char *logfile, const char *options);
diff -u -r -N squid-3.2.0.13/src/DiskIO/AIO/AIODiskIOStrategy.cc squid-3.2.0.14/src/DiskIO/AIO/AIODiskIOStrategy.cc
--- squid-3.2.0.13/src/DiskIO/AIO/AIODiskIOStrategy.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/AIO/AIODiskIOStrategy.cc	2011-12-13 00:08:18.000000000 +1300
@@ -100,6 +100,12 @@
         callback();
 }
 
+bool
+AIODiskIOStrategy::unlinkdUseful() const
+{
+    return false;
+}
+
 void
 AIODiskIOStrategy::unlinkFile (char const *)
 {}
diff -u -r -N squid-3.2.0.13/src/DiskIO/AIO/AIODiskIOStrategy.h squid-3.2.0.14/src/DiskIO/AIO/AIODiskIOStrategy.h
--- squid-3.2.0.13/src/DiskIO/AIO/AIODiskIOStrategy.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/AIO/AIODiskIOStrategy.h	2011-12-13 00:08:18.000000000 +1300
@@ -52,6 +52,8 @@
     virtual RefCount<DiskFile> newFile (char const *path);
     /* flush all IO operations  */
     virtual void sync();
+    /** whether the IO Strategy can use unlinkd */
+    virtual bool unlinkdUseful() const;
     /* unlink a file by path */
     virtual void unlinkFile (char const *);
 
diff -u -r -N squid-3.2.0.13/src/DiskIO/Blocking/BlockingIOStrategy.cc squid-3.2.0.14/src/DiskIO/Blocking/BlockingIOStrategy.cc
--- squid-3.2.0.13/src/DiskIO/Blocking/BlockingIOStrategy.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/Blocking/BlockingIOStrategy.cc	2011-12-13 00:08:18.000000000 +1300
@@ -57,6 +57,12 @@
     return new BlockingFile (path);
 }
 
+bool
+BlockingIOStrategy::unlinkdUseful() const
+{
+    return true;
+}
+
 void
 BlockingIOStrategy::unlinkFile(char const *path)
 {
diff -u -r -N squid-3.2.0.13/src/DiskIO/Blocking/BlockingIOStrategy.h squid-3.2.0.14/src/DiskIO/Blocking/BlockingIOStrategy.h
--- squid-3.2.0.13/src/DiskIO/Blocking/BlockingIOStrategy.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/Blocking/BlockingIOStrategy.h	2011-12-13 00:08:18.000000000 +1300
@@ -45,6 +45,7 @@
     virtual bool shedLoad();
     virtual int load();
     virtual RefCount<DiskFile> newFile(char const *path);
+    virtual bool unlinkdUseful() const;
     virtual void unlinkFile (char const *);
 };
 
diff -u -r -N squid-3.2.0.13/src/DiskIO/DiskDaemon/diomsg.h squid-3.2.0.14/src/DiskIO/DiskDaemon/diomsg.h
--- squid-3.2.0.13/src/DiskIO/DiskDaemon/diomsg.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/DiskDaemon/diomsg.h	2011-12-13 00:08:18.000000000 +1300
@@ -4,8 +4,8 @@
  * Internal declarations for the diskd routines
  */
 
-#ifndef __SQUID_DIOMSG_H__
-#define __SQUID_DIOMSG_H__
+#ifndef SQUID_DIOMSG_H__
+#define SQUID_DIOMSG_H__
 
 enum {
     _MQD_NOP,
@@ -33,4 +33,4 @@
     static const int msg_snd_rcv_sz;
 };
 
-#endif /* __SQUID_DIOMSG_H__ */
+#endif /* SQUID_DIOMSG_H__ */
diff -u -r -N squid-3.2.0.13/src/DiskIO/DiskDaemon/DiskdIOStrategy.cc squid-3.2.0.14/src/DiskIO/DiskDaemon/DiskdIOStrategy.cc
--- squid-3.2.0.13/src/DiskIO/DiskDaemon/DiskdIOStrategy.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/DiskDaemon/DiskdIOStrategy.cc	2011-12-13 00:08:18.000000000 +1300
@@ -103,6 +103,12 @@
 DiskdIOStrategy::DiskdIOStrategy() : magic1(64), magic2(72), away(0) , smsgid(-1), rmsgid(-1), wfd(-1) , instanceID(newInstance())
 {}
 
+bool
+DiskdIOStrategy::unlinkdUseful() const
+{
+    return true;
+}
+
 void
 DiskdIOStrategy::unlinkFile(char const *path)
 {
diff -u -r -N squid-3.2.0.13/src/DiskIO/DiskDaemon/DiskdIOStrategy.h squid-3.2.0.14/src/DiskIO/DiskDaemon/DiskdIOStrategy.h
--- squid-3.2.0.13/src/DiskIO/DiskDaemon/DiskdIOStrategy.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/DiskDaemon/DiskdIOStrategy.h	2011-12-13 00:08:18.000000000 +1300
@@ -76,6 +76,7 @@
     virtual bool shedLoad();
     virtual int load();
     virtual RefCount<DiskFile> newFile(char const *path);
+    virtual bool unlinkdUseful() const;
     virtual void unlinkFile (char const *);
     virtual ConfigOption *getOptionTree() const;
     virtual void init();
diff -u -r -N squid-3.2.0.13/src/DiskIO/DiskIOStrategy.h squid-3.2.0.14/src/DiskIO/DiskIOStrategy.h
--- squid-3.2.0.13/src/DiskIO/DiskIOStrategy.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/DiskIOStrategy.h	2011-12-13 00:08:18.000000000 +1300
@@ -59,6 +59,9 @@
     /** flush all IO operations  */
     virtual void sync() {}
 
+    /** whether the IO Strategy can use unlinkd */
+    virtual bool unlinkdUseful() const = 0;
+
     /** unlink a file by path */
     virtual void unlinkFile(char const *) = 0;
 
@@ -92,6 +95,8 @@
 
     virtual void sync() { io->sync(); }
 
+    virtual bool unlinkdUseful() const { return io->unlinkdUseful(); }
+
     virtual void unlinkFile (char const *path) { io->unlinkFile(path); }
 
     virtual int callback() { return io->callback(); }
diff -u -r -N squid-3.2.0.13/src/DiskIO/DiskThreads/aiops.cc squid-3.2.0.14/src/DiskIO/DiskThreads/aiops.cc
--- squid-3.2.0.13/src/DiskIO/DiskThreads/aiops.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/DiskThreads/aiops.cc	2011-12-13 00:08:18.000000000 +1300
@@ -376,7 +376,7 @@
     sigemptyset(&newSig);
     sigaddset(&newSig, SIGPIPE);
     sigaddset(&newSig, SIGCHLD);
-#ifdef _SQUID_LINUX_THREADS_
+#if defined(_SQUID_LINUX_THREADS_)
 
     sigaddset(&newSig, SIGQUIT);
     sigaddset(&newSig, SIGTRAP);
diff -u -r -N squid-3.2.0.13/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc squid-3.2.0.14/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc
--- squid-3.2.0.13/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc	2011-12-13 00:08:18.000000000 +1300
@@ -254,6 +254,12 @@
     return new DiskThreadsDiskFile (path, this);
 }
 
+bool
+DiskThreadsIOStrategy::unlinkdUseful() const
+{
+    return false;
+}
+
 void
 DiskThreadsIOStrategy::unlinkFile(char const *path)
 {
diff -u -r -N squid-3.2.0.13/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.h squid-3.2.0.14/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.h
--- squid-3.2.0.13/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/DiskThreads/DiskThreadsIOStrategy.h	2011-12-13 00:08:18.000000000 +1300
@@ -54,6 +54,7 @@
     virtual bool shedLoad();
     virtual int load();
     virtual RefCount<DiskFile> newFile(char const *path);
+    virtual bool unlinkdUseful() const;
     virtual void unlinkFile (char const *);
     virtual int callback();
     virtual void sync();
diff -u -r -N squid-3.2.0.13/src/DiskIO/IpcIo/IpcIoFile.cc squid-3.2.0.14/src/DiskIO/IpcIo/IpcIoFile.cc
--- squid-3.2.0.13/src/DiskIO/IpcIo/IpcIoFile.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/IpcIo/IpcIoFile.cc	2011-12-13 00:08:18.000000000 +1300
@@ -23,6 +23,11 @@
 
 /// shared memory segment path to use for IpcIoFile maps
 static const char *const ShmLabel = "io_file";
+/// a single worker-to-disker or disker-to-worker queue capacity; up
+/// to 2*QueueCapacity I/O requests queued between a single worker and
+/// a single disker
+// TODO: make configurable or compute from squid.conf settings if possible
+static const int QueueCapacity = 1024;
 
 const double IpcIoFile::Timeout = 7; // seconds;  XXX: ALL,9 may require more
 IpcIoFile::IpcIoFileList IpcIoFile::WaitingForOpen;
@@ -357,10 +362,24 @@
         return true; // no timeout specified
 
     IpcIoMsg oldestIo;
-    if (!queue->peek(diskId, oldestIo) || oldestIo.start.tv_sec <= 0)
+    if (!queue->findOldest(diskId, oldestIo) || oldestIo.start.tv_sec <= 0)
         return true; // we cannot estimate expected wait time; assume it is OK
 
-    const int expectedWait = tvSubMsec(oldestIo.start, current_time);
+    const int oldestWait = tvSubMsec(oldestIo.start, current_time);
+
+    int rateWait = -1; // time in millisecons
+    const Ipc::QueueReader::Rate::Value ioRate = queue->rateLimit(diskId);
+    if (ioRate > 0) {
+        // if there are N requests pending, the new one will wait at
+        // least N/max-swap-rate seconds
+        rateWait = static_cast<int>(1e3 * queue->outSize(diskId) / ioRate);
+        // adjust N/max-swap-rate value based on the queue "balance"
+        // member, in case we have been borrowing time against future
+        // I/O already
+        rateWait += queue->balance(diskId);
+    }
+
+    const int expectedWait = max(oldestWait, rateWait);
     if (expectedWait < 0 ||
             static_cast<time_msec_t>(expectedWait) < config.ioTimeout)
         return true; // expected wait time is acceptible
@@ -671,8 +690,10 @@
         return false;
 
     // is there an I/O request we could potentially delay?
-    if (!queue->popReady()) {
-        // unlike pop(), popReady() is not reliable and does not block reader
+    int processId;
+    IpcIoMsg ipcIo;
+    if (!queue->peek(processId, ipcIo)) {
+        // unlike pop(), peek() is not reliable and does not block reader
         // so we must proceed with pop() even if it is likely to fail
         return false;
     }
@@ -692,9 +713,10 @@
 
     debugs(47, 7, HERE << "rate limiting balance: " << balance << " after +" << credit << " -" << debit);
 
-    if (balance > maxImbalance) {
-        // if we accumulated too much time for future slow I/Os,
-        // then shed accumulated time to keep just half of the excess
+    if (ipcIo.command == IpcIo::cmdWrite && balance > maxImbalance) {
+        // if the next request is (likely) write and we accumulated
+        // too much time for future slow I/Os, then shed accumulated
+        // time to keep just half of the excess
         const int64_t toSpend = balance - maxImbalance/2;
 
         if (toSpend/1e3 > Timeout)
@@ -829,6 +851,31 @@
 }
 
 
+/// reports our needs for shared memory pages to Ipc::Mem::Pages
+class IpcIoClaimMemoryNeedsRr: public RegisteredRunner
+{
+public:
+    /* RegisteredRunner API */
+    virtual void run(const RunnerRegistry &r);
+};
+
+RunnerRegistrationEntry(rrClaimMemoryNeeds, IpcIoClaimMemoryNeedsRr);
+
+
+void
+IpcIoClaimMemoryNeedsRr::run(const RunnerRegistry &)
+{
+    const int itemsCount = Ipc::FewToFewBiQueue::MaxItemsCount(
+                               ::Config.workers, ::Config.cacheSwap.n_strands, QueueCapacity);
+    // the maximum number of shared I/O pages is approximately the
+    // number of queue slots, we add a fudge factor to that to account
+    // for corner cases where I/O pages are created before queue
+    // limits are checked or destroyed long after the I/O is dequeued
+    Ipc::Mem::NotePageNeed(Ipc::Mem::PageId::ioPage,
+                           static_cast<int>(itemsCount * 1.1));
+}
+
+
 /// initializes shared memory segments used by IpcIoFile
 class IpcIoRr: public Ipc::Mem::RegisteredRunner
 {
@@ -849,15 +896,14 @@
 
 void IpcIoRr::create(const RunnerRegistry &)
 {
-    if (!UsingSmp())
+    if (Config.cacheSwap.n_strands <= 0)
         return;
 
     Must(!owner);
-    // XXX: make capacity configurable
     owner = Ipc::FewToFewBiQueue::Init(ShmLabel, Config.workers, 1,
                                        Config.cacheSwap.n_strands,
                                        1 + Config.workers, sizeof(IpcIoMsg),
-                                       1024);
+                                       QueueCapacity);
 }
 
 IpcIoRr::~IpcIoRr()
diff -u -r -N squid-3.2.0.13/src/DiskIO/IpcIo/IpcIoIOStrategy.cc squid-3.2.0.14/src/DiskIO/IpcIo/IpcIoIOStrategy.cc
--- squid-3.2.0.13/src/DiskIO/IpcIo/IpcIoIOStrategy.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/IpcIo/IpcIoIOStrategy.cc	2011-12-13 00:08:18.000000000 +1300
@@ -28,6 +28,12 @@
     return new IpcIoFile (path);
 }
 
+bool
+IpcIoIOStrategy::unlinkdUseful() const
+{
+    return true;
+}
+
 void
 IpcIoIOStrategy::unlinkFile(char const *path)
 {
diff -u -r -N squid-3.2.0.13/src/DiskIO/IpcIo/IpcIoIOStrategy.h squid-3.2.0.14/src/DiskIO/IpcIo/IpcIoIOStrategy.h
--- squid-3.2.0.13/src/DiskIO/IpcIo/IpcIoIOStrategy.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/IpcIo/IpcIoIOStrategy.h	2011-12-13 00:08:18.000000000 +1300
@@ -9,6 +9,7 @@
     virtual bool shedLoad();
     virtual int load();
     virtual RefCount<DiskFile> newFile(char const *path);
+    virtual bool unlinkdUseful() const;
     virtual void unlinkFile (char const *);
 };
 
diff -u -r -N squid-3.2.0.13/src/DiskIO/Mmapped/MmappedIOStrategy.cc squid-3.2.0.14/src/DiskIO/Mmapped/MmappedIOStrategy.cc
--- squid-3.2.0.13/src/DiskIO/Mmapped/MmappedIOStrategy.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/Mmapped/MmappedIOStrategy.cc	2011-12-13 00:08:18.000000000 +1300
@@ -28,6 +28,12 @@
     return new MmappedFile (path);
 }
 
+bool
+MmappedIOStrategy::unlinkdUseful() const
+{
+    return true;
+}
+
 void
 MmappedIOStrategy::unlinkFile(char const *path)
 {
diff -u -r -N squid-3.2.0.13/src/DiskIO/Mmapped/MmappedIOStrategy.h squid-3.2.0.14/src/DiskIO/Mmapped/MmappedIOStrategy.h
--- squid-3.2.0.13/src/DiskIO/Mmapped/MmappedIOStrategy.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/DiskIO/Mmapped/MmappedIOStrategy.h	2011-12-13 00:08:18.000000000 +1300
@@ -9,6 +9,7 @@
     virtual bool shedLoad();
     virtual int load();
     virtual RefCount<DiskFile> newFile(char const *path);
+    virtual bool unlinkdUseful() const;
     virtual void unlinkFile (char const *);
 };
 
diff -u -r -N squid-3.2.0.13/src/dns_internal.cc squid-3.2.0.14/src/dns_internal.cc
--- squid-3.2.0.13/src/dns_internal.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/dns_internal.cc	2011-12-13 00:08:18.000000000 +1300
@@ -247,7 +247,7 @@
 static EVH idnsCheckQueue;
 static void idnsTickleQueue(void);
 static void idnsRcodeCount(int, int);
-static void idnsVCClosed(int fd, void *data);
+static CLCB idnsVCClosed;
 static unsigned short idnsQueryID(void);
 
 static void
@@ -767,6 +767,10 @@
     if (vc->queue->contentSize() == 0)
         return;
 
+    // if retrying after a TC UDP response, our close handler cb may be pending
+    if (fd_table[vc->conn->fd].closing())
+        return;
+
     MemBuf *mb = vc->queue;
 
     vc->queue = new MemBuf;
@@ -811,9 +815,9 @@
 }
 
 static void
-idnsVCClosed(int fd, void *data)
+idnsVCClosed(const CommCloseCbParams &params)
 {
-    nsvc * vc = (nsvc *)data;
+    nsvc * vc = (nsvc *)params.data;
     delete vc->queue;
     delete vc->msg;
     vc->conn = NULL;
diff -u -r -N squid-3.2.0.13/src/dnsserver.cc squid-3.2.0.14/src/dnsserver.cc
--- squid-3.2.0.13/src/dnsserver.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/dnsserver.cc	2011-12-13 00:08:18.000000000 +1300
@@ -31,11 +31,6 @@
  */
 
 #include "config.h"
-//#include "compat/inet_ntop.h"
-//#include "compat/getaddrinfo.h"
-//#include "compat/getnameinfo.h"
-#include "ip/Address.h"
-//#include "util.h"
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
@@ -177,8 +172,7 @@
     int ttl = 0;
     int retry = 0;
     unsigned int i = 0;
-    Ip::Address ipa;
-    char ntoabuf[MAX_IPSTRLEN];
+    char ntoabuf[256];
     struct addrinfo hints;
     struct addrinfo *AI = NULL;
     struct addrinfo *aiptr = NULL;
@@ -193,11 +187,20 @@
         return;
     }
 
-    /* setup 'hints' for the system lookup */
+    /* check if it's already an IP address in text form. */
     memset(&hints, '\0', sizeof(struct addrinfo));
     hints.ai_family = AF_UNSPEC;
-    hints.ai_flags = AI_CANONNAME;
+    hints.ai_flags = AI_NUMERICHOST; // only succeed if its numeric.
+    const bool isDomain = (getaddrinfo(buf,NULL,&hints,&AI) != 0);
+
+    // reset for real lookup
+    freeaddrinfo(AI);
+    AI = NULL;
 
+    // resolve the address/name
+    memset(&hints, '\0', sizeof(struct addrinfo));
+    hints.ai_family = AF_UNSPEC;
+    hints.ai_flags = AI_CANONNAME;
     for (;;) {
         if (AI != NULL) {
             freeaddrinfo(AI);
@@ -216,9 +219,7 @@
         sleep(1);
     }
 
-    /* check if it's already an IP address in text form. */
-    ipa = buf;
-    if ( ipa.IsAnyAddr() ) {
+    if (isDomain) {
         /* its a domain name. Use the forward-DNS lookup already done */
 
         if (res == 0) {
@@ -234,7 +235,7 @@
             i = 0;
             aiptr = AI;
             while (NULL != aiptr && 32 >= i) {
-                memset(ntoabuf, 0, MAX_IPSTRLEN);
+                memset(ntoabuf, 0, sizeof(ntoabuf));
 
                 /* getaddrinfo given a host has a nasty tendency to return duplicate addr's */
                 /* BUT sorted fortunately, so we can drop most of them easily */
@@ -252,10 +253,10 @@
                 /* annoying inet_ntop breaks the nice code by requiring the in*_addr */
                 switch (aiptr->ai_family) {
                 case AF_INET:
-                    inet_ntop(aiptr->ai_family, &((struct sockaddr_in*)aiptr->ai_addr)->sin_addr, ntoabuf, MAX_IPSTRLEN);
+                    inet_ntop(aiptr->ai_family, &((struct sockaddr_in*)aiptr->ai_addr)->sin_addr, ntoabuf, sizeof(ntoabuf));
                     break;
                 case AF_INET6:
-                    inet_ntop(aiptr->ai_family, &((struct sockaddr_in6*)aiptr->ai_addr)->sin6_addr, ntoabuf, MAX_IPSTRLEN);
+                    inet_ntop(aiptr->ai_family, &((struct sockaddr_in6*)aiptr->ai_addr)->sin6_addr, ntoabuf, sizeof(ntoabuf));
                     break;
                 default:
                     aiptr = aiptr->ai_next;
@@ -276,7 +277,7 @@
          */
         if (NULL != AI && NULL != AI->ai_addr) {
             for (;;) {
-                if ( 0 == (res = getnameinfo(AI->ai_addr, AI->ai_addrlen, ntoabuf, MAX_IPSTRLEN, NULL,0,0)) )
+                if ( 0 == (res = getnameinfo(AI->ai_addr, AI->ai_addrlen, ntoabuf, sizeof(ntoabuf), NULL,0,0)) )
                     break;
 
                 if (res != EAI_AGAIN)
@@ -347,11 +348,11 @@
            );
 }
 
-#ifdef _SQUID_RES_NSADDR6_LARRAY
+#if defined(_SQUID_RES_NSADDR6_LARRAY)
 /// \ingroup dnsserver
 #define _SQUID_RES_NSADDR6_LIST(i)	_SQUID_RES_NSADDR6_LARRAY[i].sin6_addr
 #endif
-#ifdef _SQUID_RES_NSADDR6_LPTR
+#if defined(_SQUID_RES_NSADDR6_LPTR)
 /// \ingroup dnsserver
 #define _SQUID_RES_NSADDR6_LIST(i)	_SQUID_RES_NSADDR6_LPTR[i]->sin6_addr
 #endif
@@ -366,17 +367,14 @@
 void
 squid_res_setservers(int reset)
 {
-#if defined(_SQUID_FREEBSD_) && defined(_SQUID_RES_NSADDR6_COUNT)
+#if _SQUID_FREEBSD_ && defined(_SQUID_RES_NSADDR6_COUNT)
     /* Only seems to be valid on FreeBSD 5.5 where _res_ext was provided without an ns6addr counter! */
     /* Gone again on FreeBSD 6.2 along with _res_ext itself in any form. */
     int ns6count = 0;
 #endif
-#if HAVE_RES_INIT
-    Ip::Address ipa;
-#ifdef _SQUID_RES_NSADDR_LIST
+#if HAVE_RES_INIT && defined(_SQUID_RES_NSADDR_LIST)
     extern char *optarg;
 #endif
-#endif
 
 #if HAVE_RES_INIT && (defined(_SQUID_RES_NSADDR_LIST) || defined(_SQUID_RES_NSADDR6_LIST))
 
@@ -401,35 +399,40 @@
      *
      *  BUT, even if _res.nsaddrs is memset to NULL, it resolves IFF IPv6 set in _ext.
      *
-     *  SO, am splittig the IPv4/v6 into the seperate _res fields
+     *  SO, am splitting the IPv4/v6 into the seperate _res fields
      *      and making nscount a total of IPv4+IPv6 /w nscount6 the IPv6 sub-counter
      *	ie. nscount = count(NSv4)+count(NSv6) & nscount6 = count(NSv6)
      *
      * If ANYONE knows better please let us know.
      */
-    if ( !(ipa = optarg) ) {
+    struct addrinfo hints;
+    memset(&hints, '\0', sizeof(struct addrinfo));
+    hints.ai_family = AF_UNSPEC;
+    hints.ai_flags = AI_NUMERICHOST; // prevent repeated DNS lookups!
+    struct addrinfo *AI = NULL;
+    if ( getaddrinfo(optarg, NULL, &hints, &AI) != 0) {
         fprintf(stderr, "%s appears to be a bad nameserver FQDN/IP.\n",optarg);
-    } else if ( ipa.IsIPv4() ) {
+    } else if ( AI->ai_family == AF_INET ) {
         if (_SQUID_RES_NSADDR_COUNT == MAXNS) {
             fprintf(stderr, "Too many -s options, only %d are allowed\n", MAXNS);
-            return;
+        } else {
+            _SQUID_RES_NSADDR_LIST[_SQUID_RES_NSADDR_COUNT] = _SQUID_RES_NSADDR_LIST[0];
+            memcpy(&_SQUID_RES_NSADDR_LIST[_SQUID_RES_NSADDR_COUNT++].sin_addr, &((struct sockaddr_in*)AI->ai_addr)->sin_addr, sizeof(struct in_addr));
         }
-        _SQUID_RES_NSADDR_LIST[_SQUID_RES_NSADDR_COUNT] = _SQUID_RES_NSADDR_LIST[0];
-        ipa.GetInAddr(_SQUID_RES_NSADDR_LIST[_SQUID_RES_NSADDR_COUNT++].sin_addr);
-    } else if ( ipa.IsIPv6() ) {
+    } else if ( AI->ai_family == AF_INET6 ) {
 #if USE_IPV6 && defined(_SQUID_RES_NSADDR6_LIST)
         /* because things NEVER seem to resolve in tests without _res.nscount being a total. */
         if (_SQUID_RES_NSADDR_COUNT == MAXNS) {
             fprintf(stderr, "Too many -s options, only %d are allowed\n", MAXNS);
-            return;
+        } else {
+            _SQUID_RES_NSADDR_COUNT++;
+            memcpy(&_SQUID_RES_NSADDR6_LIST(_SQUID_RES_NSADDR6_COUNT++), &((struct sockaddr_in6*)AI->ai_addr)->sin6_addr, sizeof(struct in6_addr));
         }
-        _SQUID_RES_NSADDR_COUNT++;
-
-        ipa.GetInAddr(_SQUID_RES_NSADDR6_LIST(_SQUID_RES_NSADDR6_COUNT++));
 #else
         fprintf(stderr, "IPv6 nameservers not supported on this resolver\n");
 #endif
     }
+    freeaddrinfo(AI);
 
 #else /* !HAVE_RES_INIT || !defined(_SQUID_RES_NSADDR_LIST) */
 
diff -u -r -N squid-3.2.0.13/src/errorpage.cc squid-3.2.0.14/src/errorpage.cc
--- squid-3.2.0.13/src/errorpage.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/errorpage.cc	2011-12-13 00:08:18.000000000 +1300
@@ -66,7 +66,7 @@
  */
 
 
-#ifndef DEFAULT_SQUID_ERROR_DIR
+#if !defined(DEFAULT_SQUID_ERROR_DIR)
 /** Where to look for errors if config path fails.
  \note Please use ./configure --datadir=/path instead of patching
  */
@@ -557,24 +557,41 @@
     return "ERR_UNKNOWN";	/* should not happen */
 }
 
-ErrorState *
-errorCon(err_type type, http_status status, HttpRequest * request)
+ErrorState::ErrorState(err_type t, http_status status, HttpRequest * req) :
+        type(t),
+        page_id(t),
+        err_language(NULL),
+        httpStatus(status),
+#if USE_AUTH
+        auth_user_request (NULL),
+#endif
+        request(NULL),
+        url(NULL),
+        xerrno(0),
+        port(0),
+        dnsError(),
+        ttl(0),
+        src_addr(),
+        redirect_url(NULL),
+        callback(NULL),
+        callback_data(NULL),
+        request_hdrs(NULL),
+        err_msg(NULL)
+#if USE_SSL
+        , detail(NULL)
+#endif
 {
-    ErrorState *err = new ErrorState;
-    err->page_id = type;	/* has to be reset manually if needed */
-    err->err_language = NULL;
-    err->type = type;
-    err->httpStatus = status;
-    if (err->page_id >= ERR_MAX && ErrorDynamicPages.items[err->page_id - ERR_MAX]->page_redirect != HTTP_STATUS_NONE)
-        err->httpStatus = ErrorDynamicPages.items[err->page_id - ERR_MAX]->page_redirect;
-
-    if (request != NULL) {
-        err->request = HTTPMSGLOCK(request);
-        err->src_addr = request->client_addr;
+    memset(&flags, 0, sizeof(flags));
+    memset(&ftp, 0, sizeof(ftp));
+
+    if (page_id >= ERR_MAX && ErrorDynamicPages.items[page_id - ERR_MAX]->page_redirect != HTTP_STATUS_NONE)
+        httpStatus = ErrorDynamicPages.items[page_id - ERR_MAX]->page_redirect;
+
+    if (req != NULL) {
+        request = HTTPMSGLOCK(req);
+        src_addr = req->client_addr;
         request->detailError(type, ERR_DETAIL_NONE);
     }
-
-    return err;
 }
 
 void
@@ -595,7 +612,7 @@
          */
         assert(EBIT_TEST(entry->flags, ENTRY_ABORTED));
         assert(entry->mem_obj->nclients == 0);
-        errorStateFree(err);
+        delete err;
         return;
     }
 
@@ -615,7 +632,7 @@
     entry->negativeCache();
     entry->releaseRequest();
     entry->unlock();
-    errorStateFree(err);
+    delete err;
 }
 
 void
@@ -671,31 +688,29 @@
         }
     }
 
-    errorStateFree(err);
+    delete err;
 }
 
-void
-errorStateFree(ErrorState * err)
+ErrorState::~ErrorState()
 {
-    HTTPMSGUNLOCK(err->request);
-    safe_free(err->redirect_url);
-    safe_free(err->url);
-    safe_free(err->request_hdrs);
-    wordlistDestroy(&err->ftp.server_msg);
-    safe_free(err->ftp.request);
-    safe_free(err->ftp.reply);
+    HTTPMSGUNLOCK(request);
+    safe_free(redirect_url);
+    safe_free(url);
+    safe_free(request_hdrs);
+    wordlistDestroy(&ftp.server_msg);
+    safe_free(ftp.request);
+    safe_free(ftp.reply);
 #if USE_AUTH
-    err->auth_user_request = NULL;
+    auth_user_request = NULL;
 #endif
-    safe_free(err->err_msg);
+    safe_free(err_msg);
 #if USE_ERR_LOCALES
-    if (err->err_language != Config.errorDefaultLanguage)
+    if (err_language != Config.errorDefaultLanguage)
 #endif
-        safe_free(err->err_language);
+        safe_free(err_language);
 #if USE_SSL
-    delete err->detail;
+    delete detail;
 #endif
-    cbdataFree(err);
 }
 
 int
@@ -764,7 +779,7 @@
 
     if (ftp.request) {
         str.Printf("FTP Request: %s\r\n", ftp.request);
-        str.Printf("FTP Reply: %s\r\n", ftp.reply);
+        str.Printf("FTP Reply: %s\r\n", (ftp.reply? ftp.reply:"[none]"));
         str.Printf("FTP Msg: ");
         wordlistCat(ftp.server_msg, &str);
         str.Printf("\r\n");
@@ -858,7 +873,7 @@
     case 'F':
         if (building_deny_info_url) break;
         /* FTP REPLY LINE */
-        if (ftp.request)
+        if (ftp.reply)
             p = ftp.reply;
         else
             p = "nothing";
@@ -1198,7 +1213,7 @@
                 rep->header.putStr(HDR_CONTENT_LANGUAGE, "en");
         }
 
-        httpBodySet(&rep->body, content);
+        rep->body.setMb(content);
         /* do not memBufClean() or delete the content, it was absorbed by httpBody */
     }
 
diff -u -r -N squid-3.2.0.13/src/errorpage.h squid-3.2.0.14/src/errorpage.h
--- squid-3.2.0.13/src/errorpage.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/errorpage.h	2011-12-13 00:08:18.000000000 +1300
@@ -95,6 +95,10 @@
 class ErrorState
 {
 public:
+    ErrorState(err_type type, http_status, HttpRequest * request);
+    ErrorState(); // not implemented.
+    ~ErrorState();
+
     /**
      * Allocates and initializes an error response
      */
@@ -237,17 +241,8 @@
 SQUIDCEXTERN void errorAppendEntry(StoreEntry *entry, ErrorState *err);
 
 /// \ingroup ErrorPageAPI
-SQUIDCEXTERN void errorStateFree(ErrorState * err);
-
-/// \ingroup ErrorPageAPI
 SQUIDCEXTERN err_type errorReservePageId(const char *page_name);
 
-/**
- \ingroup ErrorPageAPI
- *
- * This function creates a ErrorState object.
- */
-SQUIDCEXTERN ErrorState *errorCon(err_type type, http_status, HttpRequest * request);
 SQUIDCEXTERN const char *errorPageName(int pageId); ///< error ID to string
 
 /**
diff -u -r -N squid-3.2.0.13/src/esi/Esi.cc squid-3.2.0.14/src/esi/Esi.cc
--- squid-3.2.0.13/src/esi/Esi.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/esi/Esi.cc	2011-12-13 00:08:18.000000000 +1300
@@ -1465,15 +1465,15 @@
     err->err_msg = errormessage;
     errormessage = NULL;
     rep = err->BuildHttpReply();
-    assert (rep->body.mb->contentSize() >= 0);
-    size_t errorprogress = rep->body.mb->contentSize();
+    assert (rep->body.hasContent());
+    size_t errorprogress = rep->body.contentSize();
     /* Tell esiSend where to start sending from */
     outbound_offset = 0;
     /* copy the membuf from the reply to outbound */
 
-    while (errorprogress < (size_t)rep->body.mb->contentSize()) {
+    while (errorprogress < (size_t)rep->body.contentSize()) {
         appendOutboundData(new ESISegment);
-        errorprogress += outboundtail->append(rep->body.mb->content() + errorprogress, rep->body.mb->contentSize() - errorprogress);
+        errorprogress += outboundtail->append(rep->body.content() + errorprogress, rep->body.contentSize() - errorprogress);
     }
 
     /* the esiCode now thinks that the error is the outbound,
@@ -2432,19 +2432,19 @@
     int rv = 0;
 
     if (rep->surrogate_control) {
-        HttpHdrScTarget *sctusable = httpHdrScGetMergedTarget (rep->surrogate_control,
-                                     Config.Accel.surrogate_id);
+        HttpHdrScTarget *sctusable =
+            rep->surrogate_control->getMergedTarget(Config.Accel.surrogate_id);
 
-        if (!sctusable || sctusable->content.size() == 0)
+        if (!sctusable || !sctusable->hasContent())
             /* Nothing generic or targeted at us, or no
              * content processing requested
              */
             return 0;
 
-        if (sctusable->content.pos("ESI/1.0") != NULL)
+        if (sctusable->content().pos("ESI/1.0") != NULL)
             rv = 1;
 
-        httpHdrScTargetDestroy (sctusable);
+        delete sctusable;
     }
 
     return rv;
diff -u -r -N squid-3.2.0.13/src/external_acl.cc squid-3.2.0.14/src/external_acl.cc
--- squid-3.2.0.13/src/external_acl.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/external_acl.cc	2011-12-13 00:08:18.000000000 +1300
@@ -190,6 +190,7 @@
 #endif
         EXT_ACL_EXT_LOG,
         EXT_ACL_TAG,
+        EXT_ACL_PERCENT,
         EXT_ACL_END
     } type;
     external_acl_format *next;
@@ -471,6 +472,8 @@
             format->type = _external_acl_format::EXT_ACL_EXT_LOG;
         else if (strcmp(token, "%TAG") == 0)
             format->type = _external_acl_format::EXT_ACL_TAG;
+        else if (strcmp(token, "%%") == 0)
+            format->type = _external_acl_format::EXT_ACL_PERCENT;
         else {
             debugs(0,0, "ERROR: Unknown Format token " << token);
             self_destruct();
@@ -755,7 +758,14 @@
 
     if (entry) {
         if (cbdataReferenceValid(entry) && entry->def == acl->def) {
-            /* Ours, use it.. */
+            /* Ours, use it.. if the key matches */
+            key = makeExternalAclKey(ch, acl);
+            if (strcmp(key, (char*)entry->key) != 0) {
+                debugs(82, 9, HERE << "entry key='" << (char *)entry->key << "', our key='" << key << "' dont match. Discarded.");
+                // too bad. need a new lookup.
+                cbdataReferenceDone(ch->extacl_entry);
+                entry = NULL;
+            }
         } else {
             /* Not valid, or not ours.. get rid of it */
             debugs(82, 9, HERE << "entry " << entry << " not valid or not ours. Discarded.");
@@ -905,8 +915,13 @@
         switch (format->type) {
 #if USE_AUTH
         case _external_acl_format::EXT_ACL_LOGIN:
-            assert (ch->auth_user_request != NULL);
-            str = ch->auth_user_request->username();
+            // if this ACL line was the cause of credentials fetch
+            // they may not already be in the checklist
+            if (ch->auth_user_request == NULL && ch->request)
+                ch->auth_user_request = ch->request->auth_user_request;
+
+            if (ch->auth_user_request != NULL)
+                str = ch->auth_user_request->username();
             break;
 #endif
 #if USE_IDENT
@@ -1082,6 +1097,9 @@
         case _external_acl_format::EXT_ACL_TAG:
             str = request->tag.termedBuf();
             break;
+        case _external_acl_format::EXT_ACL_PERCENT:
+            str = "%";
+            break;
         case _external_acl_format::EXT_ACL_UNKNOWN:
 
         case _external_acl_format::EXT_ACL_END:
diff -u -r -N squid-3.2.0.13/src/filemap.cc squid-3.2.0.14/src/filemap.cc
--- squid-3.2.0.13/src/filemap.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/filemap.cc	2011-12-13 00:08:18.000000000 +1300
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * DEBUG: section 08    Swap File Bitmap
  * AUTHOR: Harvest Derived
  *
@@ -32,7 +30,9 @@
  *
  */
 
-#include "squid.h"
+#include "config.h"
+#include "Debug.h"
+#include "FileMap.h"
 
 /* Number of bits in a long */
 #if SIZEOF_LONG == 8
@@ -54,133 +54,107 @@
 
 #define FM_INITIAL_NUMBER (1<<14)
 
-fileMap *
-file_map_create(void)
+FileMap::FileMap() :
+        capacity_(FM_INITIAL_NUMBER), usedSlots_(0),
+        nwords(capacity_ >> LONG_BIT_SHIFT)
+{
+    debugs(8, 3, HERE << "creating space for " << capacity_ << " files");
+    debugs(8, 5, "--> " << nwords << " words of " << sizeof(*bitmap) << " bytes each");
+    bitmap = (unsigned long *)xcalloc(nwords, sizeof(*bitmap));
+}
+
+void
+FileMap::grow()
 {
-    fileMap *fm = (fileMap *)xcalloc(1, sizeof(fileMap));
-    fm->max_n_files = FM_INITIAL_NUMBER;
-    fm->nwords = fm->max_n_files >> LONG_BIT_SHIFT;
-    debugs(8, 3, "file_map_create: creating space for " << fm->max_n_files << " files");
-    debugs(8, 5, "--> " << fm->nwords << " words of " << sizeof(*fm->file_map) << " bytes each");
-    fm->file_map = (unsigned long *)xcalloc(fm->nwords, sizeof(*fm->file_map));
-    /* XXX account fm->file_map */
-    return fm;
-}
-
-static void
-file_map_grow(fileMap * fm)
-{
-    int old_sz = fm->nwords * sizeof(*fm->file_map);
-    void *old_map = fm->file_map;
-    fm->max_n_files <<= 1;
-    assert(fm->max_n_files <= (1 << 24));	/* swap_filen is 25 bits, signed */
-    fm->nwords = fm->max_n_files >> LONG_BIT_SHIFT;
-    debugs(8, 3, "file_map_grow: creating space for " << fm->max_n_files << " files");
-    debugs(8, 5, "--> " << fm->nwords << " words of " << sizeof(*fm->file_map) << " bytes each");
-    fm->file_map = (unsigned long *)xcalloc(fm->nwords, sizeof(*fm->file_map));
+    int old_sz = nwords * sizeof(*bitmap);
+    void *old_map = bitmap;
+    capacity_ <<= 1;
+    assert(capacity_ <= (1 << 24));	/* swap_filen is 25 bits, signed */
+    nwords = capacity_ >> LONG_BIT_SHIFT;
+    debugs(8, 3, HERE << " creating space for " << capacity_ << " files");
+    debugs(8, 5, "--> " << nwords << " words of " << sizeof(*bitmap) << " bytes each");
+    bitmap = (unsigned long *)xcalloc(nwords, sizeof(*bitmap));
     debugs(8, 3, "copying " << old_sz << " old bytes");
-    memcpy(fm->file_map, old_map, old_sz);
+    memcpy(bitmap, old_map, old_sz);
     xfree(old_map);
-    /* XXX account fm->file_map */
+    /* XXX account fm->bitmap */
 }
 
-int
-file_map_bit_set(fileMap * fm, int file_number)
+bool
+FileMap::setBit(sfileno file_number)
 {
     unsigned long bitmask = (1L << (file_number & LONG_BIT_MASK));
 
-    while (file_number >= fm->max_n_files)
-        file_map_grow(fm);
+    while (file_number >= capacity_)
+        grow();
 
-    fm->file_map[file_number >> LONG_BIT_SHIFT] |= bitmask;
+    bitmap[file_number >> LONG_BIT_SHIFT] |= bitmask;
 
-    fm->n_files_in_map++;
+    usedSlots_++;
 
     return file_number;
 }
 
 /*
- * WARNING: file_map_bit_reset does not perform array bounds
+ * WARNING: clearBit does not perform array bounds
  * checking!  It assumes that 'file_number' is valid, and that the
  * bit is already set.  The caller must verify both of those
- * conditions by calling file_map_bit_test() first.
+ * conditions by calling testBit
+ * () first.
  */
 void
-file_map_bit_reset(fileMap * fm, int file_number)
+FileMap::clearBit(sfileno file_number)
 {
     unsigned long bitmask = (1L << (file_number & LONG_BIT_MASK));
-    fm->file_map[file_number >> LONG_BIT_SHIFT] &= ~bitmask;
-    fm->n_files_in_map--;
+    bitmap[file_number >> LONG_BIT_SHIFT] &= ~bitmask;
+    usedSlots_--;
 }
 
-int
-file_map_bit_test(fileMap * fm, int file_number)
+bool
+FileMap::testBit(sfileno file_number) const
 {
     unsigned long bitmask = (1L << (file_number & LONG_BIT_MASK));
 
-    if (file_number >= fm->max_n_files)
+    if (file_number >= capacity_)
         return 0;
 
     /* be sure the return value is an int, not a u_long */
-    return (fm->file_map[file_number >> LONG_BIT_SHIFT] & bitmask ? 1 : 0);
+    return (bitmap[file_number >> LONG_BIT_SHIFT] & bitmask ? 1 : 0);
 }
 
-int
-file_map_allocate(fileMap * fm, int suggestion)
+sfileno
+FileMap::allocate(sfileno suggestion)
 {
     int word;
-    int bit;
-    int count;
 
-    if (suggestion >= fm->max_n_files)
+    if (suggestion >= capacity_)
         suggestion = 0;
 
-    if (!file_map_bit_test(fm, suggestion))
+    if (!testBit(suggestion))
         return suggestion;
 
     word = suggestion >> LONG_BIT_SHIFT;
 
-    for (count = 0; count < fm->nwords; count++) {
-        if (fm->file_map[word] != ALL_ONES)
+    for (unsigned int count = 0; count < nwords; count++) {
+        if (bitmap[word] != ALL_ONES)
             break;
 
-        word = (word + 1) % fm->nwords;
+        word = (word + 1) % nwords;
     }
 
-    for (bit = 0; bit < BITS_IN_A_LONG; bit++) {
+    for (unsigned char bit = 0; bit < BITS_IN_A_LONG; bit++) {
         suggestion = ((unsigned long) word << LONG_BIT_SHIFT) | bit;
 
-        if (!file_map_bit_test(fm, suggestion)) {
+        if (!testBit(suggestion)) {
             return suggestion;
         }
     }
 
-    debugs(8, 3, "growing from file_map_allocate");
-    file_map_grow(fm);
-    return file_map_allocate(fm, fm->max_n_files >> 1);
-}
-
-void
-filemapFreeMemory(fileMap * fm)
-{
-    safe_free(fm->file_map);
-    safe_free(fm);
+    grow();
+    return allocate(capacity_ >> 1);
 }
 
-#ifdef TEST
-
-#define TEST_SIZE 1<<16
-main(argc, argv)
+FileMap::~FileMap()
 {
-    int i;
-
-    fm = file_map_create(TEST_SIZE);
-
-    for (i = 0; i < TEST_SIZE; ++i) {
-        file_map_bit_set(i);
-        assert(file_map_bit_test(i));
-        file_map_bit_reset(i);
-    }
+    safe_free(bitmap);
 }
-
-#endif
diff -u -r -N squid-3.2.0.13/src/FileMap.h squid-3.2.0.14/src/FileMap.h
--- squid-3.2.0.13/src/FileMap.h	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/FileMap.h	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,102 @@
+/*
+ * FileMap.h
+ *
+ * DEBUG: section 08    Swap File Bitmap
+ * AUTHOR: Harvest Derived
+ *
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ */
+
+#ifndef FILEMAP_H_
+#define FILEMAP_H_
+
+#include "typedefs.h"
+
+/** A bitmap used for managing UFS StoreEntry "file numbers".
+ *
+ * Nth bit represents whether file number N is used.
+ * The map automatically grows to hold up to 2^24 bits.
+ * New bit is "off" or zero by default, representing unused fileno.
+ * TODO: consider using std::bitset instead.
+ */
+class FileMap
+{
+public:
+    FileMap();
+    ~FileMap();
+
+    /** Set the num-th bit in the FileMap
+     *
+     * \warning FileMap's backing storage will be extended as needed to
+     * hold the representation, but  if the bit is already set
+     * it will break the file number accounting, so the caller must
+     * ensure that setBit is only called if the bit is not already set,
+     * by using testBit on it before.
+     */
+    bool setBit(sfileno num);
+
+    /// Test whether the num-th bit in the FileMap is set
+    bool testBit(sfileno num) const;
+
+    /** Clear the num-th bit in the FileMap
+     *
+     * \warning that clearBit doesn't do any bounds checking, nor it
+     * checks that the bit is set before clearing. The caller will have
+     * to ensure that both are true using testBit before clearing.
+     */
+    void clearBit(sfileno num);
+
+    /** locate an unused slot in the FileMap, possibly at or after position suggestion
+     *
+     * Obtain the location of an unused slot in the FileMap,
+     * growing it if needed.
+     * The suggestion is only an advice; there is no guarantee
+     * that it will be followed.
+     */
+    sfileno allocate(sfileno suggestion);
+
+    /// return the max number of slots in the FileMap
+    int capacity() const {return capacity_;}
+
+    /// return the number of used slots in the FileMap
+    int numFilesInMap() const {return usedSlots_;}
+private:
+    /// grow the FileMap (size is doubled each time, up to 2^24 bits)
+    void grow();
+    FileMap(const FileMap &); //no copying
+    FileMap& operator=(const FileMap &); //no assignments
+
+    /// max number of files which can be tracked in the current store
+    sfileno capacity_;
+    /// used slots in the map
+    unsigned int usedSlots_;
+    /// number of "long ints" making up the filemap
+    unsigned int nwords;
+    unsigned long *bitmap;
+};
+
+#endif /* FILEMAP_H_ */
diff -u -r -N squid-3.2.0.13/src/format/ByteCode.h squid-3.2.0.14/src/format/ByteCode.h
--- squid-3.2.0.13/src/format/ByteCode.h	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/format/ByteCode.h	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,209 @@
+#ifndef _SQUID_FMT_BYTECODE_H
+#define _SQUID_FMT_BYTECODE_H
+
+/*
+ * Squid configuration allows users to define custom formats in
+ * several components.
+ * - logging
+ * - external ACL input
+ * - deny page URL
+ *
+ * These enumerations and classes define the API for parsing of
+ * format directives to define these patterns. Along with output
+ * functionality to produce formatted buffers.
+ */
+
+namespace Format
+{
+
+/*
+ * Bytecodes for the configureable format stuff
+ */
+typedef enum {
+    LFT_NONE,			/* dummy */
+
+    /* arbitrary string between tokens */
+    LFT_STRING,
+
+    /* client TCP connection remote end details */
+    LFT_CLIENT_IP_ADDRESS,
+    LFT_CLIENT_FQDN,
+    LFT_CLIENT_PORT,
+    LFT_CLIENT_EUI,
+
+    /* client TCP connection local end details */
+    LFT_CLIENT_LOCAL_IP,
+    LFT_CLIENT_LOCAL_PORT,
+    /*LFT_CLIENT_LOCAL_FQDN, (rDNS) */
+
+    /* client connection local squid.conf details */
+    LFT_LOCAL_LISTENING_IP,
+    LFT_LOCAL_LISTENING_PORT,
+    /*LFT_LOCAL_LISTENING_NAME, (myportname) */
+
+    /* server TCP connection remote end details */
+    LFT_SERVER_IP_ADDRESS,
+    LFT_SERVER_FQDN_OR_PEER_NAME,
+    LFT_SERVER_PORT,
+
+    /* server TCP connection local end details */
+    LFT_SERVER_LOCAL_IP,
+    LFT_SERVER_LOCAL_IP_OLD_27,
+    LFT_SERVER_LOCAL_PORT,
+
+    /* original Request-Line details recieved from client */
+    LFT_CLIENT_REQ_METHOD,
+    LFT_CLIENT_REQ_URI,
+    LFT_CLIENT_REQ_URLPATH,
+    /* LFT_CLIENT_REQ_QUERY, */
+    LFT_CLIENT_REQ_VERSION,
+
+    /* Request-Line details recieved from client (legacy, filtered) */
+    LFT_REQUEST_METHOD,
+    LFT_REQUEST_URI,
+    LFT_REQUEST_URLPATH_OLD_31,
+    /*LFT_REQUEST_QUERY, */
+    LFT_REQUEST_VERSION_OLD_2X,
+    LFT_REQUEST_VERSION,
+
+    /* request header details pre-adaptation */
+    LFT_REQUEST_HEADER,
+    LFT_REQUEST_HEADER_ELEM,
+    LFT_REQUEST_ALL_HEADERS,
+
+    /* request header details post-adaptation */
+    LFT_ADAPTED_REQUEST_HEADER,
+    LFT_ADAPTED_REQUEST_HEADER_ELEM,
+    LFT_ADAPTED_REQUEST_ALL_HEADERS,
+
+    /* Request-Line details sent to the server/peer */
+    LFT_SERVER_REQ_METHOD,
+    LFT_SERVER_REQ_URI,
+    LFT_SERVER_REQ_URLPATH,
+    /*LFT_SERVER_REQ_QUERY, */
+    LFT_SERVER_REQ_VERSION,
+
+    /* request meta details */
+    LFT_REQUEST_SIZE_TOTAL,
+    /*LFT_REQUEST_SIZE_LINE, */
+    LFT_REQUEST_SIZE_HEADERS,
+    /*LFT_REQUEST_SIZE_BODY, */
+    /*LFT_REQUEST_SIZE_BODY_NO_TE, */
+
+    /* original Status-Line details recieved from server */
+    // XXX: todo
+
+    /* Status-Line details sent to the client */
+    // XXX: todo
+
+    /* response Status-Line details (legacy, filtered) */
+    LFT_HTTP_SENT_STATUS_CODE_OLD_30,
+    LFT_HTTP_SENT_STATUS_CODE,
+    LFT_HTTP_RECEIVED_STATUS_CODE,
+    /*LFT_HTTP_STATUS, */
+    LFT_HTTP_BODY_BYTES_READ,
+
+    /* response header details pre-adaptation */
+    LFT_REPLY_HEADER,
+    LFT_REPLY_HEADER_ELEM,
+    LFT_REPLY_ALL_HEADERS,
+
+    /* response header details post-adaptation */
+    /* LFT_ADAPTED_REPLY_HEADER, */
+    /* LFT_ADAPTED_REPLY_HEADER_ELEM, */
+    /* LFT_ADAPTED_REPLY_ALL_HEADERS, */
+
+    /* response meta details */
+    LFT_REPLY_SIZE_TOTAL,
+    LFT_REPLY_HIGHOFFSET,
+    LFT_REPLY_OBJECTSIZE,
+    /*LFT_REPLY_SIZE_LINE, */
+    LFT_REPLY_SIZE_HEADERS,
+    /*LFT_REPLY_SIZE_BODY, */
+    /*LFT_REPLY_SIZE_BODY_NO_TE, */
+
+    /* client credentials */
+    LFT_USER_NAME,   /* any source will do */
+    LFT_USER_LOGIN,
+    LFT_USER_IDENT,
+    /*LFT_USER_REALM, */
+    /*LFT_USER_SCHEME, */
+    LFT_USER_EXTERNAL,
+    /* LFT_USER_SSL_CERT, */
+
+    /* global time details */
+    LFT_TIME_SECONDS_SINCE_EPOCH,
+    LFT_TIME_SUBSECOND,
+    LFT_TIME_LOCALTIME,
+    LFT_TIME_GMT,
+
+    /* processing time details */
+    LFT_TIME_TO_HANDLE_REQUEST,
+    LFT_PEER_RESPONSE_TIME,
+    LFT_TOTAL_SERVER_SIDE_RESPONSE_TIME,
+    LFT_DNS_WAIT_TIME,
+
+    /* Squid internal processing details */
+    LFT_SQUID_STATUS,
+    LFT_SQUID_ERROR,
+    LFT_SQUID_ERROR_DETAIL,
+    LFT_SQUID_HIERARCHY,
+
+    LFT_MIME_TYPE,
+    LFT_TAG,
+    LFT_IO_SIZE_TOTAL,
+    LFT_EXT_LOG,
+
+    LFT_SEQUENCE_NUMBER,
+
+#if USE_ADAPTATION
+    LFT_ADAPTATION_SUM_XACT_TIMES,
+    LFT_ADAPTATION_ALL_XACT_TIMES,
+    LFT_ADAPTATION_LAST_HEADER,
+    LFT_ADAPTATION_LAST_HEADER_ELEM,
+    LFT_ADAPTATION_LAST_ALL_HEADERS,
+#endif
+
+#if ICAP_CLIENT
+
+    LFT_ICAP_TOTAL_TIME,
+
+    LFT_ICAP_ADDR,
+    LFT_ICAP_SERV_NAME,
+    LFT_ICAP_REQUEST_URI,
+    LFT_ICAP_REQUEST_METHOD,
+    LFT_ICAP_BYTES_SENT,
+    LFT_ICAP_BYTES_READ,
+    LFT_ICAP_BODY_BYTES_READ,
+
+    LFT_ICAP_REQ_HEADER,
+    LFT_ICAP_REQ_HEADER_ELEM,
+    LFT_ICAP_REQ_ALL_HEADERS,
+
+    LFT_ICAP_REP_HEADER,
+    LFT_ICAP_REP_HEADER_ELEM,
+    LFT_ICAP_REP_ALL_HEADERS,
+
+    LFT_ICAP_TR_RESPONSE_TIME,
+    LFT_ICAP_IO_TIME,
+    LFT_ICAP_OUTCOME,
+    LFT_ICAP_STATUS_CODE,
+#endif
+
+    LFT_PERCENT			/* special string cases for escaped chars */
+} ByteCode_t;
+
+/// Quoting style for a format output.
+enum Quoting {
+    LOG_QUOTE_NONE = 0,
+    LOG_QUOTE_QUOTES,
+    LOG_QUOTE_MIMEBLOB,
+    LOG_QUOTE_URL,
+    LOG_QUOTE_RAW
+};
+
+extern const char *log_tags[];
+
+} // namespace Format
+
+#endif /* _SQUID_FMT_BYTECODE_H */
diff -u -r -N squid-3.2.0.13/src/format/Config.cc squid-3.2.0.14/src/format/Config.cc
--- squid-3.2.0.13/src/format/Config.cc	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/format/Config.cc	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,43 @@
+#include "config.h"
+#include "format/Config.h"
+#include "protos.h"
+#include <list>
+
+Format::FmtConfig Format::TheConfig;
+
+void
+Format::FmtConfig::parseFormats()
+{
+    char *name, *def;
+
+    if ((name = strtok(NULL, w_space)) == NULL)
+        self_destruct();
+
+    if ((def = strtok(NULL, "\r\n")) == NULL) {
+        self_destruct();
+        return;
+    }
+
+    debugs(3, 2, "Custom Format for '" << name << "' is '" << def << "'");
+
+    Format *nlf = new Format(name);
+
+    if (!nlf->parse(def)) {
+        self_destruct();
+        return;
+    }
+
+    // add to global config list
+    nlf->next = formats;
+    formats = nlf;
+}
+
+void
+Format::FmtConfig::registerTokens(const String &nsName, TokenTableEntry const *tokenArray)
+{
+    debugs(46, 2, HERE << " register format tokens for '" << nsName << "'");
+    if (tokenArray != NULL)
+        tokens.push_back(TokenNamespace(nsName, tokenArray));
+    else
+        debugs(0,0, "BUG: format tokens for '" << nsName << "' missing!");
+}
diff -u -r -N squid-3.2.0.13/src/format/Config.h squid-3.2.0.14/src/format/Config.h
--- squid-3.2.0.13/src/format/Config.h	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/format/Config.h	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,76 @@
+#ifndef SQUID_SRC_FORMAT_CONFIG_H
+#define SQUID_SRC_FORMAT_CONFIG_H
+
+#include "format/Format.h"
+//#include "format/TokenTableEntry.h"
+#include "SquidString.h"
+#include <list>
+
+class StoreEntry;
+
+namespace Format
+{
+
+class TokenTableEntry;
+
+/// A namespace or 'set' of tokens
+/// components register their namespace prefix and an array of tokens
+/// which can then be embeded in any format.
+class TokenNamespace
+{
+public:
+    TokenNamespace(const String &nsName, TokenTableEntry const *tSet) : prefix(nsName), tokenSet(tSet) {}
+
+    /// prefix namespace name (excluding '::')
+    String prefix;
+
+    /// array of tokens inside this namespace
+    /// The set of tokens may change, but the location of it pointed to from here must not.
+    TokenTableEntry const *tokenSet;
+};
+
+/// The set of custom formats defined in squid.conf
+///
+class FmtConfig
+{
+public:
+    /// Parse a log format directive line (logfile_format)
+    void parseFormats();
+
+    /// Dump/display the formats currently known to the provided StoreEntry object
+    void dumpFormats(StoreEntry *e, const char *name) {
+        formats->dump(e, name);
+    }
+
+    /* Register a namespace set of tokens to be accepted by the format parser.
+     * Multiple arrays can be registered, they will be scanned for
+     * in order registered. So care needs to be taken that arrays registered
+     * first do not overlap or consume tokens registered later for a namespace.
+     */
+    void registerTokens(const String &nsName, TokenTableEntry const *tokenArray);
+
+    /// Linked list of custom formats
+    Format *formats;
+
+    /// list of token namespaces registered
+    std::list<TokenNamespace> tokens;
+
+#if USE_ADAPTATION
+    bool hasAdaptToken;
+#endif
+
+#if ICAP_CLIENT
+    bool hasIcapToken;
+#endif
+};
+
+extern FmtConfig TheConfig;
+
+} // namespace Format
+
+// Legacy parsing wrappers
+#define parse_format(X)  (X)->parseFormats()
+#define free_format(X)   do{ delete (*(X)).formats; (*(X)).formats=NULL; }while(false)
+#define dump_format(E,N,D) (D).dumpFormats((E),(N))
+
+#endif
diff -u -r -N squid-3.2.0.13/src/format/Format.cc squid-3.2.0.14/src/format/Format.cc
--- squid-3.2.0.13/src/format/Format.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/format/Format.cc	2011-12-13 00:08:18.000000000 +1300
@@ -5,12 +5,16 @@
 #include "errorpage.h"
 #include "format/Format.h"
 #include "format/Quoting.h"
-#include "format/Tokens.h"
+#include "format/Token.h"
 #include "HttpRequest.h"
 #include "MemBuf.h"
 #include "rfc1738.h"
 #include "SquidTime.h"
 #include "Store.h"
+#if USE_SSL
+#include "ssl/ErrorDetail.h"
+#endif
+
 
 /// Convert a string to NULL pointer if it is ""
 #define strOrNull(s) ((s)==NULL||(s)[0]=='\0'?NULL:(s))
@@ -219,11 +223,11 @@
                 if (t->zero)
                     entry->append("0", 1);
 
-                if (t->width)
-                    storeAppendPrintf(entry, "%d", (int) t->width);
+                if (t->widthMin >= 0)
+                    storeAppendPrintf(entry, "%d", t->widthMin);
 
-                if (t->precision)
-                    storeAppendPrintf(entry, ".%d", (int) t->precision);
+                if (t->widthMax >= 0)
+                    storeAppendPrintf(entry, ".%d", t->widthMax);
 
                 if (arg)
                     storeAppendPrintf(entry, "{%s}", arg);
@@ -516,7 +520,7 @@
             break;
 
 #if USE_ADAPTATION
-        case LTF_ADAPTATION_SUM_XACT_TIMES:
+        case LFT_ADAPTATION_SUM_XACT_TIMES:
             if (al->request) {
                 Adaptation::History::Pointer ah = al->request->adaptHistory();
                 if (ah != NULL)
@@ -525,7 +529,7 @@
             }
             break;
 
-        case LTF_ADAPTATION_ALL_XACT_TIMES:
+        case LFT_ADAPTATION_ALL_XACT_TIMES:
             if (al->request) {
                 Adaptation::History::Pointer ah = al->request->adaptHistory();
                 if (ah != NULL)
@@ -822,20 +826,28 @@
             break;
 
         case LFT_SQUID_ERROR_DETAIL:
-            if (al->request && al->request->errDetail != ERR_DETAIL_NONE) {
-                if (al->request->errDetail > ERR_DETAIL_START  &&
-                        al->request->errDetail < ERR_DETAIL_MAX)
-                    out = errorDetailName(al->request->errDetail);
-                else {
-                    if (al->request->errDetail >= ERR_DETAIL_EXCEPTION_START)
-                        snprintf(tmp, sizeof(tmp), "%s=0x%X",
-                                 errorDetailName(al->request->errDetail), (uint32_t) al->request->errDetail);
-                    else
-                        snprintf(tmp, sizeof(tmp), "%s=%d",
-                                 errorDetailName(al->request->errDetail), al->request->errDetail);
+#if USE_SSL
+            if (al->request && al->request->errType == ERR_SECURE_CONNECT_FAIL) {
+                if (! (out = Ssl::GetErrorName(al->request->errDetail))) {
+                    snprintf(tmp, sizeof(tmp), "SSL_ERR=%d", al->request->errDetail);
                     out = tmp;
                 }
-            }
+            } else
+#endif
+                if (al->request && al->request->errDetail != ERR_DETAIL_NONE) {
+                    if (al->request->errDetail > ERR_DETAIL_START  &&
+                            al->request->errDetail < ERR_DETAIL_MAX)
+                        out = errorDetailName(al->request->errDetail);
+                    else {
+                        if (al->request->errDetail >= ERR_DETAIL_EXCEPTION_START)
+                            snprintf(tmp, sizeof(tmp), "%s=0x%X",
+                                     errorDetailName(al->request->errDetail), (uint32_t) al->request->errDetail);
+                        else
+                            snprintf(tmp, sizeof(tmp), "%s=%d",
+                                     errorDetailName(al->request->errDetail), al->request->errDetail);
+                        out = tmp;
+                    }
+                }
             break;
 
         case LFT_SQUID_HIERARCHY:
@@ -999,11 +1011,11 @@
         }
 
         if (dooff) {
-            snprintf(tmp, sizeof(tmp), "%0*" PRId64, fmt->zero ? (int) fmt->width : 0, outoff);
+            snprintf(tmp, sizeof(tmp), "%0*" PRId64, fmt->zero && fmt->widthMin >= 0 ? fmt->widthMin : 0, outoff);
             out = tmp;
 
         } else if (doint) {
-            snprintf(tmp, sizeof(tmp), "%0*ld", fmt->zero ? (int) fmt->width : 0, outint);
+            snprintf(tmp, sizeof(tmp), "%0*ld", fmt->zero && fmt->widthMin >= 0 ? fmt->widthMin : 0, outint);
             out = tmp;
         }
 
@@ -1053,12 +1065,12 @@
             }
 
             // enforce width limits if configured
-            const bool haveMaxWidth = fmt->precision && !doint && !dooff;
-            if (haveMaxWidth || fmt->width) {
-                const int minWidth = fmt->width ?
-                                     static_cast<int>(fmt->width) : 0;
+            const bool haveMaxWidth = fmt->widthMax >=0 && !doint && !dooff;
+            if (haveMaxWidth || fmt->widthMin) {
+                const int minWidth = fmt->widthMin >= 0 ?
+                                     fmt->widthMin :0;
                 const int maxWidth = haveMaxWidth ?
-                                     static_cast<int>(fmt->precision) : strlen(out);
+                                     fmt->widthMax : strlen(out);
 
                 if (fmt->left)
                     mb.Printf("%-*.*s", minWidth, maxWidth, out);
diff -u -r -N squid-3.2.0.13/src/format/Makefile.am squid-3.2.0.14/src/format/Makefile.am
--- squid-3.2.0.13/src/format/Makefile.am	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/format/Makefile.am	2011-12-13 00:08:18.000000000 +1300
@@ -4,10 +4,14 @@
 noinst_LTLIBRARIES = libformat.la
 
 libformat_la_SOURCES = \
+	ByteCode.h \
+	Config.cc \
+	Config.h \
 	Format.cc \
 	Format.h \
 	Quoting.cc \
 	Quoting.h \
-	Tokens.cc \
-	Tokens.h
+	Token.cc \
+	Token.h \
+	TokenTableEntry.h
 
diff -u -r -N squid-3.2.0.13/src/format/Makefile.in squid-3.2.0.14/src/format/Makefile.in
--- squid-3.2.0.13/src/format/Makefile.in	2011-10-14 14:48:05.000000000 +1300
+++ squid-3.2.0.14/src/format/Makefile.in	2011-12-13 00:10:49.000000000 +1300
@@ -56,7 +56,7 @@
 CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libformat_la_LIBADD =
-am_libformat_la_OBJECTS = Format.lo Quoting.lo Tokens.lo
+am_libformat_la_OBJECTS = Config.lo Format.lo Quoting.lo Token.lo
 libformat_la_OBJECTS = $(am_libformat_la_OBJECTS)
 DEFAULT_INCLUDES = 
 depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp
@@ -309,12 +309,16 @@
 subst_perlshell = sed -e 's,[@]PERL[@],$(PERL),g' <$(srcdir)/$@.pl.in >$@ || ($(RM) -f $@ ; exit 1)
 noinst_LTLIBRARIES = libformat.la
 libformat_la_SOURCES = \
+	ByteCode.h \
+	Config.cc \
+	Config.h \
 	Format.cc \
 	Format.h \
 	Quoting.cc \
 	Quoting.h \
-	Tokens.cc \
-	Tokens.h
+	Token.cc \
+	Token.h \
+	TokenTableEntry.h
 
 all: all-am
 
@@ -377,9 +381,10 @@
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Config.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Format.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Quoting.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Tokens.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Token.Plo@am__quote@
 
 .cc.o:
 @am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
diff -u -r -N squid-3.2.0.13/src/format/Token.cc squid-3.2.0.14/src/format/Token.cc
--- squid-3.2.0.13/src/format/Token.cc	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/format/Token.cc	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,556 @@
+#include "config.h"
+#include "format/Config.h"
+#include "format/Token.h"
+#include "format/TokenTableEntry.h"
+#include "Store.h"
+
+const char *Format::log_tags[] = {
+    "NONE",
+    "TCP_HIT",
+    "TCP_MISS",
+    "TCP_REFRESH_UNMODIFIED",
+    "TCP_REFRESH_FAIL", // same tag logged for LOG_TCP_REFRESH_FAIL_OLD and
+    "TCP_REFRESH_FAIL", // LOG_TCP_REFRESH_FAIL_ERR for backward-compatibility
+    "TCP_REFRESH_MODIFIED",
+    "TCP_CLIENT_REFRESH_MISS",
+    "TCP_IMS_HIT",
+    "TCP_SWAPFAIL_MISS",
+    "TCP_NEGATIVE_HIT",
+    "TCP_MEM_HIT",
+    "TCP_DENIED",
+    "TCP_DENIED_REPLY",
+    "TCP_OFFLINE_HIT",
+#if LOG_TCP_REDIRECTS
+    "TCP_REDIRECT",
+#endif
+    "UDP_HIT",
+    "UDP_MISS",
+    "UDP_DENIED",
+    "UDP_INVALID",
+    "UDP_MISS_NOFETCH",
+    "ICP_QUERY",
+    "LOG_TYPE_MAX"
+};
+
+// Due to token overlaps between 1 and 2 letter tokens (Bug 3310)
+// We split the token table into sets determined by the token length
+namespace Format
+{
+
+/// 1-char tokens.
+static TokenTableEntry TokenTable1C[] = {
+
+    {">a", LFT_CLIENT_IP_ADDRESS},
+    {">p", LFT_CLIENT_PORT},
+    {">A", LFT_CLIENT_FQDN},
+
+    {"<a", LFT_SERVER_IP_ADDRESS},
+    {"<p", LFT_SERVER_PORT},
+    {"<A", LFT_SERVER_FQDN_OR_PEER_NAME},
+
+    {">h", LFT_REQUEST_HEADER},
+    {">h", LFT_REQUEST_ALL_HEADERS},
+    {"<h", LFT_REPLY_HEADER},
+    {"<h", LFT_REPLY_ALL_HEADERS},
+
+    {">v", LFT_REQUEST_VERSION_OLD_2X},
+
+    {"%", LFT_PERCENT},
+
+    {NULL, LFT_NONE}		/* this must be last */
+};
+
+/// 2-char tokens
+static TokenTableEntry TokenTable2C[] = {
+
+    {">la", LFT_CLIENT_LOCAL_IP},
+    {"la", LFT_LOCAL_LISTENING_IP},
+    {">lp", LFT_CLIENT_LOCAL_PORT},
+    {"lp", LFT_LOCAL_LISTENING_PORT},
+    /*{ "lA", LFT_LOCAL_NAME }, */
+
+    {"<la", LFT_SERVER_LOCAL_IP},
+    {"oa", LFT_SERVER_LOCAL_IP_OLD_27},
+    {"<lp", LFT_SERVER_LOCAL_PORT},
+    /* {"ot", LFT_PEER_OUTGOING_TOS}, */
+
+    {"ts", LFT_TIME_SECONDS_SINCE_EPOCH},
+    {"tu", LFT_TIME_SUBSECOND},
+    {"tl", LFT_TIME_LOCALTIME},
+    {"tg", LFT_TIME_GMT},
+    {"tr", LFT_TIME_TO_HANDLE_REQUEST},
+
+    {"<pt", LFT_PEER_RESPONSE_TIME},
+    {"<tt", LFT_TOTAL_SERVER_SIDE_RESPONSE_TIME},
+    {"dt", LFT_DNS_WAIT_TIME},
+
+    {">ha", LFT_ADAPTED_REQUEST_HEADER},
+    {">ha", LFT_ADAPTED_REQUEST_ALL_HEADERS},
+
+    {"un", LFT_USER_NAME},
+    {"ul", LFT_USER_LOGIN},
+    /*{ "ur", LFT_USER_REALM }, */
+    /*{ "us", LFT_USER_SCHEME }, */
+    {"ui", LFT_USER_IDENT},
+    {"ue", LFT_USER_EXTERNAL},
+
+    {"Hs", LFT_HTTP_SENT_STATUS_CODE_OLD_30},
+    {">Hs", LFT_HTTP_SENT_STATUS_CODE},
+    {"<Hs", LFT_HTTP_RECEIVED_STATUS_CODE},
+    /*{ "Ht", LFT_HTTP_STATUS }, */
+    {"<bs", LFT_HTTP_BODY_BYTES_READ},
+
+    {"Ss", LFT_SQUID_STATUS},
+    {"Sh", LFT_SQUID_HIERARCHY},
+
+    {"mt", LFT_MIME_TYPE},
+
+    {">rm", LFT_CLIENT_REQ_METHOD},
+    {">ru", LFT_CLIENT_REQ_URI},
+    {">rp", LFT_CLIENT_REQ_URLPATH},
+    /*{">rq", LFT_CLIENT_REQ_QUERY},*/
+    {">rv", LFT_CLIENT_REQ_VERSION},
+
+    {"rm", LFT_REQUEST_METHOD},
+    {"ru", LFT_REQUEST_URI},	/* doesn't include the query-string */
+    {"rp", LFT_REQUEST_URLPATH_OLD_31},
+    /* { "rq", LFT_REQUEST_QUERY }, * /     / * the query-string, INCLUDING the leading ? */
+    {"rv", LFT_REQUEST_VERSION},
+
+    {"<rm", LFT_SERVER_REQ_METHOD},
+    {"<ru", LFT_SERVER_REQ_URI},
+    {"<rp", LFT_SERVER_REQ_URLPATH},
+    /*{"<rq", LFT_SERVER_REQ_QUERY},*/
+    {"<rv", LFT_SERVER_REQ_VERSION},
+
+    {">st", LFT_REQUEST_SIZE_TOTAL },
+    /*{ ">sl", LFT_REQUEST_SIZE_LINE }, * / / * the request line "GET ... " */
+    {">sh", LFT_REQUEST_SIZE_HEADERS },
+    /*{ ">sb", LFT_REQUEST_SIZE_BODY }, */
+    /*{ ">sB", LFT_REQUEST_SIZE_BODY_NO_TE }, */
+
+    {"<st", LFT_REPLY_SIZE_TOTAL},
+    {"<sH", LFT_REPLY_HIGHOFFSET},
+    {"<sS", LFT_REPLY_OBJECTSIZE},
+    /*{ "<sl", LFT_REPLY_SIZE_LINE }, * /   / * the reply line (protocol, code, text) */
+    {"<sh", LFT_REPLY_SIZE_HEADERS },
+    /*{ "<sb", LFT_REPLY_SIZE_BODY }, */
+    /*{ "<sB", LFT_REPLY_SIZE_BODY_NO_TE }, */
+
+    {"et", LFT_TAG},
+    {"st", LFT_IO_SIZE_TOTAL},
+    {"ea", LFT_EXT_LOG},
+    {"sn", LFT_SEQUENCE_NUMBER},
+
+    {NULL, LFT_NONE}		/* this must be last */
+};
+
+/// Miscellaneous >2 byte tokens
+static TokenTableEntry TokenTableMisc[] = {
+    {">eui", LFT_CLIENT_EUI},
+    {"err_code", LFT_SQUID_ERROR },
+    {"err_detail", LFT_SQUID_ERROR_DETAIL },
+    {NULL, LFT_NONE}		/* this must be last */
+};
+
+#if USE_ADAPTATION
+static TokenTableEntry TokenTableAdapt[] = {
+    {"all_trs", LFT_ADAPTATION_ALL_XACT_TIMES},
+    {"sum_trs", LFT_ADAPTATION_SUM_XACT_TIMES},
+    {"<last_h", LFT_ADAPTATION_LAST_HEADER},
+    {NULL, LFT_NONE}           /* this must be last */
+};
+#endif
+
+#if ICAP_CLIENT
+/// ICAP (icap::) tokens
+static TokenTableEntry TokenTableIcap[] = {
+    {"tt", LFT_ICAP_TOTAL_TIME},
+    {"<last_h", LFT_ADAPTATION_LAST_HEADER}, // deprecated
+
+    {"<A",  LFT_ICAP_ADDR},
+    {"<service_name",  LFT_ICAP_SERV_NAME},
+    {"ru",  LFT_ICAP_REQUEST_URI},
+    {"rm",  LFT_ICAP_REQUEST_METHOD},
+    {">st", LFT_ICAP_BYTES_SENT},
+    {"<st", LFT_ICAP_BYTES_READ},
+    {"<bs", LFT_ICAP_BODY_BYTES_READ},
+
+    {">h",  LFT_ICAP_REQ_HEADER},
+    {"<h",  LFT_ICAP_REP_HEADER},
+
+    {"tr",  LFT_ICAP_TR_RESPONSE_TIME},
+    {"tio", LFT_ICAP_IO_TIME},
+    {"to",  LFT_ICAP_OUTCOME},
+    {"Hs",  LFT_ICAP_STATUS_CODE},
+
+    {NULL, LFT_NONE}           /* this must be last */
+};
+#endif
+
+} // namespace Format
+
+/// Register all components custom format tokens
+void
+Format::Token::Init()
+{
+    // TODO standard log tokens
+    // TODO external ACL fmt tokens
+
+#if USE_ADAPTATION
+    TheConfig.registerTokens(String("adapt"),::Format::TokenTableAdapt);
+#endif
+#if ICAP_CLIENT
+    TheConfig.registerTokens(String("icap"),::Format::TokenTableIcap);
+#endif
+
+    // TODO tokens for OpenSSL errors in "ssl::"
+}
+
+/// Scans a token table to see if the next token exists there
+/// returns a pointer to next unparsed byte and updates type member if found
+char *
+Format::Token::scanForToken(TokenTableEntry const table[], char *cur)
+{
+    for (TokenTableEntry const *lte = table; lte->configTag != NULL; lte++) {
+        debugs(46, 8, HERE << "compare tokens '" << lte->configTag << "' with '" << cur << "'");
+        if (strncmp(lte->configTag, cur, strlen(lte->configTag)) == 0) {
+            type = lte->tokenType;
+            label = lte->configTag;
+            debugs(46, 7, HERE << "Found token '" << label << "'");
+            return cur + strlen(lte->configTag);
+        }
+    }
+    return cur;
+}
+
+/* parses a single token. Returns the token length in characters,
+ * and fills in the lt item with the token information.
+ * def is for sure null-terminated
+ */
+int
+Format::Token::parse(char *def, Quoting *quoting)
+{
+    char *cur = def;
+
+    int l;
+
+    l = strcspn(cur, "%");
+
+    if (l > 0) {
+        char *cp;
+        /* it's a string for sure, until \0 or the next % */
+        cp = (char *)xmalloc(l + 1);
+        xstrncpy(cp, cur, l + 1);
+        type = LFT_STRING;
+        data.string = cp;
+
+        while (l > 0) {
+            switch (*cur) {
+
+            case '"':
+
+                if (*quoting == LOG_QUOTE_NONE)
+                    *quoting = LOG_QUOTE_QUOTES;
+                else if (*quoting == LOG_QUOTE_QUOTES)
+                    *quoting = LOG_QUOTE_NONE;
+
+                break;
+
+            case '[':
+                if (*quoting == LOG_QUOTE_NONE)
+                    *quoting = LOG_QUOTE_MIMEBLOB;
+
+                break;
+
+            case ']':
+                if (*quoting == LOG_QUOTE_MIMEBLOB)
+                    *quoting = LOG_QUOTE_NONE;
+
+                break;
+            }
+
+            cur++;
+            l--;
+        }
+
+        goto done;
+    }
+
+    if (!*cur)
+        goto done;
+
+    cur++;
+
+    // select quoting style for his particular token
+    switch (*cur) {
+
+    case '"':
+        quote = LOG_QUOTE_QUOTES;
+        cur++;
+        break;
+
+    case '\'':
+        quote = LOG_QUOTE_RAW;
+        cur++;
+        break;
+
+    case '[':
+        quote = LOG_QUOTE_MIMEBLOB;
+        cur++;
+        break;
+
+    case '#':
+        quote = LOG_QUOTE_URL;
+        cur++;
+        break;
+
+    default:
+        quote = *quoting;
+        break;
+    }
+
+    if (*cur == '-') {
+        left = 1;
+        cur++;
+    }
+
+    if (*cur == '0') {
+        zero = 1;
+        cur++;
+    }
+
+    if (xisdigit(*cur))
+        widthMin = strtol(cur, &cur, 10);
+
+    if (*cur == '.' && xisdigit(*(++cur)))
+        widthMax = strtol(cur, &cur, 10);
+
+    if (*cur == '{') {
+        char *cp;
+        cur++;
+        l = strcspn(cur, "}");
+        cp = (char *)xmalloc(l + 1);
+        xstrncpy(cp, cur, l + 1);
+        data.string = cp;
+        cur += l;
+
+        if (*cur == '}')
+            cur++;
+    }
+
+    type = LFT_NONE;
+
+    // Scan each registered token namespace
+    debugs(46, 9, HERE << "check for token in " << TheConfig.tokens.size() << " namespaces.");
+    for (std::list<TokenNamespace>::const_iterator itr = TheConfig.tokens.begin(); itr != TheConfig.tokens.end(); itr++) {
+        debugs(46, 7, HERE << "check for possible " << itr->prefix << ":: token");
+        const size_t len = itr->prefix.size();
+        if (itr->prefix.cmp(cur, len) == 0 && cur[len] == ':' && cur[len+1] == ':') {
+            debugs(46, 5, HERE << "check for " << itr->prefix << ":: token in '" << cur << "'");
+            const char *old = cur;
+            cur = scanForToken(itr->tokenSet, cur+len+2);
+            if (old != cur) // found
+                break;
+            else // reset to start of namespace
+                cur = cur - len - 2;
+        }
+    }
+
+    if (type == LFT_NONE) {
+        // For upward compatibility, assume "http::" prefix as default prefix
+        // for all log access formatting codes, except those starting with a
+        // "%" or a known namespace. (ie "icap::", "adapt::")
+        if (strncmp(cur,"http::", 6) == 0 && *(cur+6) != '%' )
+            cur += 6;
+
+        // NP: scan the sets of tokens in decreasing size to guarantee no
+        //     mistakes made with overlapping names. (Bug 3310)
+
+        // Scan for various long tokens
+        debugs(46, 5, HERE << "scan for possible Misc token");
+        cur = scanForToken(TokenTableMisc, cur);
+        // scan for 2-char tokens
+        if (type == LFT_NONE) {
+            debugs(46, 5, HERE << "scan for possible 2C token");
+            cur = scanForToken(TokenTable2C, cur);
+        }
+        // finally scan for 1-char tokens.
+        if (type == LFT_NONE) {
+            debugs(46, 5, HERE << "scan for possible 1C token");
+            cur = scanForToken(TokenTable1C, cur);
+        }
+    }
+
+    if (type == LFT_NONE) {
+        fatalf("Can't parse configuration token: '%s'\n", def);
+    }
+
+    if (*cur == ' ') {
+        space = 1;
+        cur++;
+    }
+
+done:
+
+    switch (type) {
+
+#if USE_ADAPTATION
+    case LFT_ADAPTATION_LAST_HEADER:
+#endif
+
+#if ICAP_CLIENT
+    case LFT_ICAP_REQ_HEADER:
+
+    case LFT_ICAP_REP_HEADER:
+#endif
+
+    case LFT_ADAPTED_REQUEST_HEADER:
+
+    case LFT_REQUEST_HEADER:
+
+    case LFT_REPLY_HEADER:
+
+        if (data.string) {
+            char *header = data.string;
+            char *cp = strchr(header, ':');
+
+            if (cp) {
+                *cp++ = '\0';
+
+                if (*cp == ',' || *cp == ';' || *cp == ':')
+                    data.header.separator = *cp++;
+                else
+                    data.header.separator = ',';
+
+                data.header.element = cp;
+
+                switch (type) {
+                case LFT_REQUEST_HEADER:
+                    type = LFT_REQUEST_HEADER_ELEM;
+                    break;
+
+                case LFT_ADAPTED_REQUEST_HEADER:
+                    type = LFT_ADAPTED_REQUEST_HEADER_ELEM;
+                    break;
+
+                case LFT_REPLY_HEADER:
+                    type = LFT_REPLY_HEADER_ELEM;
+                    break;
+#if USE_ADAPTATION
+                case LFT_ADAPTATION_LAST_HEADER:
+                    type = LFT_ADAPTATION_LAST_HEADER_ELEM;
+                    break;
+#endif
+#if ICAP_CLIENT
+                case LFT_ICAP_REQ_HEADER:
+                    type = LFT_ICAP_REQ_HEADER_ELEM;
+                    break;
+                case LFT_ICAP_REP_HEADER:
+                    type = LFT_ICAP_REP_HEADER_ELEM;
+                    break;
+#endif
+                default:
+                    break;
+                }
+            }
+
+            data.header.header = header;
+        } else {
+            switch (type) {
+            case LFT_REQUEST_HEADER:
+                type = LFT_REQUEST_ALL_HEADERS;
+                break;
+
+            case LFT_ADAPTED_REQUEST_HEADER:
+                type = LFT_ADAPTED_REQUEST_ALL_HEADERS;
+                break;
+
+            case LFT_REPLY_HEADER:
+                type = LFT_REPLY_ALL_HEADERS;
+                break;
+#if USE_ADAPTATION
+            case LFT_ADAPTATION_LAST_HEADER:
+                type = LFT_ADAPTATION_LAST_ALL_HEADERS;
+                break;
+#endif
+#if ICAP_CLIENT
+            case LFT_ICAP_REQ_HEADER:
+                type = LFT_ICAP_REQ_ALL_HEADERS;
+                break;
+            case LFT_ICAP_REP_HEADER:
+                type = LFT_ICAP_REP_ALL_HEADERS;
+                break;
+#endif
+            default:
+                break;
+            }
+            Config.onoff.log_mime_hdrs = 1;
+        }
+
+        break;
+
+    case LFT_CLIENT_FQDN:
+        Config.onoff.log_fqdn = 1;
+        break;
+
+    case LFT_TIME_SUBSECOND:
+        divisor = 1000;
+
+        if (widthMax > 0) {
+            int i;
+            divisor = 1000000;
+
+            for (i = widthMax; i > 1; i--)
+                divisor /= 10;
+
+            if (!divisor)
+                divisor = 0;
+        }
+        break;
+
+    case LFT_HTTP_SENT_STATUS_CODE_OLD_30:
+        debugs(46, 0, "WARNING: The \"Hs\" formatting code is deprecated. Use the \">Hs\" instead.");
+        type = LFT_HTTP_SENT_STATUS_CODE;
+        break;
+
+    case LFT_SERVER_LOCAL_IP_OLD_27:
+        debugs(46, 0, "WARNING: The \"oa\" formatting code is deprecated. Use the \"<la\" instead.");
+        type = LFT_SERVER_LOCAL_IP;
+        break;
+
+    case LFT_REQUEST_URLPATH_OLD_31:
+        debugs(46, 0, "WARNING: The \"rp\" formatting code is deprecated. Use the \">rp\" instead.");
+        type = LFT_CLIENT_REQ_URLPATH;
+        break;
+
+    case LFT_REQUEST_VERSION_OLD_2X:
+        debugs(46, 0, "WARNING: The \">v\" formatting code is deprecated. Use the \">rv\" instead.");
+        type = LFT_REQUEST_VERSION;
+        break;
+
+#if !USE_SQUID_EUI
+    case LFT_CLIENT_EUI:
+        debugs(46, 0, "WARNING: The \">eui\" formatting code requires EUI features which are disabled in this Squid.");
+        break;
+#endif
+
+    default:
+        break;
+    }
+
+    return (cur - def);
+}
+
+Format::Token::~Token()
+{
+    label = NULL; // drop reference to global static.
+    safe_free(data.string);
+    while (next) {
+        Token *tokens = next;
+        next = next->next;
+        tokens->next = NULL;
+        delete tokens;
+    }
+}
+
diff -u -r -N squid-3.2.0.13/src/format/Token.h squid-3.2.0.14/src/format/Token.h
--- squid-3.2.0.13/src/format/Token.h	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/format/Token.h	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,82 @@
+#ifndef _SQUID_FORMAT_TOKEN_H
+#define _SQUID_FORMAT_TOKEN_H
+
+//#include "format/TokenTableEntry.h"
+#include "format/ByteCode.h"
+
+/*
+ * Squid configuration allows users to define custom formats in
+ * several components.
+ * - logging
+ * - external ACL input
+ * - deny page URL
+ *
+ * These enumerations and classes define the API for parsing of
+ * format directives to define these patterns. Along with output
+ * functionality to produce formatted buffers.
+ */
+
+namespace Format
+{
+
+class TokenTableEntry;
+
+#define LOG_BUF_SZ (MAX_URL<<2)
+
+// XXX: inherit from linked list
+class Token
+{
+public:
+    Token() : type(LFT_NONE),
+            label(NULL),
+            widthMin(-1),
+            widthMax(-1),
+            quote(LOG_QUOTE_NONE),
+            left(0),
+            space(0),
+            zero(0),
+            divisor(0),
+            next(NULL)
+    { data.string = NULL; }
+
+    ~Token();
+
+    /// Initialize the format token registrations
+    static void Init();
+
+    /** parses a single token. Returns the token length in characters,
+     * and fills in this item with the token information.
+     * def is for sure null-terminated.
+     */
+    int parse(char *def, enum Quoting *quote);
+
+    ByteCode_t type;
+    const char *label;
+    union {
+        char *string;
+
+        struct {
+            char *header;
+            char *element;
+            char separator;
+        } header;
+        char *timespec;
+    } data;
+    int widthMin; ///< minimum field width
+    int widthMax; ///< maximum field width
+    enum Quoting quote;
+    unsigned int left:1;
+    unsigned int space:1;
+    unsigned int zero:1;
+    int divisor;
+    Token *next;	/* todo: move from linked list to array */
+
+private:
+    char *scanForToken(TokenTableEntry const table[], char *cur);
+};
+
+extern const char *log_tags[];
+
+} // namespace Format
+
+#endif /* _SQUID_FORMAT_TOKEN_H */
diff -u -r -N squid-3.2.0.13/src/format/Tokens.cc squid-3.2.0.14/src/format/Tokens.cc
--- squid-3.2.0.13/src/format/Tokens.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/format/Tokens.cc	1970-01-01 12:00:00.000000000 +1200
@@ -1,538 +0,0 @@
-#include "config.h"
-#include "format/Tokens.h"
-#include "Store.h"
-
-const char *Format::log_tags[] = {
-    "NONE",
-    "TCP_HIT",
-    "TCP_MISS",
-    "TCP_REFRESH_UNMODIFIED",
-    "TCP_REFRESH_FAIL", // same tag logged for LOG_TCP_REFRESH_FAIL_OLD and
-    "TCP_REFRESH_FAIL", // LOG_TCP_REFRESH_FAIL_ERR for backward-compatibility
-    "TCP_REFRESH_MODIFIED",
-    "TCP_CLIENT_REFRESH_MISS",
-    "TCP_IMS_HIT",
-    "TCP_SWAPFAIL_MISS",
-    "TCP_NEGATIVE_HIT",
-    "TCP_MEM_HIT",
-    "TCP_DENIED",
-    "TCP_DENIED_REPLY",
-    "TCP_OFFLINE_HIT",
-#if LOG_TCP_REDIRECTS
-    "TCP_REDIRECT",
-#endif
-    "UDP_HIT",
-    "UDP_MISS",
-    "UDP_DENIED",
-    "UDP_INVALID",
-    "UDP_MISS_NOFETCH",
-    "ICP_QUERY",
-    "LOG_TYPE_MAX"
-};
-
-// Due to token overlaps between 1 and 2 letter tokens (Bug 3310)
-// We split the token table into sets determined by the token length
-namespace Format
-{
-
-/// 1-char tokens.
-static struct TokenTableEntry TokenTable1C[] = {
-
-    {">a", LFT_CLIENT_IP_ADDRESS},
-    {">p", LFT_CLIENT_PORT},
-    {">A", LFT_CLIENT_FQDN},
-
-    {"<a", LFT_SERVER_IP_ADDRESS},
-    {"<p", LFT_SERVER_PORT},
-    {"<A", LFT_SERVER_FQDN_OR_PEER_NAME},
-
-    {">h", LFT_REQUEST_HEADER},
-    {">h", LFT_REQUEST_ALL_HEADERS},
-    {"<h", LFT_REPLY_HEADER},
-    {"<h", LFT_REPLY_ALL_HEADERS},
-
-    {">v", LFT_REQUEST_VERSION_OLD_2X},
-
-    {"%", LFT_PERCENT},
-
-    {NULL, LFT_NONE}		/* this must be last */
-};
-
-/// 2-char tokens
-static struct TokenTableEntry TokenTable2C[] = {
-
-    {">la", LFT_CLIENT_LOCAL_IP},
-    {"la", LFT_LOCAL_LISTENING_IP},
-    {">lp", LFT_CLIENT_LOCAL_PORT},
-    {"lp", LFT_LOCAL_LISTENING_PORT},
-    /*{ "lA", LFT_LOCAL_NAME }, */
-
-    {"<la", LFT_SERVER_LOCAL_IP},
-    {"oa", LFT_SERVER_LOCAL_IP_OLD_27},
-    {"<lp", LFT_SERVER_LOCAL_PORT},
-    /* {"ot", LFT_PEER_OUTGOING_TOS}, */
-
-    {"ts", LFT_TIME_SECONDS_SINCE_EPOCH},
-    {"tu", LFT_TIME_SUBSECOND},
-    {"tl", LFT_TIME_LOCALTIME},
-    {"tg", LFT_TIME_GMT},
-    {"tr", LFT_TIME_TO_HANDLE_REQUEST},
-
-    {"<pt", LFT_PEER_RESPONSE_TIME},
-    {"<tt", LFT_TOTAL_SERVER_SIDE_RESPONSE_TIME},
-    {"dt", LFT_DNS_WAIT_TIME},
-
-    {">ha", LFT_ADAPTED_REQUEST_HEADER},
-    {">ha", LFT_ADAPTED_REQUEST_ALL_HEADERS},
-
-    {"un", LFT_USER_NAME},
-    {"ul", LFT_USER_LOGIN},
-    /*{ "ur", LFT_USER_REALM }, */
-    /*{ "us", LFT_USER_SCHEME }, */
-    {"ui", LFT_USER_IDENT},
-    {"ue", LFT_USER_EXTERNAL},
-
-    {"Hs", LFT_HTTP_SENT_STATUS_CODE_OLD_30},
-    {">Hs", LFT_HTTP_SENT_STATUS_CODE},
-    {"<Hs", LFT_HTTP_RECEIVED_STATUS_CODE},
-    /*{ "Ht", LFT_HTTP_STATUS }, */
-    {"<bs", LFT_HTTP_BODY_BYTES_READ},
-
-    {"Ss", LFT_SQUID_STATUS},
-    {"Sh", LFT_SQUID_HIERARCHY},
-
-    {"mt", LFT_MIME_TYPE},
-
-    {">rm", LFT_CLIENT_REQ_METHOD},
-    {">ru", LFT_CLIENT_REQ_URI},
-    {">rp", LFT_CLIENT_REQ_URLPATH},
-    /*{">rq", LFT_CLIENT_REQ_QUERY},*/
-    {">rv", LFT_CLIENT_REQ_VERSION},
-
-    {"rm", LFT_REQUEST_METHOD},
-    {"ru", LFT_REQUEST_URI},	/* doesn't include the query-string */
-    {"rp", LFT_REQUEST_URLPATH_OLD_31},
-    /* { "rq", LFT_REQUEST_QUERY }, * /     / * the query-string, INCLUDING the leading ? */
-    {"rv", LFT_REQUEST_VERSION},
-
-    {"<rm", LFT_SERVER_REQ_METHOD},
-    {"<ru", LFT_SERVER_REQ_URI},
-    {"<rp", LFT_SERVER_REQ_URLPATH},
-    /*{"<rq", LFT_SERVER_REQ_QUERY},*/
-    {"<rv", LFT_SERVER_REQ_VERSION},
-
-    {">st", LFT_REQUEST_SIZE_TOTAL },
-    /*{ ">sl", LFT_REQUEST_SIZE_LINE }, * / / * the request line "GET ... " */
-    {">sh", LFT_REQUEST_SIZE_HEADERS },
-    /*{ ">sb", LFT_REQUEST_SIZE_BODY }, */
-    /*{ ">sB", LFT_REQUEST_SIZE_BODY_NO_TE }, */
-
-    {"<st", LFT_REPLY_SIZE_TOTAL},
-    {"<sH", LFT_REPLY_HIGHOFFSET},
-    {"<sS", LFT_REPLY_OBJECTSIZE},
-    /*{ "<sl", LFT_REPLY_SIZE_LINE }, * /   / * the reply line (protocol, code, text) */
-    {"<sh", LFT_REPLY_SIZE_HEADERS },
-    /*{ "<sb", LFT_REPLY_SIZE_BODY }, */
-    /*{ "<sB", LFT_REPLY_SIZE_BODY_NO_TE }, */
-
-    {"et", LFT_TAG},
-    {"st", LFT_IO_SIZE_TOTAL},
-    {"ea", LFT_EXT_LOG},
-    {"sn", LFT_SEQUENCE_NUMBER},
-
-    {NULL, LFT_NONE}		/* this must be last */
-};
-
-#if USE_ADAPTATION
-/// Adaptation (adapt::) tokens
-static struct TokenTableEntry TokenTableAdapt[] = {
-    {"all_trs", LTF_ADAPTATION_ALL_XACT_TIMES},
-    {"sum_trs", LTF_ADAPTATION_SUM_XACT_TIMES},
-    {"<last_h", LFT_ADAPTATION_LAST_HEADER},
-    {NULL, LFT_NONE}		/* this must be last */
-};
-#endif
-
-#if ICAP_CLIENT
-/// ICAP (icap::) tokens
-static struct TokenTableEntry TokenTableIcap[] = {
-    {"tt", LFT_ICAP_TOTAL_TIME},
-    {"<last_h", LFT_ADAPTATION_LAST_HEADER}, // deprecated
-
-    {"<A",  LFT_ICAP_ADDR},
-    {"<service_name",  LFT_ICAP_SERV_NAME},
-    {"ru",  LFT_ICAP_REQUEST_URI},
-    {"rm",  LFT_ICAP_REQUEST_METHOD},
-    {">st",  LFT_ICAP_BYTES_SENT},
-    {"<st",  LFT_ICAP_BYTES_READ},
-    {"<bs", LFT_ICAP_BODY_BYTES_READ},
-
-    {">h",  LFT_ICAP_REQ_HEADER},
-    {"<h",  LFT_ICAP_REP_HEADER},
-
-    {"tr",  LFT_ICAP_TR_RESPONSE_TIME},
-    {"tio",  LFT_ICAP_IO_TIME},
-    {"to",  LFT_ICAP_OUTCOME},
-    {"Hs",  LFT_ICAP_STATUS_CODE},
-
-    {NULL, LFT_NONE}		/* this must be last */
-};
-#endif
-
-/// Miscellaneous >2 byte tokens
-static struct TokenTableEntry TokenTableMisc[] = {
-    {">eui", LFT_CLIENT_EUI},
-    {"err_code", LFT_SQUID_ERROR },
-    {"err_detail", LFT_SQUID_ERROR_DETAIL },
-    {NULL, LFT_NONE}		/* this must be last */
-};
-
-} // namespace Format
-
-/// Scans a token table to see if the next token exists there
-/// returns a pointer to next unparsed byte and updates type member if found
-char *
-Format::Token::scanForToken(const struct TokenTableEntry *table, char *cur)
-{
-    for (const struct TokenTableEntry *lte = table; lte->config != NULL; lte++) {
-        if (strncmp(lte->config, cur, strlen(lte->config)) == 0) {
-            type = lte->token_type;
-            label = lte->config;
-            debugs(46, 7, HERE << "Found token '" << label << "'");
-            return cur + strlen(lte->config);
-        }
-    }
-    return cur;
-}
-
-/* parses a single token. Returns the token length in characters,
- * and fills in the lt item with the token information.
- * def is for sure null-terminated
- */
-int
-Format::Token::parse(char *def, Quoting *quoting)
-{
-    char *cur = def;
-
-    int l;
-
-    l = strcspn(cur, "%");
-
-    if (l > 0) {
-        char *cp;
-        /* it's a string for sure, until \0 or the next % */
-        cp = (char *)xmalloc(l + 1);
-        xstrncpy(cp, cur, l + 1);
-        type = LFT_STRING;
-        data.string = cp;
-
-        while (l > 0) {
-            switch (*cur) {
-
-            case '"':
-
-                if (*quoting == LOG_QUOTE_NONE)
-                    *quoting = LOG_QUOTE_QUOTES;
-                else if (*quoting == LOG_QUOTE_QUOTES)
-                    *quoting = LOG_QUOTE_NONE;
-
-                break;
-
-            case '[':
-                if (*quoting == LOG_QUOTE_NONE)
-                    *quoting = LOG_QUOTE_MIMEBLOB;
-
-                break;
-
-            case ']':
-                if (*quoting == LOG_QUOTE_MIMEBLOB)
-                    *quoting = LOG_QUOTE_NONE;
-
-                break;
-            }
-
-            cur++;
-            l--;
-        }
-
-        goto done;
-    }
-
-    if (!*cur)
-        goto done;
-
-    cur++;
-
-    // select quoting style for his particular token
-    switch (*cur) {
-
-    case '"':
-        quote = LOG_QUOTE_QUOTES;
-        cur++;
-        break;
-
-    case '\'':
-        quote = LOG_QUOTE_RAW;
-        cur++;
-        break;
-
-    case '[':
-        quote = LOG_QUOTE_MIMEBLOB;
-        cur++;
-        break;
-
-    case '#':
-        quote = LOG_QUOTE_URL;
-        cur++;
-        break;
-
-    default:
-        quote = *quoting;
-        break;
-    }
-
-    if (*cur == '-') {
-        left = 1;
-        cur++;
-    }
-
-    if (*cur == '0') {
-        zero = 1;
-        cur++;
-    }
-
-    if (xisdigit(*cur))
-        width = strtol(cur, &cur, 10);
-
-    if (*cur == '.')
-        precision = strtol(cur + 1, &cur, 10);
-
-    if (*cur == '{') {
-        char *cp;
-        cur++;
-        l = strcspn(cur, "}");
-        cp = (char *)xmalloc(l + 1);
-        xstrncpy(cp, cur, l + 1);
-        data.string = cp;
-        cur += l;
-
-        if (*cur == '}')
-            cur++;
-    }
-
-    type = LFT_NONE;
-
-    // Scan each token namespace
-    if (strncmp(cur, "icap::", 6) == 0) {
-#if ICAP_CLIENT
-        cur += 6;
-        debugs(46, 5, HERE << "scan for icap:: token");
-        cur = scanForToken(TokenTableIcap, cur);
-#else
-        debugs(46, DBG_IMPORTANT, "ERROR: Format uses icap:: token. ICAP disabled!");
-#endif
-    } else if (strncmp(cur, "adapt::", 7) == 0) {
-#if USE_ADAPTATION
-        cur += 7;
-        debugs(46, 5, HERE << "scan for adapt:: token");
-        cur = scanForToken(TokenTableAdapt, cur);
-#else
-        debugs(46, DBG_IMPORTANT, "ERROR: Format uses adapt:: token. Adaptation disabled!");
-#endif
-    } else {
-        // For upward compatibility, assume "http::" prefix as default prefix
-        // for all log access formating codes, except those starting with a
-        // "%" or a known namespace. (ie "icap::", "adapt::")
-        if (strncmp(cur,"http::", 6) == 0 && *(cur+6) != '%' )
-            cur += 6;
-
-        // NP: scan the sets of tokens in decreasing size to guarantee no
-        //     mistakes made with overlapping names. (Bug 3310)
-
-        // Scan for various long tokens
-        debugs(46, 5, HERE << "scan for possible Misc token");
-        cur = scanForToken(TokenTableMisc, cur);
-        // scan for 2-char tokens
-        if (type == LFT_NONE) {
-            debugs(46, 5, HERE << "scan for possible 2C token");
-            cur = scanForToken(TokenTable2C, cur);
-        }
-        // finally scan for 1-char tokens.
-        if (type == LFT_NONE) {
-            debugs(46, 5, HERE << "scan for possible 1C token");
-            cur = scanForToken(TokenTable1C, cur);
-        }
-    }
-
-    if (type == LFT_NONE) {
-        fatalf("Can't parse configuration token: '%s'\n", def);
-    }
-
-    if (*cur == ' ') {
-        space = 1;
-        cur++;
-    }
-
-done:
-
-    switch (type) {
-
-#if USE_ADAPTATION
-    case LFT_ADAPTATION_LAST_HEADER:
-#endif
-
-#if ICAP_CLIENT
-    case LFT_ICAP_REQ_HEADER:
-
-    case LFT_ICAP_REP_HEADER:
-#endif
-
-    case LFT_ADAPTED_REQUEST_HEADER:
-
-    case LFT_REQUEST_HEADER:
-
-    case LFT_REPLY_HEADER:
-
-        if (data.string) {
-            char *header = data.string;
-            char *cp = strchr(header, ':');
-
-            if (cp) {
-                *cp++ = '\0';
-
-                if (*cp == ',' || *cp == ';' || *cp == ':')
-                    data.header.separator = *cp++;
-                else
-                    data.header.separator = ',';
-
-                data.header.element = cp;
-
-                switch (type) {
-                case LFT_REQUEST_HEADER:
-                    type = LFT_REQUEST_HEADER_ELEM;
-                    break;
-
-                case LFT_ADAPTED_REQUEST_HEADER:
-                    type = LFT_ADAPTED_REQUEST_HEADER_ELEM;
-                    break;
-
-                case LFT_REPLY_HEADER:
-                    type = LFT_REPLY_HEADER_ELEM;
-                    break;
-#if USE_ADAPTATION
-                case LFT_ADAPTATION_LAST_HEADER:
-                    type = LFT_ADAPTATION_LAST_HEADER_ELEM;
-                    break;
-#endif
-#if ICAP_CLIENT
-                case LFT_ICAP_REQ_HEADER:
-                    type = LFT_ICAP_REQ_HEADER_ELEM;
-                    break;
-                case LFT_ICAP_REP_HEADER:
-                    type = LFT_ICAP_REP_HEADER_ELEM;
-                    break;
-#endif
-                default:
-                    break;
-                }
-            }
-
-            data.header.header = header;
-        } else {
-            switch (type) {
-            case LFT_REQUEST_HEADER:
-                type = LFT_REQUEST_ALL_HEADERS;
-                break;
-
-            case LFT_ADAPTED_REQUEST_HEADER:
-                type = LFT_ADAPTED_REQUEST_ALL_HEADERS;
-                break;
-
-            case LFT_REPLY_HEADER:
-                type = LFT_REPLY_ALL_HEADERS;
-                break;
-#if USE_ADAPTATION
-            case LFT_ADAPTATION_LAST_HEADER:
-                type = LFT_ADAPTATION_LAST_ALL_HEADERS;
-                break;
-#endif
-#if ICAP_CLIENT
-            case LFT_ICAP_REQ_HEADER:
-                type = LFT_ICAP_REQ_ALL_HEADERS;
-                break;
-            case LFT_ICAP_REP_HEADER:
-                type = LFT_ICAP_REP_ALL_HEADERS;
-                break;
-#endif
-            default:
-                break;
-            }
-            Config.onoff.log_mime_hdrs = 1;
-        }
-
-        break;
-
-    case LFT_CLIENT_FQDN:
-        Config.onoff.log_fqdn = 1;
-        break;
-
-    case LFT_TIME_SUBSECOND:
-        divisor = 1000;
-
-        if (precision) {
-            int i;
-            divisor = 1000000;
-
-            for (i = precision; i > 1; i--)
-                divisor /= 10;
-
-            if (!divisor)
-                divisor = 0;
-        }
-        break;
-
-    case LFT_HTTP_SENT_STATUS_CODE_OLD_30:
-        debugs(46, 0, "WARNING: The \"Hs\" formatting code is deprecated. Use the \">Hs\" instead.");
-        type = LFT_HTTP_SENT_STATUS_CODE;
-        break;
-
-    case LFT_SERVER_LOCAL_IP_OLD_27:
-        debugs(46, 0, "WARNING: The \"oa\" formatting code is deprecated. Use the \"<la\" instead.");
-        type = LFT_SERVER_LOCAL_IP;
-        break;
-
-    case LFT_REQUEST_URLPATH_OLD_31:
-        debugs(46, 0, "WARNING: The \"rp\" formatting code is deprecated. Use the \">rp\" instead.");
-        type = LFT_CLIENT_REQ_URLPATH;
-        break;
-
-    case LFT_REQUEST_VERSION_OLD_2X:
-        debugs(46, 0, "WARNING: The \">v\" formatting code is deprecated. Use the \">rv\" instead.");
-        type = LFT_REQUEST_VERSION;
-        break;
-
-#if !USE_SQUID_EUI
-    case LFT_CLIENT_EUI:
-        debugs(46, 0, "WARNING: The \">eui\" formatting code requires EUI features which are disabled in this Squid.");
-        break;
-#endif
-
-    default:
-        break;
-    }
-
-    return (cur - def);
-}
-
-Format::Token::~Token()
-{
-    label = NULL; // drop reference to global static.
-    safe_free(data.string);
-    while (next) {
-        Token *tokens = next;
-        next = next->next;
-        tokens->next = NULL;
-        delete tokens;
-    }
-}
-
diff -u -r -N squid-3.2.0.13/src/format/Tokens.h squid-3.2.0.14/src/format/Tokens.h
--- squid-3.2.0.13/src/format/Tokens.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/format/Tokens.h	1970-01-01 12:00:00.000000000 +1200
@@ -1,235 +0,0 @@
-#ifndef _SQUID_FMT_TOKENS_H
-#define _SQUID_FMT_TOKENS_H
-
-/*
- * Squid configuration allows users to define custom formats in
- * several components.
- * - logging
- * - external ACL input
- * - deny page URL
- *
- * These enumerations and classes define the API for parsing of
- * format directives to define these patterns. Along with output
- * functionality to produce formatted buffers.
- */
-
-namespace Format
-{
-
-#define LOG_BUF_SZ (MAX_URL<<2)
-
-/*
- * Bytecodes for the configureable format stuff
- */
-typedef enum {
-    LFT_NONE,			/* dummy */
-    LFT_STRING,
-
-    LFT_CLIENT_IP_ADDRESS,
-    LFT_CLIENT_FQDN,
-    LFT_CLIENT_PORT,
-    LFT_CLIENT_EUI,
-
-    LFT_SERVER_IP_ADDRESS,
-    LFT_SERVER_FQDN_OR_PEER_NAME,
-    LFT_SERVER_PORT,
-
-    LFT_CLIENT_LOCAL_IP,
-    LFT_LOCAL_LISTENING_IP,
-    LFT_CLIENT_LOCAL_PORT,
-    LFT_LOCAL_LISTENING_PORT,
-    /*LFT_LOCAL_NAME, */
-
-    LFT_SERVER_LOCAL_IP,
-    LFT_SERVER_LOCAL_IP_OLD_27,
-    LFT_SERVER_LOCAL_PORT,
-
-    LFT_TIME_SECONDS_SINCE_EPOCH,
-    LFT_TIME_SUBSECOND,
-    LFT_TIME_LOCALTIME,
-    LFT_TIME_GMT,
-    LFT_TIME_TO_HANDLE_REQUEST,
-
-    LFT_PEER_RESPONSE_TIME,
-    LFT_TOTAL_SERVER_SIDE_RESPONSE_TIME,
-    LFT_DNS_WAIT_TIME,
-
-    LFT_REQUEST_HEADER,
-    LFT_REQUEST_HEADER_ELEM,
-    LFT_REQUEST_ALL_HEADERS,
-
-    LFT_ADAPTED_REQUEST_HEADER,
-    LFT_ADAPTED_REQUEST_HEADER_ELEM,
-    LFT_ADAPTED_REQUEST_ALL_HEADERS,
-
-    LFT_REPLY_HEADER,
-    LFT_REPLY_HEADER_ELEM,
-    LFT_REPLY_ALL_HEADERS,
-
-    LFT_USER_NAME,
-    LFT_USER_LOGIN,
-    LFT_USER_IDENT,
-    /*LFT_USER_REALM, */
-    /*LFT_USER_SCHEME, */
-    LFT_USER_EXTERNAL,
-
-    LFT_HTTP_SENT_STATUS_CODE_OLD_30,
-    LFT_HTTP_SENT_STATUS_CODE,
-    LFT_HTTP_RECEIVED_STATUS_CODE,
-    /*LFT_HTTP_STATUS, */
-    LFT_HTTP_BODY_BYTES_READ,
-
-    LFT_SQUID_STATUS,
-    LFT_SQUID_ERROR,
-    LFT_SQUID_ERROR_DETAIL,
-    LFT_SQUID_HIERARCHY,
-
-    LFT_MIME_TYPE,
-
-    /* original Request-Line details receved from client */
-    LFT_CLIENT_REQ_METHOD,
-    LFT_CLIENT_REQ_URI,
-    LFT_CLIENT_REQ_URLPATH,
-    /* LFT_CLIENT_REQ_QUERY, */
-    LFT_CLIENT_REQ_VERSION,
-
-    /* Request-Line details receved from client (legacy, filtered) */
-    LFT_REQUEST_METHOD,
-    LFT_REQUEST_URI,
-    LFT_REQUEST_URLPATH_OLD_31,
-    /*LFT_REQUEST_QUERY, */
-    LFT_REQUEST_VERSION_OLD_2X,
-    LFT_REQUEST_VERSION,
-
-    /* Request-Line details sent to the server/peer */
-    LFT_SERVER_REQ_METHOD,
-    LFT_SERVER_REQ_URI,
-    LFT_SERVER_REQ_URLPATH,
-    /*LFT_SERVER_REQ_QUERY, */
-    LFT_SERVER_REQ_VERSION,
-
-    LFT_REQUEST_SIZE_TOTAL,
-    /*LFT_REQUEST_SIZE_LINE, */
-    LFT_REQUEST_SIZE_HEADERS,
-    /*LFT_REQUEST_SIZE_BODY, */
-    /*LFT_REQUEST_SIZE_BODY_NO_TE, */
-
-    LFT_REPLY_SIZE_TOTAL,
-    LFT_REPLY_HIGHOFFSET,
-    LFT_REPLY_OBJECTSIZE,
-    /*LFT_REPLY_SIZE_LINE, */
-    LFT_REPLY_SIZE_HEADERS,
-    /*LFT_REPLY_SIZE_BODY, */
-    /*LFT_REPLY_SIZE_BODY_NO_TE, */
-
-    LFT_TAG,
-    LFT_IO_SIZE_TOTAL,
-    LFT_EXT_LOG,
-
-    LFT_SEQUENCE_NUMBER,
-
-#if USE_ADAPTATION
-    LTF_ADAPTATION_SUM_XACT_TIMES,
-    LTF_ADAPTATION_ALL_XACT_TIMES,
-    LFT_ADAPTATION_LAST_HEADER,
-    LFT_ADAPTATION_LAST_HEADER_ELEM,
-    LFT_ADAPTATION_LAST_ALL_HEADERS,
-#endif
-
-#if ICAP_CLIENT
-
-    LFT_ICAP_TOTAL_TIME,
-
-    LFT_ICAP_ADDR,
-    LFT_ICAP_SERV_NAME,
-    LFT_ICAP_REQUEST_URI,
-    LFT_ICAP_REQUEST_METHOD,
-    LFT_ICAP_BYTES_SENT,
-    LFT_ICAP_BYTES_READ,
-    LFT_ICAP_BODY_BYTES_READ,
-
-    LFT_ICAP_REQ_HEADER,
-    LFT_ICAP_REQ_HEADER_ELEM,
-    LFT_ICAP_REQ_ALL_HEADERS,
-
-    LFT_ICAP_REP_HEADER,
-    LFT_ICAP_REP_HEADER_ELEM,
-    LFT_ICAP_REP_ALL_HEADERS,
-
-    LFT_ICAP_TR_RESPONSE_TIME,
-    LFT_ICAP_IO_TIME,
-    LFT_ICAP_OUTCOME,
-    LFT_ICAP_STATUS_CODE,
-#endif
-
-    LFT_PERCENT			/* special string cases for escaped chars */
-} ByteCode_t;
-
-/// Quoting style for a format output.
-enum Quoting {
-    LOG_QUOTE_NONE = 0,
-    LOG_QUOTE_QUOTES,
-    LOG_QUOTE_MIMEBLOB,
-    LOG_QUOTE_URL,
-    LOG_QUOTE_RAW
-};
-
-struct TokenTableEntry {
-    const char *config;
-    ByteCode_t token_type;
-    int options;
-};
-
-// XXX: inherit from linked list
-class Token
-{
-public:
-    Token() : type(LFT_NONE),
-            label(NULL),
-            width(0),
-            precision(0),
-            quote(LOG_QUOTE_NONE),
-            left(0),
-            space(0),
-            zero(0),
-            divisor(0),
-            next(NULL)
-    { data.string = NULL; };
-    ~Token();
-
-    /** parses a single token. Returns the token length in characters,
-     * and fills in this item with the token information.
-     * def is for sure null-terminated.
-     */
-    int parse(char *def, enum Quoting *quote);
-
-    ByteCode_t type;
-    const char *label;
-    union {
-        char *string;
-
-        struct {
-            char *header;
-            char *element;
-            char separator;
-        } header;
-        char *timespec;
-    } data;
-    unsigned int width;
-    unsigned int precision;
-    enum Quoting quote;
-    unsigned int left:1;
-    unsigned int space:1;
-    unsigned int zero:1;
-    int divisor;
-    Token *next;	/* todo: move from linked list to array */
-
-private:
-    char *scanForToken(const struct TokenTableEntry *table, char *cur);
-};
-
-extern const char *log_tags[];
-
-} // namespace Format
-
-#endif /* _SQUID_FMT_TOKENS_H */
diff -u -r -N squid-3.2.0.13/src/format/TokenTableEntry.h squid-3.2.0.14/src/format/TokenTableEntry.h
--- squid-3.2.0.13/src/format/TokenTableEntry.h	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/format/TokenTableEntry.h	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,38 @@
+#ifndef _SQUID_FORMAT_TOKENTABLEENTRY_H
+#define _SQUID_FORMAT_TOKENTABLEENTRY_H
+
+#include "format/ByteCode.h"
+
+/*
+ * Squid configuration allows users to define custom formats in
+ * several components.
+ * - logging
+ * - external ACL input
+ * - deny page URL
+ *
+ * These enumerations and classes define the API for parsing of
+ * format directives to define these patterns. Along with output
+ * functionality to produce formatted buffers.
+ */
+
+namespace Format
+{
+
+/// One entry in a table of format tokens.
+class TokenTableEntry
+{
+public:
+    /// the config file ASCII representation for this token
+    /// just the base tag bytes, excluding any option syntax bytes
+    const char *configTag;
+
+    /// the internal byte code representatio of this token
+    ByteCode_t tokenType;
+
+    /// 32-bit mask? of options affecting the output display of this token
+    uint32_t options;
+};
+
+} // namespace Format
+
+#endif /* _SQUID_FORMAT_TOKENTABLEENTRY_H */
diff -u -r -N squid-3.2.0.13/src/forward.cc squid-3.2.0.14/src/forward.cc
--- squid-3.2.0.13/src/forward.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/forward.cc	2011-12-13 00:08:18.000000000 +1300
@@ -62,7 +62,7 @@
 #endif
 
 static PSC fwdPeerSelectionCompleteWrapper;
-static PF fwdServerClosedWrapper;
+static CLCB fwdServerClosedWrapper;
 #if USE_SSL
 static PF fwdNegotiateSSLWrapper;
 #endif
@@ -184,8 +184,7 @@
 
     HTTPMSGUNLOCK(request);
 
-    if (err)
-        errorStateFree(err);
+    delete err;
 
     entry->unregisterAbort();
 
@@ -238,10 +237,8 @@
             if (page_id == ERR_NONE)
                 page_id = ERR_FORWARDING_DENIED;
 
-            ErrorState *anErr = errorCon(page_id, HTTP_FORBIDDEN, request);
-
+            ErrorState *anErr = new ErrorState(page_id, HTTP_FORBIDDEN, request);
             errorAppendEntry(entry, anErr);	// frees anErr
-
             return;
         }
     }
@@ -259,7 +256,7 @@
 
     if (shutting_down) {
         /* more yuck */
-        ErrorState *anErr = errorCon(ERR_SHUTTING_DOWN, HTTP_SERVICE_UNAVAILABLE, request);
+        ErrorState *anErr = new ErrorState(ERR_SHUTTING_DOWN, HTTP_SERVICE_UNAVAILABLE, request);
         errorAppendEntry(entry, anErr);	// frees anErr
         return;
     }
@@ -295,10 +292,8 @@
     if (serverDestinations.size() > 0) {
         // Ditch error page if it was created before.
         // A new one will be created if there's another problem
-        if (err) {
-            errorStateFree(err);
-            err = NULL;
-        }
+        delete err;
+        err = NULL;
 
         // Update the logging information about this new server connection.
         // Done here before anything else so the errors get logged for
@@ -310,8 +305,7 @@
     } else {
         debugs(17, 3, HERE << "Connection failed: " << entry->url());
         if (!err) {
-            ErrorState *anErr = NULL;
-            anErr = errorCon(ERR_CANNOT_FORWARD, HTTP_INTERNAL_SERVER_ERROR, request);
+            ErrorState *anErr = new ErrorState(ERR_CANNOT_FORWARD, HTTP_INTERNAL_SERVER_ERROR, request);
             anErr->xerrno = errno;
             fail(anErr);
         } // else use actual error from last connection attempt
@@ -324,15 +318,18 @@
 {
     debugs(17, 3, HERE << err_type_str[errorState->type] << " \"" << httpStatusString(errorState->httpStatus) << "\"\n\t" << entry->url()  );
 
-    if (err)
-        errorStateFree(err);
-
+    delete err;
     err = errorState;
 
     if (!errorState->request)
         errorState->request = HTTPMSGLOCK(request);
 
-    request->detailError(errorState->type, errorState->xerrno);
+#if USE_SSL
+    if (errorState->type == ERR_SECURE_CONNECT_FAIL && errorState->detail)
+        request->detailError(errorState->type, errorState->detail->errorNo());
+    else
+#endif
+        request->detailError(errorState->type, errorState->xerrno);
 }
 
 /**
@@ -405,17 +402,19 @@
 /**** CALLBACK WRAPPERS ************************************************************/
 
 static void
-fwdPeerSelectionCompleteWrapper(Comm::ConnectionList * unused, void *data)
+fwdPeerSelectionCompleteWrapper(Comm::ConnectionList * unused, ErrorState *err, void *data)
 {
     FwdState *fwd = (FwdState *) data;
+    if (err)
+        fwd->fail(err);
     fwd->startConnectionOrFail();
 }
 
 static void
-fwdServerClosedWrapper(int fd, void *data)
+fwdServerClosedWrapper(const CommCloseCbParams &params)
 {
-    FwdState *fwd = (FwdState *) data;
-    fwd->serverClosed(fd);
+    FwdState *fwd = (FwdState *)params.data;
+    fwd->serverClosed(params.fd);
 }
 
 #if USE_SSL
@@ -498,13 +497,6 @@
 bool
 FwdState::checkRetriable()
 {
-    /* If there is a request body then Squid can only try once
-     * even if the method is indempotent
-     */
-
-    if (request->body_pipe != NULL)
-        return false;
-
     /* RFC2616 9.1 Safe and Idempotent Methods */
     switch (request->method.id()) {
         /* 9.1.1 Safe Methods */
@@ -551,7 +543,7 @@
     doneWithRetries();
 
     if (self != NULL && !err && shutting_down) {
-        ErrorState *anErr = errorCon(ERR_SHUTTING_DOWN, HTTP_SERVICE_UNAVAILABLE, request);
+        ErrorState *anErr = new ErrorState(ERR_SHUTTING_DOWN, HTTP_SERVICE_UNAVAILABLE, request);
         errorAppendEntry(entry, anErr);
     }
 
@@ -581,11 +573,17 @@
 void
 FwdState::negotiateSSL(int fd)
 {
+    unsigned long ssl_lib_error = SSL_ERROR_NONE;
     SSL *ssl = fd_table[fd].ssl;
     int ret;
 
     if ((ret = SSL_connect(ssl)) <= 0) {
         int ssl_error = SSL_get_error(ssl, ret);
+#ifdef EPROTO
+        int sysErrNo = EPROTO;
+#else
+        int sysErrNo = EACCES;
+#endif
 
         switch (ssl_error) {
 
@@ -597,18 +595,22 @@
             Comm::SetSelect(fd, COMM_SELECT_WRITE, fwdNegotiateSSLWrapper, this, 0);
             return;
 
-        default:
+        case SSL_ERROR_SSL:
+        case SSL_ERROR_SYSCALL:
+            ssl_lib_error = ERR_get_error();
             debugs(81, 1, "fwdNegotiateSSL: Error negotiating SSL connection on FD " << fd <<
-                   ": " << ERR_error_string(ERR_get_error(), NULL) << " (" << ssl_error <<
+                   ": " << ERR_error_string(ssl_lib_error, NULL) << " (" << ssl_error <<
                    "/" << ret << "/" << errno << ")");
-            ErrorState *const anErr = makeConnectingError(ERR_SECURE_CONNECT_FAIL);
-#ifdef EPROTO
 
-            anErr->xerrno = EPROTO;
-#else
+            // store/report errno when ssl_error is SSL_ERROR_SYSCALL, ssl_lib_error is 0, and ret is -1
+            if (ssl_error == SSL_ERROR_SYSCALL && ret == -1 && ssl_lib_error == 0)
+                sysErrNo = errno;
 
-            anErr->xerrno = EACCES;
-#endif
+            // falling through to complete error handling
+
+        default:
+            ErrorState *const anErr = makeConnectingError(ERR_SECURE_CONNECT_FAIL);
+            anErr->xerrno = sysErrNo;
 
             Ssl::ErrorDetail *errFromFailure = (Ssl::ErrorDetail *)SSL_get_ex_data(ssl, ssl_ex_index_ssl_error_detail);
             if (errFromFailure != NULL) {
@@ -616,8 +618,17 @@
                 // and will be released when ssl object destroyed.
                 // Copy errFromFailure to a new Ssl::ErrorDetail object
                 anErr->detail = new Ssl::ErrorDetail(*errFromFailure);
+            } else {
+                // clientCert can be be NULL
+                X509 *client_cert = SSL_get_peer_certificate(ssl);
+                anErr->detail = new Ssl::ErrorDetail(SQUID_ERR_SSL_HANDSHAKE, client_cert);
+                if (client_cert)
+                    X509_free(client_cert);
             }
 
+            if (ssl_lib_error != SSL_ERROR_NONE)
+                anErr->detail->setLibError(ssl_lib_error);
+
             fail(anErr);
 
             if (serverConnection()->getPeer()) {
@@ -658,7 +669,7 @@
 
     if ((ssl = SSL_new(sslContext)) == NULL) {
         debugs(83, 1, "fwdInitiateSSL: Error allocating handle: " << ERR_error_string(ERR_get_error(), NULL)  );
-        ErrorState *anErr = errorCon(ERR_SOCKET_FAILURE, HTTP_INTERNAL_SERVER_ERROR, request);
+        ErrorState *anErr = new ErrorState(ERR_SOCKET_FAILURE, HTTP_INTERNAL_SERVER_ERROR, request);
         anErr->xerrno = errno;
         fail(anErr);
         self = NULL;		// refcounted
@@ -756,7 +767,7 @@
     assert(fd == serverDestinations[0]->fd);
 
     if (entry->isEmpty()) {
-        ErrorState *anErr = errorCon(ERR_CONNECT_FAIL, HTTP_GATEWAY_TIMEOUT, request);
+        ErrorState *anErr = new ErrorState(ERR_CONNECT_FAIL, HTTP_GATEWAY_TIMEOUT, request);
         anErr->xerrno = ETIMEDOUT;
         fail(anErr);
 
@@ -804,7 +815,7 @@
 
     if (serverDestinations[0]->getPeer() && request->flags.sslBumped == true) {
         debugs(50, 4, "fwdConnectStart: Ssl bumped connections through parrent proxy are not allowed");
-        ErrorState *anErr = errorCon(ERR_CANNOT_FORWARD, HTTP_SERVICE_UNAVAILABLE, request);
+        ErrorState *anErr = new ErrorState(ERR_CANNOT_FORWARD, HTTP_SERVICE_UNAVAILABLE, request);
         fail(anErr);
         self = NULL; // refcounted
         return;
@@ -846,7 +857,7 @@
     Comm::ConnectionPointer temp = fwdPconnPool->pop(serverDestinations[0], host, checkRetriable());
 
     // if we found an open persistent connection to use. use it.
-    if (temp != NULL && Comm::IsConnOpen(temp)) {
+    if (Comm::IsConnOpen(temp)) {
         serverConn = temp;
         debugs(17, 3, HERE << "reusing pconn " << serverConnection());
         n_tries++;
@@ -987,7 +998,7 @@
 
         default:
             debugs(17, 1, "fwdDispatch: Cannot retrieve '" << entry->url() << "'" );
-            ErrorState *anErr = errorCon(ERR_UNSUP_REQ, HTTP_BAD_REQUEST, request);
+            ErrorState *anErr = new ErrorState(ERR_UNSUP_REQ, HTTP_BAD_REQUEST, request);
             fail(anErr);
             /*
              * Force a persistent connection to be closed because
@@ -1070,8 +1081,8 @@
 ErrorState *
 FwdState::makeConnectingError(const err_type type) const
 {
-    return errorCon(type, request->flags.need_validation ?
-                    HTTP_GATEWAY_TIMEOUT : HTTP_SERVICE_UNAVAILABLE, request);
+    return new ErrorState(type, request->flags.need_validation ?
+                          HTTP_GATEWAY_TIMEOUT : HTTP_SERVICE_UNAVAILABLE, request);
 }
 
 static void
diff -u -r -N squid-3.2.0.13/src/fs/coss/CossSwapDir.h squid-3.2.0.14/src/fs/coss/CossSwapDir.h
--- squid-3.2.0.13/src/fs/coss/CossSwapDir.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/fs/coss/CossSwapDir.h	2011-12-13 00:08:18.000000000 +1300
@@ -35,6 +35,7 @@
     virtual void dump(StoreEntry &)const;
     ~CossSwapDir();
     virtual StoreSearch *search(String const url, HttpRequest *);
+    virtual bool unlinkdUseful() const;
     virtual void unlink (StoreEntry &);
     virtual void statfs (StoreEntry &)const;
     virtual bool canStore(const StoreEntry &e, int64_t diskSpaceNeeded, int &load) const;
diff -u -r -N squid-3.2.0.13/src/fs/coss/store_dir_coss.cc squid-3.2.0.14/src/fs/coss/store_dir_coss.cc
--- squid-3.2.0.13/src/fs/coss/store_dir_coss.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/fs/coss/store_dir_coss.cc	2011-12-13 00:08:18.000000000 +1300
@@ -981,8 +981,8 @@
 #if 0
     /* is this applicable? I Hope not .. */
     storeAppendPrintf(sentry, "Filemap bits in use: %d of %d (%d%%)\n",
-                      SD->map->n_files_in_map, SD->map->max_n_files,
-                      Math::intPercent(SD->map->n_files_in_map, SD->map->max_n_files));
+                      SD->map->numFilesInMap(), SD->map->capacity(),
+                      Math::intPercent(SD->map->numFilesInMap(), SD->map->capacity()));
 #endif
 
     //    storeAppendPrintf(&sentry, "Pending operations: %d out of %d\n", io->aq.aq_numpending, MAX_ASYNCOP);
diff -u -r -N squid-3.2.0.13/src/fs/coss/store_io_coss.cc squid-3.2.0.14/src/fs/coss/store_io_coss.cc
--- squid-3.2.0.13/src/fs/coss/store_io_coss.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/fs/coss/store_io_coss.cc	2011-12-13 00:08:18.000000000 +1300
@@ -129,6 +129,13 @@
     }
 }
 
+bool
+CossSwapDir::unlinkdUseful() const
+{
+    // no entry-specific files to unlink
+    return false;
+}
+
 void
 CossSwapDir::unlink(StoreEntry & e)
 {
diff -u -r -N squid-3.2.0.13/src/fs/rock/RockSwapDir.cc squid-3.2.0.14/src/fs/rock/RockSwapDir.cc
--- squid-3.2.0.13/src/fs/rock/RockSwapDir.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/fs/rock/RockSwapDir.cc	2011-12-13 00:08:18.000000000 +1300
@@ -5,7 +5,6 @@
  */
 
 #include "config.h"
-#include "base/RunnersRegistry.h"
 #include "ConfigOption.h"
 #include "DiskIO/DiskIOModule.h"
 #include "DiskIO/DiskIOStrategy.h"
@@ -336,10 +335,13 @@
 
     const time_msec_t newTime = static_cast<time_msec_t>(parsedValue);
 
-    if (reconfiguring && *storedTime != newTime)
-        debugs(3, DBG_IMPORTANT, "cache_dir " << path << ' ' << option << " is now " << newTime);
-
-    *storedTime = newTime;
+    if (!reconfiguring)
+        *storedTime = newTime;
+    else if (*storedTime != newTime) {
+        debugs(3, DBG_IMPORTANT, "WARNING: cache_dir " << path << ' ' << option
+               << " cannot be changed dynamically, value left unchanged: " <<
+               *storedTime);
+    }
 
     return true;
 }
@@ -380,10 +382,13 @@
         self_destruct();
     }
 
-    if (isaReconfig && *storedRate != newRate)
-        debugs(3, DBG_IMPORTANT, "cache_dir " << path << ' ' << option << " is now " << newRate);
-
-    *storedRate = newRate;
+    if (!isaReconfig)
+        *storedRate = newRate;
+    else if (*storedRate != newRate) {
+        debugs(3, DBG_IMPORTANT, "WARNING: cache_dir " << path << ' ' << option
+               << " cannot be changed dynamically, value left unchanged: " <<
+               *storedRate);
+    }
 
     return true;
 }
@@ -744,6 +749,13 @@
     return false;
 }
 
+bool
+Rock::SwapDir::unlinkdUseful() const
+{
+    // no entry-specific files to unlink
+    return false;
+}
+
 void
 Rock::SwapDir::unlink(StoreEntry &e)
 {
@@ -811,24 +823,12 @@
 }
 
 
-/// initializes shared memory segments used by Rock::SwapDir
-class RockSwapDirRr: public Ipc::Mem::RegisteredRunner
+namespace Rock
 {
-public:
-    /* RegisteredRunner API */
-    virtual ~RockSwapDirRr();
-
-protected:
-    virtual void create(const RunnerRegistry &);
-
-private:
-    Vector<Rock::SwapDir::DirMap::Owner *> owners;
-};
-
-RunnerRegistrationEntry(rrAfterConfig, RockSwapDirRr);
-
+RunnerRegistrationEntry(rrAfterConfig, SwapDirRr);
+}
 
-void RockSwapDirRr::create(const RunnerRegistry &)
+void Rock::SwapDirRr::create(const RunnerRegistry &)
 {
     Must(owners.empty());
     for (int i = 0; i < Config.cacheSwap.n_configured; ++i) {
@@ -840,7 +840,7 @@
     }
 }
 
-RockSwapDirRr::~RockSwapDirRr()
+Rock::SwapDirRr::~SwapDirRr()
 {
     for (size_t i = 0; i < owners.size(); ++i)
         delete owners[i];
diff -u -r -N squid-3.2.0.13/src/fs/rock/RockSwapDir.h squid-3.2.0.14/src/fs/rock/RockSwapDir.h
--- squid-3.2.0.13/src/fs/rock/RockSwapDir.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/fs/rock/RockSwapDir.h	2011-12-13 00:08:18.000000000 +1300
@@ -33,6 +33,8 @@
     virtual uint64_t currentCount() const;
     virtual bool doReportStat() const;
     virtual void swappedOut(const StoreEntry &e);
+    virtual void create();
+    virtual void parse(int index, char *path);
 
     int64_t entryLimitHigh() const { return SwapFilenMax; } ///< Core limit
     int64_t entryLimitAllowed() const;
@@ -42,7 +44,6 @@
 protected:
     /* protected ::SwapDir API */
     virtual bool needsDiskStrand() const;
-    virtual void create();
     virtual void init();
     virtual ConfigOption *getOptionTree() const;
     virtual bool allowOptionReconfigure(const char *const option) const;
@@ -53,6 +54,7 @@
     virtual void diskFull();
     virtual void reference(StoreEntry &e);
     virtual bool dereference(StoreEntry &e);
+    virtual bool unlinkdUseful() const;
     virtual void unlink(StoreEntry &e);
     virtual void statfs(StoreEntry &e) const;
 
@@ -62,7 +64,6 @@
     virtual void readCompleted(const char *buf, int len, int errflag, RefCount< ::ReadRequest>);
     virtual void writeCompleted(int errflag, size_t len, RefCount< ::WriteRequest>);
 
-    virtual void parse(int index, char *path);
     void parseSize(const bool reconfiguring); ///< parses anonymous cache_dir size option
     void validateOptions(); ///< warns of configuration problems; may quit
     bool parseTimeOption(char const *option, const char *value, int reconfiguring);
@@ -96,6 +97,22 @@
     static const int64_t HeaderSize; ///< on-disk db header size
 };
 
+/// initializes shared memory segments used by Rock::SwapDir
+class SwapDirRr: public Ipc::Mem::RegisteredRunner
+{
+public:
+    /* ::RegisteredRunner API */
+    virtual ~SwapDirRr();
+
+protected:
+    /* Ipc::Mem::RegisteredRunner API */
+    virtual void create(const RunnerRegistry &);
+
+private:
+    Vector<SwapDir::DirMap::Owner *> owners;
+};
+
+
 } // namespace Rock
 
 #endif /* SQUID_FS_ROCK_SWAP_DIR_H */
diff -u -r -N squid-3.2.0.13/src/fs/ufs/store_dir_ufs.cc squid-3.2.0.14/src/fs/ufs/store_dir_ufs.cc
--- squid-3.2.0.13/src/fs/ufs/store_dir_ufs.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/fs/ufs/store_dir_ufs.cc	2011-12-13 00:08:18.000000000 +1300
@@ -41,6 +41,7 @@
 #include "ConfigOption.h"
 #include "DiskIO/DiskIOStrategy.h"
 #include "DiskIO/DiskIOModule.h"
+#include "FileMap.h"
 #include "Parsing.h"
 #include "SquidMath.h"
 #include "SquidTime.h"
@@ -246,7 +247,7 @@
     createSwapSubDirs();
 }
 
-UFSSwapDir::UFSSwapDir(char const *aType, const char *anIOType) : SwapDir(aType), IO(NULL), map(file_map_create()), suggest(0), swaplog_fd (-1), currentIOOptions(new ConfigOptionVector()), ioType(xstrdup(anIOType)), cur_size(0), n_disk_objects(0)
+UFSSwapDir::UFSSwapDir(char const *aType, const char *anIOType) : SwapDir(aType), IO(NULL), map(new FileMap()), suggest(0), swaplog_fd (-1), currentIOOptions(new ConfigOptionVector()), ioType(xstrdup(anIOType)), cur_size(0), n_disk_objects(0)
 {
     /* modulename is only set to disk modules that are built, by configure,
      * so the Find call should never return NULL here.
@@ -261,7 +262,7 @@
         swaplog_fd = -1;
     }
 
-    filemapFreeMemory(map);
+    delete map;
 
     if (IO)
         delete IO;
@@ -321,8 +322,8 @@
     storeAppendPrintf(&sentry, "Percent Used: %0.2f%%\n",
                       Math::doublePercent(currentSize(), maxSize()));
     storeAppendPrintf(&sentry, "Filemap bits in use: %d of %d (%d%%)\n",
-                      map->n_files_in_map, map->max_n_files,
-                      Math::intPercent(map->n_files_in_map, map->max_n_files));
+                      map->numFilesInMap(), map->capacity(),
+                      Math::intPercent(map->numFilesInMap(), map->capacity()));
     x = storeDirGetUFSStats(path, &totl_kb, &free_kb, &totl_in, &free_in);
 
     if (0 == x) {
@@ -450,36 +451,36 @@
 int
 UFSSwapDir::mapBitTest(sfileno filn)
 {
-    return file_map_bit_test(map, filn);
+    return map->testBit(filn);
 }
 
 void
 UFSSwapDir::mapBitSet(sfileno filn)
 {
-    file_map_bit_set(map, filn);
+    map->setBit(filn);
 }
 
 void
 UFSSwapDir::mapBitReset(sfileno filn)
 {
     /*
-     * We have to test the bit before calling file_map_bit_reset.
-     * file_map_bit_reset doesn't do bounds checking.  It assumes
+     * We have to test the bit before calling clearBit as
+     * it doesn't do bounds checking and blindly assumes
      * filn is a valid file number, but it might not be because
      * the map is dynamic in size.  Also clearing an already clear
      * bit puts the map counter of-of-whack.
      */
 
-    if (file_map_bit_test(map, filn))
-        file_map_bit_reset(map, filn);
+    if (map->testBit(filn))
+        map->clearBit(filn);
 }
 
 int
 UFSSwapDir::mapBitAllocate()
 {
     int fn;
-    fn = file_map_allocate(map, suggest);
-    file_map_bit_set(map, fn);
+    fn = map->allocate(suggest);
+    map->setBit(fn);
     suggest = fn + 1;
     return fn;
 }
@@ -742,14 +743,15 @@
     file_close(swaplog_fd);
 
     if (xrename(new_path, swaplog_path) < 0) {
-        fatal("commonUfsDirCloseTmpSwapLog: rename failed");
+        debugs(50, DBG_IMPORTANT, "ERROR: " << swaplog_path << ": " << xstrerror());
+        fatalf("Failed to rename log file %s to %s.new", swaplog_path, swaplog_path);
     }
 
     fd = file_open(swaplog_path, O_WRONLY | O_CREAT | O_BINARY);
 
     if (fd < 0) {
-        debugs(50, 1, "" << swaplog_path << ": " << xstrerror());
-        fatal("commonUfsDirCloseTmpSwapLog: Failed to open swap log.");
+        debugs(50, DBG_IMPORTANT, "ERROR: " << swaplog_path << ": " << xstrerror());
+        fatalf("Failed to open swap log %s", swaplog_path);
     }
 
     safe_free(swaplog_path);
@@ -777,7 +779,6 @@
     struct stat clean_sb;
     FILE *fp;
     int fd;
-    StoreSwapLogHeader *head;
 
     if (::stat(swaplog_path, &log_sb) < 0) {
         debugs(47, 1, "Cache Dir #" << index << ": No log file");
@@ -803,10 +804,11 @@
 
     swaplog_fd = fd;
 
-    head = new StoreSwapLogHeader;
-
-    file_write(swaplog_fd, -1, head, head->record_size,
-               NULL, NULL, FreeHeader);
+    {
+        StoreSwapLogHeader *header = new StoreSwapLogHeader;
+        file_write(swaplog_fd, -1, header, sizeof(*header),
+                   NULL, NULL, FreeHeader);
+    }
 
     /* open a read-only stream of the old log */
     fp = fopen(swaplog_path, "rb");
@@ -1262,7 +1264,7 @@
      * be considered invalid.
      */
     if (flag)
-        if (filn > map->max_n_files)
+        if (filn > map->capacity())
             return 0;
 
     return 1;
@@ -1287,6 +1289,13 @@
     IO->unlinkFile(fullPath(f,NULL));
 }
 
+bool
+UFSSwapDir::unlinkdUseful() const
+{
+    // unlinkd may be useful only in workers
+    return IamWorkerProcess() && IO->io->unlinkdUseful();
+}
+
 void
 UFSSwapDir::unlink(StoreEntry & e)
 {
diff -u -r -N squid-3.2.0.13/src/fs/ufs/ufscommon.h squid-3.2.0.14/src/fs/ufs/ufscommon.h
--- squid-3.2.0.13/src/fs/ufs/ufscommon.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/fs/ufs/ufscommon.h	2011-12-13 00:08:18.000000000 +1300
@@ -40,6 +40,7 @@
 class ConfigOptionVector;
 class DiskIOModule;
 class StoreSearch;
+class FileMap;
 
 #include "SwapDir.h"
 
@@ -59,6 +60,7 @@
     ~UFSSwapDir();
     virtual StoreSearch *search(String const url, HttpRequest *);
     virtual bool doubleCheck(StoreEntry &);
+    virtual bool unlinkdUseful() const;
     virtual void unlink(StoreEntry &);
     virtual void statfs(StoreEntry &)const;
     virtual void maintain();
@@ -115,7 +117,7 @@
     void replacementRemove(StoreEntry *e);
 
 protected:
-    fileMap *map;
+    FileMap *map;
     int suggest;
     int l1;
     int l2;
diff -u -r -N squid-3.2.0.13/src/ftp.cc squid-3.2.0.14/src/ftp.cc
--- squid-3.2.0.13/src/ftp.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ftp.cc	2011-12-13 00:08:18.000000000 +1300
@@ -234,7 +234,7 @@
 
 public:
     // these should all be private
-    void start();
+    virtual void start();
     void loginParser(const char *, int escaped);
     int restartable();
     void appendSuccessHeader();
@@ -457,7 +457,7 @@
 {
     debugs(9, 4, HERE);
     ctrl.clear();
-    deleteThis("FtpStateData::ctrlClosed");
+    mustStop("FtpStateData::ctrlClosed");
 }
 
 /// handler called by Comm when FTP data channel is closed unexpectedly
@@ -1517,8 +1517,7 @@
 void
 ftpStart(FwdState * fwd)
 {
-    FtpStateData *ftpState = new FtpStateData(fwd, fwd->serverConnection());
-    ftpState->start();
+    AsyncJob::Start(new FtpStateData(fwd, fwd->serverConnection()));
 }
 
 void
@@ -1898,16 +1897,16 @@
     if ((state == SENT_USER || state == SENT_PASS) && ctrl.replycode >= 400) {
         if (ctrl.replycode == 421 || ctrl.replycode == 426) {
             // 421/426 - Service Overload - retry permitted.
-            err = errorCon(ERR_FTP_UNAVAILABLE, HTTP_SERVICE_UNAVAILABLE, fwd->request);
+            err = new ErrorState(ERR_FTP_UNAVAILABLE, HTTP_SERVICE_UNAVAILABLE, fwd->request);
         } else if (ctrl.replycode >= 430 && ctrl.replycode <= 439) {
             // 43x - Invalid or Credential Error - retry challenge required.
-            err = errorCon(ERR_FTP_FORBIDDEN, HTTP_UNAUTHORIZED, fwd->request);
+            err = new ErrorState(ERR_FTP_FORBIDDEN, HTTP_UNAUTHORIZED, fwd->request);
         } else if (ctrl.replycode >= 530 && ctrl.replycode <= 539) {
             // 53x - Credentials Missing - retry challenge required
             if (password_url) // but they were in the URI! major fail.
-                err = errorCon(ERR_FTP_FORBIDDEN, HTTP_FORBIDDEN, fwd->request);
+                err = new ErrorState(ERR_FTP_FORBIDDEN, HTTP_FORBIDDEN, fwd->request);
             else
-                err = errorCon(ERR_FTP_FORBIDDEN, HTTP_UNAUTHORIZED, fwd->request);
+                err = new ErrorState(ERR_FTP_FORBIDDEN, HTTP_UNAUTHORIZED, fwd->request);
         }
     }
 
@@ -1942,7 +1941,7 @@
 
 
     HttpReply *newrep = err->BuildHttpReply();
-    errorStateFree(err);
+    delete err;
 
 #if HAVE_AUTH_MODULE_BASIC
     /* add Authenticate header */
@@ -2468,6 +2467,7 @@
 
     ftpState->data.port = port;
 
+    safe_free(ftpState->data.host);
     ftpState->data.host = xstrdup(fd_table[ftpState->ctrl.conn->fd].ipaddr);
 
     safe_free(ftpState->ctrl.last_command);
@@ -2713,6 +2713,7 @@
 
     ftpState->data.port = port;
 
+    safe_free(ftpState->data.host);
     if (Config.Ftp.sanitycheck)
         ftpState->data.host = xstrdup(fd_table[ftpState->ctrl.conn->fd].ipaddr);
     else
@@ -2771,7 +2772,7 @@
         ftpState->data.clear();
     else
         ftpState->data.close();
-    ftpState->data.host = NULL;
+    safe_free(ftpState->data.host);
 
     /*
      * Set up a listen socket on the same local address as the
@@ -2981,7 +2982,9 @@
     /** On COMM_OK start using the accepted data socket and discard the temporary listen socket. */
     data.close();
     data.opened(io.conn, dataCloser());
-    io.conn->remote.NtoA(data.host,SQUIDHOSTNAMELEN);
+    static char ntoapeer[MAX_IPSTRLEN];
+    io.conn->remote.NtoA(ntoapeer,sizeof(ntoapeer));
+    data.host = xstrdup(ntoapeer);
 
     debugs(9, 3, HERE << "Connected data socket on " <<
            io.conn << ". FD table says: " <<
@@ -3264,13 +3267,12 @@
 {
     assert(entry);
     entry->lock();
-    ErrorState *ferr = errorCon(ERR_DIR_LISTING, HTTP_OK, request);
-    ferr->ftp.listing = &listing;
-    ferr->ftp.cwd_msg = xstrdup(cwd_message.size()? cwd_message.termedBuf() : "");
-    ferr->ftp.server_msg = ctrl.message;
+    ErrorState ferr(ERR_DIR_LISTING, HTTP_OK, request);
+    ferr.ftp.listing = &listing;
+    ferr.ftp.cwd_msg = xstrdup(cwd_message.size()? cwd_message.termedBuf() : "");
+    ferr.ftp.server_msg = ctrl.message;
     ctrl.message = NULL;
-    entry->replaceHttpReply( ferr->BuildHttpReply() );
-    errorStateFree(ferr);
+    entry->replaceHttpReply( ferr.BuildHttpReply() );
     EBIT_CLR(entry->flags, ENTRY_FWD_HDR_WAIT);
     entry->flush();
     entry->unlock();
@@ -3472,12 +3474,10 @@
 void
 FtpStateData::failedErrorMessage(err_type error, int xerrno)
 {
-    ErrorState *ftperr;
+    ErrorState *ftperr = NULL;
     const char *command, *reply;
 
     /* Translate FTP errors into HTTP errors */
-    ftperr = NULL;
-
     switch (error) {
 
     case ERR_NONE:
@@ -3490,12 +3490,12 @@
 
             if (ctrl.replycode > 500)
                 if (password_url)
-                    ftperr = errorCon(ERR_FTP_FORBIDDEN, HTTP_FORBIDDEN, fwd->request);
+                    ftperr = new ErrorState(ERR_FTP_FORBIDDEN, HTTP_FORBIDDEN, fwd->request);
                 else
-                    ftperr = errorCon(ERR_FTP_FORBIDDEN, HTTP_UNAUTHORIZED, fwd->request);
+                    ftperr = new ErrorState(ERR_FTP_FORBIDDEN, HTTP_UNAUTHORIZED, fwd->request);
 
             else if (ctrl.replycode == 421)
-                ftperr = errorCon(ERR_FTP_UNAVAILABLE, HTTP_SERVICE_UNAVAILABLE, fwd->request);
+                ftperr = new ErrorState(ERR_FTP_UNAVAILABLE, HTTP_SERVICE_UNAVAILABLE, fwd->request);
 
             break;
 
@@ -3503,7 +3503,7 @@
 
         case SENT_RETR:
             if (ctrl.replycode == 550)
-                ftperr = errorCon(ERR_FTP_NOT_FOUND, HTTP_NOT_FOUND, fwd->request);
+                ftperr = new ErrorState(ERR_FTP_NOT_FOUND, HTTP_NOT_FOUND, fwd->request);
 
             break;
 
@@ -3514,16 +3514,16 @@
         break;
 
     case ERR_READ_TIMEOUT:
-        ftperr = errorCon(error, HTTP_GATEWAY_TIMEOUT, fwd->request);
+        ftperr = new ErrorState(error, HTTP_GATEWAY_TIMEOUT, fwd->request);
         break;
 
     default:
-        ftperr = errorCon(error, HTTP_BAD_GATEWAY, fwd->request);
+        ftperr = new ErrorState(error, HTTP_BAD_GATEWAY, fwd->request);
         break;
     }
 
     if (ftperr == NULL)
-        ftperr = errorCon(ERR_FTP_FAILURE, HTTP_BAD_GATEWAY, fwd->request);
+        ftperr = new ErrorState(ERR_FTP_FAILURE, HTTP_BAD_GATEWAY, fwd->request);
 
     ftperr->xerrno = xerrno;
 
@@ -3550,14 +3550,13 @@
         ftperr->ftp.reply = xstrdup(reply);
 
     entry->replaceHttpReply( ftperr->BuildHttpReply() );
-    errorStateFree(ftperr);
+    delete ftperr;
 }
 
 /// \ingroup ServerProtocolFTPInternal
 static void
 ftpSendReply(FtpStateData * ftpState)
 {
-    ErrorState *err;
     int code = ftpState->ctrl.replycode;
     http_status http_code;
     err_type err_code = ERR_NONE;
@@ -3581,22 +3580,21 @@
     if (ftpState->request)
         ftpState->request->detailError(err_code, code);
 
-    err = errorCon(err_code, http_code, ftpState->request);
+    ErrorState err(err_code, http_code, ftpState->request);
 
     if (ftpState->old_request)
-        err->ftp.request = xstrdup(ftpState->old_request);
+        err.ftp.request = xstrdup(ftpState->old_request);
     else
-        err->ftp.request = xstrdup(ftpState->ctrl.last_command);
+        err.ftp.request = xstrdup(ftpState->ctrl.last_command);
 
     if (ftpState->old_reply)
-        err->ftp.reply = xstrdup(ftpState->old_reply);
+        err.ftp.reply = xstrdup(ftpState->old_reply);
     else if (ftpState->ctrl.last_reply)
-        err->ftp.reply = xstrdup(ftpState->ctrl.last_reply);
+        err.ftp.reply = xstrdup(ftpState->ctrl.last_reply);
     else
-        err->ftp.reply = xstrdup("");
+        err.ftp.reply = xstrdup("");
 
-    ftpState->entry->replaceHttpReply( err->BuildHttpReply() );
-    errorStateFree(err);
+    ftpState->entry->replaceHttpReply( err.BuildHttpReply() );
 
     ftpSendQuit(ftpState);
 }
@@ -3706,9 +3704,8 @@
 HttpReply *
 FtpStateData::ftpAuthRequired(HttpRequest * request, const char *realm)
 {
-    ErrorState *err = errorCon(ERR_CACHE_ACCESS_DENIED, HTTP_UNAUTHORIZED, request);
-    HttpReply *newrep = err->BuildHttpReply();
-    errorStateFree(err);
+    ErrorState err(ERR_CACHE_ACCESS_DENIED, HTTP_UNAUTHORIZED, request);
+    HttpReply *newrep = err.BuildHttpReply();
 #if HAVE_AUTH_MODULE_BASIC
     /* add Authenticate header */
     newrep->header.putAuth("Basic", realm);
@@ -3877,7 +3874,7 @@
     }
 
     fwd->handleUnregisteredServerEnd();
-    deleteThis("FtpStateData::abortTransaction");
+    mustStop("FtpStateData::abortTransaction");
 }
 
 /// creates a data channel Comm close callback
diff -u -r -N squid-3.2.0.13/src/gopher.cc squid-3.2.0.14/src/gopher.cc
--- squid-3.2.0.13/src/gopher.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/gopher.cc	2011-12-13 00:08:18.000000000 +1300
@@ -141,7 +141,7 @@
     char replybuf[BUFSIZ];
 } GopherStateData;
 
-static PF gopherStateFree;
+static CLCB gopherStateFree;
 static void gopherMimeCreate(GopherStateData *);
 static void gopher_request_parse(const HttpRequest * req,
                                  char *type_id,
@@ -161,9 +161,9 @@
 
 /// \ingroup ServerProtocolGopherInternal
 static void
-gopherStateFree(int, void *data)
+gopherStateFree(const CommCloseCbParams &params)
 {
-    GopherStateData *gopherState = (GopherStateData *)data;
+    GopherStateData *gopherState = (GopherStateData *)params.data;
 
     if (gopherState == NULL)
         return;
@@ -721,7 +721,7 @@
     GopherStateData *gopherState = static_cast<GopherStateData *>(io.data);
     debugs(10, 4, HERE << io.conn << ": '" << gopherState->entry->url() << "'" );
 
-    gopherState->fwd->fail(errorCon(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT, gopherState->fwd->request));
+    gopherState->fwd->fail(new ErrorState(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT, gopherState->fwd->request));
 
     if (Comm::IsConnOpen(io.conn))
         io.conn->close();
@@ -800,14 +800,13 @@
                                                  CommIoCbPtrFun(gopherReadReply, gopherState));
             comm_read(conn, buf, read_sz, call);
         } else {
-            ErrorState *err;
-            err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR, gopherState->fwd->request);
+            ErrorState *err = new ErrorState(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR, gopherState->fwd->request);
             err->xerrno = errno;
             gopherState->fwd->fail(err);
             gopherState->serverConn->close();
         }
     } else if (len == 0 && entry->isEmpty()) {
-        gopherState->fwd->fail(errorCon(ERR_ZERO_SIZE_OBJECT, HTTP_SERVICE_UNAVAILABLE, gopherState->fwd->request));
+        gopherState->fwd->fail(new ErrorState(ERR_ZERO_SIZE_OBJECT, HTTP_SERVICE_UNAVAILABLE, gopherState->fwd->request));
         gopherState->serverConn->close();
     } else if (len == 0) {
         /* Connection closed; retrieval done. */
@@ -851,7 +850,7 @@
 
     if (errflag) {
         ErrorState *err;
-        err = errorCon(ERR_WRITE_ERROR, HTTP_SERVICE_UNAVAILABLE, gopherState->fwd->request);
+        err = new ErrorState(ERR_WRITE_ERROR, HTTP_SERVICE_UNAVAILABLE, gopherState->fwd->request);
         err->xerrno = errno;
         err->port = gopherState->fwd->request->port;
         err->url = xstrdup(entry->url());
diff -u -r -N squid-3.2.0.13/src/helper.cc squid-3.2.0.14/src/helper.cc
--- squid-3.2.0.13/src/helper.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/helper.cc	2011-12-13 00:08:18.000000000 +1300
@@ -33,6 +33,7 @@
  */
 
 #include "squid.h"
+#include "base/AsyncCbdataCalls.h"
 #include "comm.h"
 #include "comm/Connection.h"
 #include "comm/Write.h"
@@ -53,8 +54,8 @@
 
 static IOCB helperHandleRead;
 static IOCB helperStatefulHandleRead;
-static PF helperServerFree;
-static PF helperStatefulServerFree;
+static void helperServerFree(helper_server *srv);
+static void helperStatefulServerFree(helper_stateful_server *srv);
 static void Enqueue(helper * hlp, helper_request *);
 static helper_request *Dequeue(helper * hlp);
 static helper_stateful_request *StatefulDequeue(statefulhelper * hlp);
@@ -233,7 +234,8 @@
         if (wfd != rfd)
             commSetNonBlocking(wfd);
 
-        comm_add_close_handler(rfd, helperServerFree, srv);
+        AsyncCall::Pointer closeCall = asyncCall(5,4, "helperServerFree", cbdataDialer(helperServerFree, srv));
+        comm_add_close_handler(rfd, closeCall);
 
         AsyncCall::Pointer call = commCbCall(5,4, "helperHandleRead",
                                              CommIoCbPtrFun(helperHandleRead, srv));
@@ -353,7 +355,8 @@
         if (wfd != rfd)
             commSetNonBlocking(wfd);
 
-        comm_add_close_handler(rfd, helperStatefulServerFree, srv);
+        AsyncCall::Pointer closeCall = asyncCall(5,4, "helperStatefulServerFree", cbdataDialer(helperStatefulServerFree, srv));
+        comm_add_close_handler(rfd, closeCall);
 
         AsyncCall::Pointer call = commCbCall(5,4, "helperStatefulHandleRead",
                                              CommIoCbPtrFun(helperStatefulHandleRead, srv));
@@ -669,9 +672,8 @@
 /* ====================================================================== */
 
 static void
-helperServerFree(int fd, void *data)
+helperServerFree(helper_server *srv)
 {
-    helper_server *srv = (helper_server *)data;
     helper *hlp = srv->parent;
     helper_request *r;
     int i, concurrency = hlp->childs.concurrency;
@@ -704,7 +706,7 @@
     if (!srv->flags.shutdown) {
         assert(hlp->childs.n_active > 0);
         hlp->childs.n_active--;
-        debugs(84, DBG_CRITICAL, "WARNING: " << hlp->id_name << " #" << srv->index + 1 << " (FD " << fd << ") exited");
+        debugs(84, DBG_CRITICAL, "WARNING: " << hlp->id_name << " #" << srv->index + 1 << " exited");
 
         if (hlp->childs.needNew() > 0) {
             debugs(80, 1, "Too few " << hlp->id_name << " processes are running (need " << hlp->childs.needNew() << "/" << hlp->childs.n_max << ")");
@@ -736,9 +738,8 @@
 }
 
 static void
-helperStatefulServerFree(int fd, void *data)
+helperStatefulServerFree(helper_stateful_server *srv)
 {
-    helper_stateful_server *srv = (helper_stateful_server *)data;
     statefulhelper *hlp = srv->parent;
     helper_stateful_request *r;
 
@@ -766,7 +767,7 @@
     if (!srv->flags.shutdown) {
         assert( hlp->childs.n_active > 0);
         hlp->childs.n_active--;
-        debugs(84, 0, "WARNING: " << hlp->id_name << " #" << srv->index + 1 << " (FD " << fd << ") exited");
+        debugs(84, 0, "WARNING: " << hlp->id_name << " #" << srv->index + 1 << " exited");
 
         if (hlp->childs.needNew() > 0) {
             debugs(80, 1, "Too few " << hlp->id_name << " processes are running (need " << hlp->childs.needNew() << "/" << hlp->childs.n_max << ")");
diff -u -r -N squid-3.2.0.13/src/helper.h squid-3.2.0.14/src/helper.h
--- squid-3.2.0.13/src/helper.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/helper.h	2011-12-13 00:08:18.000000000 +1300
@@ -34,6 +34,7 @@
 #define SQUID_HELPER_H
 
 #include "squid.h"
+#include "base/AsyncCall.h"
 #include "cbdata.h"
 #include "comm/forward.h"
 #include "ip/Address.h"
@@ -144,6 +145,9 @@
         int uses;
         unsigned int pending;
     } stats;
+
+private:
+    CBDATA_CLASS2(helper_server);
 };
 
 class helper_stateful_request;
@@ -163,6 +167,9 @@
         int releases;
     } stats;
     void *data;			/* State data used by the calling routines */
+
+private:
+    CBDATA_CLASS2(helper_stateful_server);
 };
 
 class helper_request
diff -u -r -N squid-3.2.0.13/src/htcp.cc squid-3.2.0.14/src/htcp.cc
--- squid-3.2.0.13/src/htcp.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/htcp.cc	2011-12-13 00:08:18.000000000 +1300
@@ -49,6 +49,7 @@
 #include "SquidTime.h"
 #include "Store.h"
 #include "StoreClient.h"
+#include "compat/xalloc.h"
 
 /// dials htcpIncomingConnectionOpened call
 class HtcpListeningStartedDialer: public CallDialer,
diff -u -r -N squid-3.2.0.13/src/HttpBody.cc squid-3.2.0.14/src/HttpBody.cc
--- squid-3.2.0.13/src/HttpBody.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/HttpBody.cc	2011-12-13 00:08:18.000000000 +1300
@@ -34,43 +34,41 @@
  */
 
 #include "squid.h"
+#include "HttpBody.h"
 #include "MemBuf.h"
 
 
-void
-httpBodyInit(HttpBody * body)
+HttpBody::HttpBody() : mb(new MemBuf)
+{}
+
+HttpBody::~HttpBody()
 {
-    body->mb = new MemBuf;
+    delete mb;
 }
 
 void
-httpBodyClean(HttpBody * body)
+HttpBody::clear()
 {
-    assert(body);
-
-    if (!body->mb->isNull())
-        body->mb->clean();
-
-    delete body->mb;
-
-    body->mb = NULL;
+    mb->clean();
 }
 
 /* set body by absorbing mb */
 void
-httpBodySet(HttpBody * body, MemBuf * mb)
+HttpBody::setMb(MemBuf * mb_)
 {
-    assert(body);
-    assert(body->mb->isNull());
-    delete body->mb;
-    body->mb = mb;		/* absorb */
+    delete mb;
+    /* note: protection against assign-to-self is not needed
+     * as MemBuf doesn't have a copy-constructor. If such a constructor
+     * is ever added, add such protection here.
+     */
+    mb = mb_;		/* absorb */
 }
 
 void
-httpBodyPackInto(const HttpBody * body, Packer * p)
+HttpBody::packInto(Packer * p) const
 {
-    assert(body && p);
+    assert(p);
 
-    if (body->mb->contentSize())
-        packerAppend(p, body->mb->content(), body->mb->contentSize());
+    if (mb->contentSize())
+        packerAppend(p, mb->content(), mb->contentSize());
 }
diff -u -r -N squid-3.2.0.13/src/HttpBody.h squid-3.2.0.14/src/HttpBody.h
--- squid-3.2.0.13/src/HttpBody.h	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/HttpBody.h	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,78 @@
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ *  Author: kinkie
+ *
+ */
+
+#ifndef HTTPBODY_H_
+#define HTTPBODY_H_
+
+#include "MemBuf.h"
+class Packer;
+
+/** Representation of a short predetermined message
+ *
+ * This class is useful to represent short HTTP messages, whose
+ * contents are known in advance, e.g. error messages
+ */
+class HttpBody
+{
+public:
+    HttpBody();
+    ~HttpBody();
+    /** absorb the MemBuf, discarding anything currently stored
+     *
+     * After this call the lifetime of the passed MemBuf is managed
+     * by the HttpBody.
+     */
+    void setMb(MemBuf *);
+    /** output the HttpBody contents into the supplied packer
+     *
+     * \note content is not cleared by the output operation
+     */
+    void packInto(Packer *) const;
+
+    /// clear the HttpBody content
+    void clear();
+
+    /// \return true if there is any content in the HttpBody
+    bool hasContent() const { return (mb->contentSize()>0); }
+
+    /// \return size of the HttpBody's message content
+    mb_size_t contentSize() const { return mb->contentSize(); }
+
+    /// \return pointer to the storage of the HttpBody
+    char *content() const { return mb->content(); }
+private:
+    HttpBody& operator=(const HttpBody&); //not implemented
+    HttpBody(const HttpBody&); // not implemented
+    MemBuf *mb;
+};
+
+
+#endif /* HTTPBODY_H_ */
diff -u -r -N squid-3.2.0.13/src/http.cc squid-3.2.0.14/src/http.cc
--- squid-3.2.0.13/src/http.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/http.cc	2011-12-13 00:08:18.000000000 +1300
@@ -154,20 +154,11 @@
     return serverConnection;
 }
 
-/*
-static void
-httpStateFree(int fd, void *data)
-{
-    HttpStateData *httpState = static_cast<HttpStateData *>(data);
-    debugs(11, 5, "httpStateFree: FD " << fd << ", httpState=" << data);
-    delete httpState;
-}*/
-
 void
 HttpStateData::httpStateConnClosed(const CommCloseCbParams &params)
 {
     debugs(11, 5, "httpStateFree: FD " << params.fd << ", httpState=" << params.data);
-    deleteThis("HttpStateData::httpStateConnClosed");
+    mustStop("HttpStateData::httpStateConnClosed");
 }
 
 int
@@ -189,7 +180,7 @@
     debugs(11, 4, HERE << serverConnection << ": '" << entry->url() << "'" );
 
     if (entry->store_status == STORE_PENDING) {
-        fwd->fail(errorCon(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT, fwd->request));
+        fwd->fail(new ErrorState(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT, fwd->request));
     }
 
     serverConnection->close();
@@ -294,12 +285,12 @@
 HttpStateData::processSurrogateControl(HttpReply *reply)
 {
     if (request->flags.accelerated && reply->surrogate_control) {
-        HttpHdrScTarget *sctusable = httpHdrScGetMergedTarget(reply->surrogate_control, Config.Accel.surrogate_id);
+        HttpHdrScTarget *sctusable = reply->surrogate_control->getMergedTarget(Config.Accel.surrogate_id);
 
         if (sctusable) {
-            if (EBIT_TEST(sctusable->mask, SC_NO_STORE) ||
+            if (sctusable->noStore() ||
                     (Config.onoff.surrogate_is_remote
-                     && EBIT_TEST(sctusable->mask, SC_NO_STORE_REMOTE))) {
+                     && sctusable->noStoreRemote())) {
                 surrogateNoStore = true;
                 entry->makePrivate();
             }
@@ -308,11 +299,11 @@
              * accelerated request or not...
              * Still, this is an abstraction breach. - RC
              */
-            if (sctusable->max_age != -1) {
-                if (sctusable->max_age < sctusable->max_stale)
-                    reply->expires = reply->date + sctusable->max_age;
+            if (sctusable->hasMaxAge()) {
+                if (sctusable->maxAge() < sctusable->maxStale())
+                    reply->expires = reply->date + sctusable->maxAge();
                 else
-                    reply->expires = reply->date + sctusable->max_stale;
+                    reply->expires = reply->date + sctusable->maxStale();
 
                 /* And update the timestamps */
                 entry->timestampsSet();
@@ -321,7 +312,7 @@
             /* We ignore cache-control directives as per the Surrogate specification */
             ignoreCacheControl = true;
 
-            httpHdrScTargetDestroy(sctusable);
+            delete sctusable;
         }
     }
 }
@@ -382,7 +373,7 @@
          * RFC 2068, sec 14.9.4
          */
 
-        if (!request->cache_control->Public()) {
+        if (!request->cache_control || !request->cache_control->Public()) {
             if (!REFRESH_OVERRIDE(ignore_auth))
                 return 0;
         }
@@ -1085,8 +1076,7 @@
         if (ignoreErrno(io.xerrno)) {
             flags.do_next_read = 1;
         } else {
-            ErrorState *err;
-            err = errorCon(ERR_READ_ERROR, HTTP_BAD_GATEWAY, fwd->request);
+            ErrorState *err = new ErrorState(ERR_READ_ERROR, HTTP_BAD_GATEWAY, fwd->request);
             err->xerrno = io.xerrno;
             fwd->fail(err);
             flags.do_next_read = 0;
@@ -1255,7 +1245,7 @@
 
     assert(error != ERR_NONE);
     entry->reset();
-    fwd->fail(errorCon(error, HTTP_BAD_GATEWAY, fwd->request));
+    fwd->fail(new ErrorState(error, HTTP_BAD_GATEWAY, fwd->request));
     flags.do_next_read = 0;
     serverConnection->close();
     return false; // quit on error
@@ -1483,8 +1473,7 @@
         return;
 
     if (io.flag) {
-        ErrorState *err;
-        err = errorCon(ERR_WRITE_ERROR, HTTP_BAD_GATEWAY, fwd->request);
+        ErrorState *err = new ErrorState(ERR_WRITE_ERROR, HTTP_BAD_GATEWAY, fwd->request);
         err->xerrno = io.xerrno;
         fwd->fail(err);
         serverConnection->close();
@@ -2181,11 +2170,15 @@
 httpStart(FwdState *fwd)
 {
     debugs(11, 3, "httpStart: \"" << RequestMethodStr(fwd->request->method) << " " << fwd->entry->url() << "\"" );
-    HttpStateData *httpState = new HttpStateData(fwd);
+    AsyncJob::Start(new HttpStateData(fwd));
+}
 
-    if (!httpState->sendRequest()) {
+void
+HttpStateData::start()
+{
+    if (!sendRequest()) {
         debugs(11, 3, "httpStart: aborted");
-        delete httpState;
+        mustStop("HttpStateData::start failed");
         return;
     }
 
@@ -2303,12 +2296,11 @@
     ServerStateData::handleRequestBodyProducerAborted();
     if (entry->isEmpty()) {
         debugs(11, 3, "request body aborted: " << serverConnection);
-        ErrorState *err;
         // We usually get here when ICAP REQMOD aborts during body processing.
         // We might also get here if client-side aborts, but then our response
         // should not matter because either client-side will provide its own or
         // there will be no response at all (e.g., if the the client has left).
-        err = errorCon(ERR_ICAP_FAILURE, HTTP_INTERNAL_SERVER_ERROR, fwd->request);
+        ErrorState *err = new ErrorState(ERR_ICAP_FAILURE, HTTP_INTERNAL_SERVER_ERROR, fwd->request);
         err->xerrno = ERR_DETAIL_SRV_REQMOD_REQ_BODY;
         fwd->fail(err);
     }
@@ -2341,5 +2333,5 @@
     }
 
     fwd->handleUnregisteredServerEnd();
-    deleteThis("HttpStateData::abortTransaction");
+    mustStop("HttpStateData::abortTransaction");
 }
diff -u -r -N squid-3.2.0.13/src/http.h squid-3.2.0.14/src/http.h
--- squid-3.2.0.13/src/http.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/http.h	2011-12-13 00:08:18.000000000 +1300
@@ -102,6 +102,7 @@
     bool continueAfterParsingHeader();
     void truncateVirginBody();
 
+    virtual void start();
     virtual void haveParsedReplyHeaders();
     virtual bool getMoreRequestBody(MemBuf &buf);
     virtual void closeServer(); // end communication with the server
diff -u -r -N squid-3.2.0.13/src/HttpHdrCc.h squid-3.2.0.14/src/HttpHdrCc.h
--- squid-3.2.0.13/src/HttpHdrCc.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/HttpHdrCc.h	2011-12-13 00:08:18.000000000 +1300
@@ -32,7 +32,6 @@
 #ifndef SQUID_HTTPHDRCC_H
 #define SQUID_HTTPHDRCC_H
 
-#include "config.h"
 #include "MemPool.h"
 #include "SquidString.h"
 
diff -u -r -N squid-3.2.0.13/src/HttpHdrSc.cc squid-3.2.0.14/src/HttpHdrSc.cc
--- squid-3.2.0.13/src/HttpHdrSc.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/HttpHdrSc.cc	2011-12-13 00:08:18.000000000 +1300
@@ -6,6 +6,7 @@
  * AUTHOR: Alex Rousskov
  *         Robert Collins (Surrogate-Control is derived from
  *         		   Cache-Control).
+ *         Francesco Chemolli (c++ refactoring)
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
  * ----------------------------------------------------------
@@ -40,10 +41,22 @@
 #include "HttpHeader.h"
 #include "HttpHdrSc.h"
 
+#if HAVE_MAP
+#include <map>
+#endif
+
+/* a row in the table used for parsing surrogate-control header and statistics */
+typedef struct {
+    const char *name;
+    http_hdr_sc_type id;
+    HttpHeaderFieldStat stat;
+} HttpHeaderScFields;
+
 /* this table is used for parsing surrogate control header */
+/* order must match that of enum http_hdr_sc_type. The constraint is verified at initialization time */
+//todo: implement constraint
 static const HttpHeaderFieldAttrs ScAttrs[SC_ENUM_END] = {
     {"no-store", (http_hdr_type)SC_NO_STORE},
-
     {"no-store-remote", (http_hdr_type)SC_NO_STORE_REMOTE},
     {"max-age", (http_hdr_type)SC_MAX_AGE},
     {"content", (http_hdr_type)SC_CONTENT},
@@ -65,9 +78,6 @@
 }
 
 
-/* local prototypes */
-static int httpHdrScParseInit(HttpHdrSc * sc, const String * str);
-
 /* module initialization */
 
 void
@@ -85,20 +95,14 @@
 
 /* implementation */
 
-HttpHdrSc *
-httpHdrScCreate(void)
-{
-    return new HttpHdrSc();
-}
-
 /* creates an sc object from a 0-terminating string */
 HttpHdrSc *
-httpHdrScParseCreate(const String * str)
+httpHdrScParseCreate(const String & str)
 {
-    HttpHdrSc *sc = httpHdrScCreate();
+    HttpHdrSc *sc = new HttpHdrSc();
 
-    if (!httpHdrScParseInit(sc, str)) {
-        httpHdrScDestroy(sc);
+    if (!sc->parse(&str)) {
+        delete sc;
         sc = NULL;
     }
 
@@ -106,9 +110,10 @@
 }
 
 /* parses a 0-terminating string and inits sc */
-static int
-httpHdrScParseInit(HttpHdrSc * sc, const String * str)
+bool
+HttpHdrSc::parse(const String * str)
 {
+    HttpHdrSc * sc=this;
     const char *item;
     const char *p;		/* '=' parameter */
     const char *pos = NULL;
@@ -118,7 +123,7 @@
     int ilen, vlen;
     int initiallen;
     HttpHdrScTarget *sct;
-    assert(sc && str);
+    assert(str);
 
     /* iterate through comma separated list */
 
@@ -138,6 +143,7 @@
             ilen = p++ - item;
 
         /* find type */
+        /* TODO: use a type-safe map-based lookup */
         type = httpHeaderIdByName(item, ilen,
                                   ScFieldsInfo, SC_ENUM_END);
 
@@ -147,7 +153,7 @@
         }
 
         /* Is this a targeted directive? */
-        /* TODO sometime: implement a strnrchr that looks at a substring */
+        /* TODO: remove the temporary useage and use memrchr and the information we have instead */
         temp = xstrndup (item, initiallen + 1);
 
         if (!((target = strrchr (temp, ';')) && !strchr (target, '"') && *(target + 1) != '\0'))
@@ -155,16 +161,16 @@
         else
             ++target;
 
-        sct = httpHdrScFindTarget (sc, target);
+        sct = sc->findTarget(target);
 
         if (!sct) {
-            sct = httpHdrScTargetCreate (target);
-            dlinkAdd(sct, &sct->node, &sc->targets);
+            sct = new HttpHdrScTarget(target);
+            addTarget(sct);
         }
 
         safe_free (temp);
 
-        if (EBIT_TEST(sct->mask, type)) {
+        if (sct->isSet(static_cast<http_hdr_sc_type>(type))) {
             if (type != SC_OTHER)
                 debugs(90, 2, "hdr sc: ignoring duplicate control-directive: near '" << item << "' in '" << str << "'");
 
@@ -173,37 +179,50 @@
             continue;
         }
 
-        /* update mask */
-        EBIT_SET(sct->mask, type);
-
-        /* post-processing special cases */
+        /* process directives */
         switch (type) {
+        case SC_NO_STORE:
+            sct->noStore(true);
+            break;
 
-        case SC_MAX_AGE:
+        case SC_NO_STORE_REMOTE:
+            sct->noStoreRemote(true);
+            break;
 
-            if (!p || !httpHeaderParseInt(p, &sct->max_age)) {
+        case SC_MAX_AGE: {
+            int ma;
+            if (p && httpHeaderParseInt(p, &ma)) {
+                sct->maxAge(ma);
+            } else {
                 debugs(90, 2, "sc: invalid max-age specs near '" << item << "'");
-                sct->max_age = -1;
-                EBIT_CLR(sct->mask, type);
+                sct->clearMaxAge();
             }
 
-            if ((p = strchr (p, '+')))
-                if (!httpHeaderParseInt(++p, &sct->max_stale)) {
+            if ((p = strchr (p, '+'))) {
+                int ms;
+                ++p; //skip the + char
+                if (httpHeaderParseInt(p, &ms)) {
+                    sct->maxStale(ms);
+                } else {
                     debugs(90, 2, "sc: invalid max-stale specs near '" << item << "'");
-                    sct->max_stale = 0;
+                    sct->clearMaxStale();
                     /* leave the max-age alone */
                 }
-
+            }
             break;
+        }
 
         case SC_CONTENT:
 
-            if (!p || !httpHeaderParseQuotedString(p, vlen, &sct->content)) {
+            if ( p && httpHeaderParseQuotedString(p, vlen, &sct->content_)) {
+                sct->setMask(SC_CONTENT,true); // ugly but saves a copy
+            } else {
                 debugs(90, 2, "sc: invalid content= quoted string near '" << item << "'");
-                sct->content.clean();
-                EBIT_CLR(sct->mask, type);
+                sct->clearContent();
             }
+            break;
 
+        case SC_OTHER:
         default:
             break;
         }
@@ -212,53 +231,41 @@
     return sc->targets.head != NULL;
 }
 
-void
-httpHdrScDestroy(HttpHdrSc * sc)
+HttpHdrSc::~HttpHdrSc()
 {
-    assert(sc);
-
-    if (sc->targets.head) {
-        dlink_node *sct = sc->targets.head;
+    if (targets.head) {
+        dlink_node *sct = targets.head;
 
         while (sct) {
-            HttpHdrScTarget *t = (HttpHdrScTarget *)sct->data;
+            HttpHdrScTarget *t = static_cast<HttpHdrScTarget *>(sct->data);
             sct = sct->next;
-            dlinkDelete (&t->node, &sc->targets);
-            httpHdrScTargetDestroy (t);
+            dlinkDelete (&t->node, &targets);
+            delete t;
         }
     }
-
-    delete sc;
 }
 
-HttpHdrSc *
-httpHdrScDup(const HttpHdrSc * sc)
+
+HttpHdrSc::HttpHdrSc(const HttpHdrSc &sc)
 {
-    HttpHdrSc *dup;
-    dlink_node *node;
-    assert(sc);
-    node = sc->targets.head;
-    dup = httpHdrScCreate();
+    dlink_node *node = sc.targets.head;
 
     while (node) {
-        HttpHdrScTarget *dupsct;
-        dupsct = httpHdrScTargetDup ((HttpHdrScTarget *)node->data);
-        dlinkAddTail (dupsct, &dupsct->node, &dup->targets);
+        HttpHdrScTarget *dupsct = new HttpHdrScTarget(*static_cast<HttpHdrScTarget *>(node->data));
+        addTargetAtTail(dupsct);
         node = node->next;
     }
-
-    return dup;
 }
 
 void
-httpHdrScTargetPackInto(const HttpHdrScTarget * sc, Packer * p)
+HttpHdrScTarget::packInto(Packer * p) const
 {
     http_hdr_sc_type flag;
     int pcount = 0;
-    assert(sc && p);
+    assert (p);
 
     for (flag = SC_NO_STORE; flag < SC_ENUM_END; ++flag) {
-        if (EBIT_TEST(sc->mask, flag) && flag != SC_OTHER) {
+        if (isSet(flag) && flag != SC_OTHER) {
 
             /* print option name */
             packerPrintf(p, (pcount ? ", " SQUIDSTRINGPH : SQUIDSTRINGPH),
@@ -267,73 +274,53 @@
             /* handle options with values */
 
             if (flag == SC_MAX_AGE)
-                packerPrintf(p, "=%d", (int) sc->max_age);
+                packerPrintf(p, "=%d", (int) max_age);
 
             if (flag == SC_CONTENT)
-                packerPrintf(p, "=\"" SQUIDSTRINGPH "\"", SQUIDSTRINGPRINT(sc->content));
+                packerPrintf(p, "=\"" SQUIDSTRINGPH "\"", SQUIDSTRINGPRINT(content_));
 
             pcount++;
         }
     }
 
-    if (sc->target.size())
-        packerPrintf (p, ";" SQUIDSTRINGPH, SQUIDSTRINGPRINT(sc->target));
+    if (hasTarget())
+        packerPrintf (p, ";" SQUIDSTRINGPH, SQUIDSTRINGPRINT(target));
 }
 
 void
-httpHdrScPackInto(const HttpHdrSc * sc, Packer * p)
+HttpHdrSc::packInto(Packer * p) const
 {
     dlink_node *node;
-    assert(sc && p);
-    node = sc->targets.head;
+    assert(p);
+    node = targets.head;
 
     while (node) {
-        httpHdrScTargetPackInto((HttpHdrScTarget *)node->data, p);
+        static_cast<HttpHdrScTarget *>(node->data)->packInto(p);
         node = node->next;
     }
 }
 
-void
-httpHdrScJoinWith(HttpHdrSc * sc, const HttpHdrSc * new_sc)
-{
-    assert(sc && new_sc);
-#if 0
-    /* RC TODO: check that both have the same target */
-
-    if (sc->max_age < 0)
-        sc->max_age = new_sc->max_age;
-
-    /* RC TODO: copy unique missing stringlist entries */
-    cc->mask |= new_cc->mask;
-
-#endif
-}
-
 /* negative max_age will clean old max_Age setting */
 void
-httpHdrScSetMaxAge(HttpHdrSc * sc, char const *target, int max_age)
+HttpHdrSc::setMaxAge(char const *target, int max_age)
 {
-    HttpHdrScTarget *sct;
-    assert(sc);
-    sct = httpHdrScFindTarget (sc, target);
+    HttpHdrScTarget *sct = findTarget(target);
 
     if (!sct) {
-        sct = httpHdrScTargetCreate (target);
-        dlinkAddTail (sct, &sct->node, &sc->targets);
+        sct = new HttpHdrScTarget(target);
+        dlinkAddTail (sct, &sct->node, &targets);
     }
 
-    httpHdrScTargetSetMaxAge(sct, max_age);
+    sct->maxAge(max_age);
 }
 
 void
-httpHdrScUpdateStats(const HttpHdrSc * sc, StatHist * hist)
+HttpHdrSc::updateStats(StatHist * hist) const
 {
-    dlink_node *sct;
-    assert(sc);
-    sct = sc->targets.head;
+    dlink_node *sct = targets.head;
 
     while (sct) {
-        httpHdrScTargetUpdateStats((HttpHdrScTarget *)sct->data, hist);
+        static_cast<HttpHdrScTarget *>(sct->data)->updateStats(hist);
         sct = sct->next;
     }
 }
@@ -365,11 +352,10 @@
 }
 
 HttpHdrScTarget *
-httpHdrScFindTarget (HttpHdrSc *sc, const char *target)
+HttpHdrSc::findTarget(const char *target)
 {
     dlink_node *node;
-    assert (sc);
-    node = sc->targets.head;
+    node = targets.head;
 
     while (node) {
         HttpHdrScTarget *sct = (HttpHdrScTarget *)node->data;
@@ -386,19 +372,19 @@
 }
 
 HttpHdrScTarget *
-httpHdrScGetMergedTarget (HttpHdrSc *sc, const char *ourtarget)
+HttpHdrSc::getMergedTarget(const char *ourtarget)
 {
-    HttpHdrScTarget *sctus = httpHdrScFindTarget (sc, ourtarget);
-    HttpHdrScTarget *sctgeneric = httpHdrScFindTarget (sc, NULL);
+    HttpHdrScTarget *sctus = findTarget(ourtarget);
+    HttpHdrScTarget *sctgeneric = findTarget(NULL);
 
     if (sctgeneric || sctus) {
-        HttpHdrScTarget *sctusable = httpHdrScTargetCreate (NULL);
+        HttpHdrScTarget *sctusable = new HttpHdrScTarget(NULL);
 
         if (sctgeneric)
-            httpHdrScTargetMergeWith (sctusable, sctgeneric);
+            sctusable->mergeWith(sctgeneric);
 
         if (sctus)
-            httpHdrScTargetMergeWith (sctusable, sctus);
+            sctusable->mergeWith(sctus);
 
         return sctusable;
     }
diff -u -r -N squid-3.2.0.13/src/HttpHdrSc.h squid-3.2.0.14/src/HttpHdrSc.h
--- squid-3.2.0.13/src/HttpHdrSc.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/HttpHdrSc.h	2011-12-13 00:08:18.000000000 +1300
@@ -43,8 +43,27 @@
 {
 
 public:
+    HttpHdrSc(const HttpHdrSc &);
+    HttpHdrSc() {}
+    ~HttpHdrSc();
+
+    bool parse(const String *str);
+    void packInto(Packer * p) const;
+    void updateStats(StatHist *) const;
+    HttpHdrScTarget * getMergedTarget (const char *ourtarget); //todo: make const?
+    void setMaxAge(char const *target, int max_age);
+    void addTarget(HttpHdrScTarget *t) {
+        dlinkAdd(t, &t->node, &targets);
+    }
+    void addTargetAtTail(HttpHdrScTarget *t) {
+        dlinkAddTail (t, &t->node, &targets);
+    }
+
     MEMPROXY_CLASS(HttpHdrSc);
     dlink_list targets;
+private:
+    HttpHdrScTarget * findTarget (const char *target);
+
 };
 
 MEMPROXY_CLASS_INLINE(HttpHdrSc);
@@ -53,18 +72,7 @@
 extern void httpHdrScStatDumper(StoreEntry * sentry, int idx, double val, double size, int count);
 extern void httpHdrScInitModule (void);
 extern void httpHdrScCleanModule (void);
-extern HttpHdrSc *httpHdrScCreate(void);
-extern HttpHdrSc *httpHdrScParseCreate(String const *);
-extern void httpHdrScDestroy(HttpHdrSc * sc);
-extern HttpHdrSc *httpHdrScDup(const HttpHdrSc * sc);
-extern void httpHdrScPackInto(const HttpHdrSc * sc, Packer * p);
-extern void httpHdrScJoinWith(HttpHdrSc *, const HttpHdrSc *);
+extern HttpHdrSc *httpHdrScParseCreate(String const &);
 extern void httpHdrScSetMaxAge(HttpHdrSc *, char const *, int);
-extern void httpHdrScUpdateStats(const HttpHdrSc *, StatHist *);
-extern HttpHdrScTarget * httpHdrScFindTarget (HttpHdrSc *sc, const char *target);
-extern HttpHdrScTarget * httpHdrScGetMergedTarget (HttpHdrSc *sc, const char *ourtarget);
-
-extern void httpHeaderPutSc(HttpHeader *hdr, const HttpHdrSc *sc);
-extern HttpHdrSc *httpHeaderGetSc(const HttpHeader *hdr);
 
 #endif /* SQUID_HTTPHDRSURROGATECONTROL_H */
diff -u -r -N squid-3.2.0.13/src/HttpHdrScTarget.cc squid-3.2.0.14/src/HttpHdrScTarget.cc
--- squid-3.2.0.13/src/HttpHdrScTarget.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/HttpHdrScTarget.cc	2011-12-13 00:08:18.000000000 +1300
@@ -38,114 +38,38 @@
 #include "squid.h"
 #include "HttpHdrSc.h"
 
-/* local prototypes */
-
-/* module initialization */
-
-/* implementation */
-
-HttpHdrScTarget *
-httpHdrScTargetCreate(char const *target)
-{
-    HttpHdrScTarget *sc = new HttpHdrScTarget();
-    sc->max_age = -1;
-    /* max_stale is specified as 0 if not specified in the header */
-    sc->target = target;
-    return sc;
-}
-
-void
-httpHdrScTargetDestroy(HttpHdrScTarget * sc)
-{
-    assert(sc);
-    sc->target.clean();
-    sc->content.clean();
-    delete sc;
-}
-
-HttpHdrScTarget *
-httpHdrScTargetDup(const HttpHdrScTarget * sc)
-{
-    HttpHdrScTarget *dup;
-    assert(sc);
-    dup = httpHdrScTargetCreate(sc->target.termedBuf());
-    dup->mask = sc->mask;
-    dup->max_age = sc->max_age;
-    dup->content = sc->content;
-    return dup;
-}
-
-/* union of two targets */
-void
-httpHdrScTargetJoinWith(HttpHdrScTarget * sc, const HttpHdrScTarget * new_sc)
-{
-    assert(sc && new_sc);
-    /* TODO: check both targets are the same */
-
-    if (sc->max_age < 0)
-        sc->max_age = new_sc->max_age;
-
-    if (sc->max_stale < new_sc->max_stale)
-        sc->max_stale = new_sc->max_stale;
-
-    /* RC TODO: copy unique missing content stringlist entries */
-    sc->mask |= new_sc->mask;
-}
-
 extern http_hdr_sc_type &operator++ (http_hdr_sc_type &aHeader);
-extern int operator - (http_hdr_sc_type const &anSc, http_hdr_sc_type const &anSc2);
 /* copies non-extant fields from new_sc to this sc */
 void
-httpHdrScTargetMergeWith(HttpHdrScTarget * sc, const HttpHdrScTarget * new_sc)
+HttpHdrScTarget::mergeWith(const HttpHdrScTarget * new_sc)
 {
-    http_hdr_sc_type c;
-    assert(sc && new_sc);
+    assert(new_sc);
     /* Don't touch the target - this is used to get the operations for a
      * single surrogate
      */
 
-    for (c = SC_NO_STORE; c < SC_ENUM_END; ++c)
-        if (!EBIT_TEST(sc->mask, c) && EBIT_TEST(new_sc->mask,c)) {
-            EBIT_SET(sc->mask, c);
+    if (new_sc->hasNoStore())
+        noStore(true);
 
-            switch (c) {
+    if (new_sc->hasNoStoreRemote())
+        noStoreRemote(true);
 
-            case SC_MAX_AGE:
-                sc->max_age = new_sc->max_age;
-                sc->max_stale = new_sc->max_stale;
-                break;
-
-            case SC_CONTENT:
-                assert (sc->content.size() == 0);
-                sc->content = new_sc->content;
-                break;
-
-            default:
-                break;
-            }
-        }
-}
+    if (new_sc->hasMaxAge() && !hasMaxAge()) {
+        maxAge(new_sc->maxAge());
+        maxStale(new_sc->maxStale());
+    }
 
-/* negative max_age will clean old max_Age setting */
-void
-httpHdrScTargetSetMaxAge(HttpHdrScTarget * sc, int max_age)
-{
-    assert(sc);
-    sc->max_age = max_age;
+    if (new_sc->hasContent() && !hasContent())
+        Content(new_sc->content());
 
-    if (max_age >= 0)
-        EBIT_SET(sc->mask, SC_MAX_AGE);
-    else
-        EBIT_CLR(sc->mask, SC_MAX_AGE);
 }
 
 void
-httpHdrScTargetUpdateStats(const HttpHdrScTarget * sc, StatHist * hist)
+HttpHdrScTarget::updateStats(StatHist * hist) const
 {
     http_hdr_sc_type c;
-    assert(sc);
 
     for (c = SC_NO_STORE; c < SC_ENUM_END; ++c)
-        if (EBIT_TEST(sc->mask, c))
+        if (isSet(c))
             statHistCount(hist, c);
 }
diff -u -r -N squid-3.2.0.13/src/HttpHdrScTarget.h squid-3.2.0.14/src/HttpHdrScTarget.h
--- squid-3.2.0.13/src/HttpHdrScTarget.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/HttpHdrScTarget.h	2011-12-13 00:08:18.000000000 +1300
@@ -35,42 +35,99 @@
 class Packer;
 class StoreEntry;
 
-/* for MEMPROXY_CLASS() macros */
 #include "MemPool.h"
-/* for dlink_node */
 #include "dlink.h"
-/* for String */
 #include "SquidString.h"
+#include "typedefs.h"
 
-/** HTTP Surogate-Control: header field */
+/** Representation of HTTP Surogate-Control header field targeted directive
+ *
+ * \see HttpHdrSc
+ */
 class HttpHdrScTarget
 {
+    // parsing is done in HttpHdrSc, need to grant them access.
+    friend class HttpHdrSc;
 public:
+    static const int MAX_AGE_UNSET=-1; //max-age is unset
+    static const int MAX_STALE_UNSET=0; //max-stale is unset
+
+    HttpHdrScTarget(const char *target_):
+            mask(0), max_age(MAX_AGE_UNSET), max_stale(MAX_STALE_UNSET),target(target_) {}
+    HttpHdrScTarget(const String &target_):
+            mask(0), max_age(MAX_AGE_UNSET), max_stale(MAX_STALE_UNSET),target(target_) {}
+    HttpHdrScTarget(const HttpHdrScTarget &t):
+            mask(t.mask), max_age(t.max_age), max_stale(t.max_stale),
+            content_(t.content_), target(t.target) {}
+
+    bool hasNoStore() const {return isSet(SC_NO_STORE); }
+    void noStore(bool v) { setMask(SC_NO_STORE,v); }
+    bool noStore() const { return isSet(SC_NO_STORE); }
+    void clearNoStore() { setMask(SC_NO_STORE, false); }
+
+    bool hasNoStoreRemote() const {return isSet(SC_NO_STORE_REMOTE); }
+    void noStoreRemote(bool v) { setMask(SC_NO_STORE_REMOTE,v); }
+    bool noStoreRemote() const { return isSet(SC_NO_STORE_REMOTE); }
+    void clearNoStoreRemote() { setMask(SC_NO_STORE_REMOTE, false); }
+
+    bool hasMaxAge() const { return isSet(SC_MAX_AGE); }
+    void maxAge(int v) {
+        if (v >= 0) { //setting
+            setMask(SC_MAX_AGE,true);
+            max_age=v;
+        } else {
+            setMask(SC_MAX_AGE,false);
+            max_age=MAX_AGE_UNSET;
+        }
+    }
+    int maxAge() const { return max_age; }
+    void clearMaxAge() { setMask(SC_MAX_AGE,false); max_age=MAX_AGE_UNSET; }
+
+    //max_stale has no associated status-bit
+    bool hasMaxStale() const { return max_stale != MAX_STALE_UNSET; }
+    void maxStale(int v) { max_stale=v; }
+    int maxStale() const { return max_stale; }
+    void clearMaxStale() { max_stale=MAX_STALE_UNSET; }
+
+    bool hasContent() const { return isSet(SC_CONTENT); }
+    void Content(const String &v) {
+        setMask(SC_CONTENT,true);
+        content_=v;
+    }
+    String content() const { return content_; }
+    void clearContent() { setMask(SC_CONTENT,false); content_.clean(); }
+
+    bool hasTarget() const { return target.size() != 0; }
+    String Target() const { return target; }
+
+    void mergeWith(const HttpHdrScTarget * new_sc);
+    void packInto (Packer *p) const;
+    void updateStats(StatHist *) const;
+
     MEMPROXY_CLASS(HttpHdrScTarget);
-    dlink_node node;
+private:
+    bool isSet(http_hdr_sc_type id) const {
+        assert (id >= SC_NO_STORE && id < SC_ENUM_END);
+        return EBIT_TEST(mask,id);
+    }
+
+    void setMask(http_hdr_sc_type id, bool newval) {
+        if (newval) EBIT_SET(mask,id);
+        else EBIT_CLR(mask,id);
+    }
+
     int mask;
     int max_age;
     int max_stale;
-    String content;
+    String content_;
     String target;
+    dlink_node node;
 };
 
 MEMPROXY_CLASS_INLINE(HttpHdrScTarget);
 
-/* Http Surrogate control header field 'targets' */
-extern HttpHdrScTarget * httpHdrScTargetCreate (const char *);
-extern void httpHdrScTargetDestroy(HttpHdrScTarget *);
-extern HttpHdrScTarget *httpHdrScTargetDup(const HttpHdrScTarget *);
-extern void httpHdrScTargetPackInto(const HttpHdrScTarget *, Packer *);
-extern void httpHdrScTargetSetMaxAge(HttpHdrScTarget *, int);
-extern void httpHdrScTargetJoinWith(HttpHdrScTarget *, const HttpHdrScTarget *);
-extern void httpHdrScTargetMergeWith(HttpHdrScTarget *, const HttpHdrScTarget *);
 extern void httpHdrScTargetStatDumper(StoreEntry * sentry, int idx, double val, double size, int count);
 
-/* for StatHist */
-#include "typedefs.h"
-
-extern void httpHdrScTargetUpdateStats(const HttpHdrScTarget *, StatHist *);
 
 
 #endif /* SQUID_HTTPHDRSURROGATECONTROLTARGET_H */
diff -u -r -N squid-3.2.0.13/src/HttpHeader.cc squid-3.2.0.14/src/HttpHeader.cc
--- squid-3.2.0.13/src/HttpHeader.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/HttpHeader.cc	2011-12-13 00:08:18.000000000 +1300
@@ -99,8 +99,8 @@
     {"Cookie2", HDR_COOKIE2, ftStr},
     {"Date", HDR_DATE, ftDate_1123},
     {"ETag", HDR_ETAG, ftETag},
-    {"Expires", HDR_EXPIRES, ftDate_1123},
     {"Expect", HDR_EXPECT, ftStr},
+    {"Expires", HDR_EXPIRES, ftDate_1123},
     {"From", HDR_FROM, ftStr},
     {"Host", HDR_HOST, ftStr},
     {"If-Match", HDR_IF_MATCH, ftStr},	/* for now */
@@ -113,6 +113,7 @@
     {"Location", HDR_LOCATION, ftStr},
     {"Max-Forwards", HDR_MAX_FORWARDS, ftInt64},
     {"Mime-Version", HDR_MIME_VERSION, ftStr},	/* for now */
+    {"Negotiate", HDR_NEGOTIATE, ftStr},
     {"Pragma", HDR_PRAGMA, ftStr},
     {"Proxy-Authenticate", HDR_PROXY_AUTHENTICATE, ftStr},
     {"Proxy-Authentication-Info", HDR_PROXY_AUTHENTICATION_INFO, ftStr},
@@ -145,7 +146,6 @@
     {"X-Forwarded-For", HDR_X_FORWARDED_FOR, ftStr},
     {"X-Request-URI", HDR_X_REQUEST_URI, ftStr},
     {"X-Squid-Error", HDR_X_SQUID_ERROR, ftStr},
-    {"Negotiate", HDR_NEGOTIATE, ftStr},
 #if X_ACCELERATOR_VARY
     {"X-Accelerator-Vary", HDR_X_ACCELERATOR_VARY, ftStr},
 #endif
@@ -1209,7 +1209,7 @@
     /* pack into mb */
     mb.init();
     packerToMemInit(&p, &mb);
-    httpHdrScPackInto(sc, &p);
+    sc->packInto(&p);
     /* put */
     addEntry(new HttpHeaderEntry(HDR_SURROGATE_CONTROL, NULL, mb.buf));
     /* cleanup */
@@ -1366,12 +1366,12 @@
 
     (void) getList(HDR_SURROGATE_CONTROL, &s);
 
-    HttpHdrSc *sc = httpHdrScParseCreate(&s);
+    HttpHdrSc *sc = httpHdrScParseCreate(s);
 
-    HttpHeaderStats[owner].ccParsedCount++;
+    ++HttpHeaderStats[owner].ccParsedCount;
 
     if (sc)
-        httpHdrScUpdateStats(sc, &HttpHeaderStats[owner].scTypeDistr);
+        sc->updateStats(&HttpHeaderStats[owner].scTypeDistr);
 
     httpHeaderNoteParsedEntry(HDR_SURROGATE_CONTROL, s, !sc);
 
diff -u -r -N squid-3.2.0.13/src/HttpHeader.h squid-3.2.0.14/src/HttpHeader.h
--- squid-3.2.0.13/src/HttpHeader.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/HttpHeader.h	2011-12-13 00:08:18.000000000 +1300
@@ -49,89 +49,105 @@
 
 /* constant attributes of http header fields */
 
-/** recognized or "known" header fields; @?@ add more! */
+/// recognized or "known" header fields; and the RFC which defines them (or not)
 typedef enum {
     HDR_BAD_HDR = -1,
-    HDR_ACCEPT = 0,
-    HDR_ACCEPT_CHARSET,
-    HDR_ACCEPT_ENCODING,
-    HDR_ACCEPT_LANGUAGE,
-    HDR_ACCEPT_RANGES,
-    HDR_AGE,
-    HDR_ALLOW,
-    HDR_AUTHORIZATION,
-    HDR_CACHE_CONTROL,
-    HDR_CONNECTION,
-    HDR_CONTENT_BASE,
-    HDR_CONTENT_DISPOSITION,
-    HDR_CONTENT_ENCODING,
-    HDR_CONTENT_LANGUAGE,
-    HDR_CONTENT_LENGTH,
-    HDR_CONTENT_LOCATION,
-    HDR_CONTENT_MD5,
-    HDR_CONTENT_RANGE,
-    HDR_CONTENT_TYPE,
-    HDR_COOKIE,
-    HDR_COOKIE2,
-    HDR_DATE,
-    HDR_ETAG,
-    HDR_EXPIRES,
-    HDR_EXPECT,
-    HDR_FROM,
-    HDR_HOST,
-    HDR_IF_MATCH,
-    HDR_IF_MODIFIED_SINCE,
-    HDR_IF_NONE_MATCH,
-    HDR_IF_RANGE,
-    HDR_KEEP_ALIVE,
-    HDR_LAST_MODIFIED,
-    HDR_LINK,
-    HDR_LOCATION,
-    HDR_MAX_FORWARDS,
-    HDR_MIME_VERSION,
-    HDR_PRAGMA,
-    HDR_PROXY_AUTHENTICATE,
-    HDR_PROXY_AUTHENTICATION_INFO,
-    HDR_PROXY_AUTHORIZATION,
-    HDR_PROXY_CONNECTION,
-    HDR_PROXY_SUPPORT,
-    HDR_PUBLIC,
-    HDR_RANGE,
-    HDR_REQUEST_RANGE,		/**< some clients use this, sigh */
-    HDR_REFERER,
-    HDR_RETRY_AFTER,
-    HDR_SERVER,
-    HDR_SET_COOKIE,
-    HDR_SET_COOKIE2,
-    HDR_TE,
-    HDR_TITLE,
-    HDR_TRAILER,
-    HDR_TRANSFER_ENCODING,
-    HDR_TRANSLATE,             /* IIS custom header we may need to cut off */
-    HDR_UNLESS_MODIFIED_SINCE,             /* IIS custom header we may need to cut off */
-    HDR_UPGRADE,
-    HDR_USER_AGENT,
-    HDR_VARY,
-    HDR_VIA,
-    HDR_WARNING,
-    HDR_WWW_AUTHENTICATE,
-    HDR_AUTHENTICATION_INFO,
-    HDR_X_CACHE,
-    HDR_X_CACHE_LOOKUP,		/**< tmp hack, remove later */
-    HDR_X_FORWARDED_FOR,
-    HDR_X_REQUEST_URI,		/**< appended if ADD_X_REQUEST_URI is #defined */
-    HDR_X_SQUID_ERROR,
-    HDR_NEGOTIATE,
+    HDR_ACCEPT = 0,                     /**< RFC 2608, 2616 */
+    HDR_ACCEPT_CHARSET,                 /**< RFC 2608, 2616 */
+    HDR_ACCEPT_ENCODING,                /**< RFC 2608, 2616 */
+    /*HDR_ACCEPT_FEATURES,*/            /* experimental RFC 2295 */
+    HDR_ACCEPT_LANGUAGE,                /**< RFC 2608, 2616 */
+    HDR_ACCEPT_RANGES,                  /**< RFC 2608, 2616 */
+    HDR_AGE,                            /**< RFC 2608, 2616 */
+    HDR_ALLOW,                          /**< RFC 2608, 2616 */
+    /*HDR_ALTERNATES,*/                 /* deprecated RFC 2068, 2295 */
+    HDR_AUTHORIZATION,                  /**< RFC 2608, 2616, 4559 */
+    HDR_CACHE_CONTROL,                  /**< RFC 2608, 2616 */
+    HDR_CONNECTION,                     /**< RFC 2608, 2616 */
+    HDR_CONTENT_BASE,                   /**< RFC 2608 */
+    HDR_CONTENT_DISPOSITION,            /**< RFC 2183, 2616 */
+    HDR_CONTENT_ENCODING,               /**< RFC 2608, 2616 */
+    HDR_CONTENT_LANGUAGE,               /**< RFC 2608, 2616 */
+    HDR_CONTENT_LENGTH,                 /**< RFC 2608, 2616 */
+    HDR_CONTENT_LOCATION,               /**< RFC 2608, 2616 */
+    HDR_CONTENT_MD5,                    /**< RFC 2608, 2616 */
+    HDR_CONTENT_RANGE,                  /**< RFC 2608, 2616 */
+    HDR_CONTENT_TYPE,                   /**< RFC 2608, 2616 */
+    /*HDR_CONTENT_VERSION,*/            /* deprecated RFC 2608 header. */
+    HDR_COOKIE,                         /**< de-facto and RFC 2965 header we may need to erase */
+    HDR_COOKIE2,                        /**< obsolete RFC 2965 header we may need to erase */
+    HDR_DATE,                           /**< RFC 2608, 2616 */
+    /*HDR_DAV,*/                        /* RFC 2518 */
+    /*HDR_DEPTH,*/                      /* RFC 2518 */
+    /*HDR_DERIVED_FROM,*/               /* deprecated RFC 2608 */
+    /*HDR_DESTINATION,*/                /* RFC 2518 */
+    HDR_ETAG,                           /**< RFC 2608, 2616 */
+    HDR_EXPECT,                         /**< RFC 2616, 2616 */
+    HDR_EXPIRES,                        /**< RFC 2608, 2616 */
+    HDR_FROM,                           /**< RFC 2608, 2616 */
+    HDR_HOST,                           /**< RFC 2608, 2616 */
+    /*HDR_IF,*/                         /* RFC 2518 */
+    HDR_IF_MATCH,                       /**< RFC 2608, 2616 */
+    HDR_IF_MODIFIED_SINCE,              /**< RFC 2608, 2616 */
+    HDR_IF_NONE_MATCH,                  /**< RFC 2608, 2616 */
+    HDR_IF_RANGE,                       /**< RFC 2608, 2616 */
+    /*HDR_IF_UNMODIFIED_SINCE,*/        /**< RFC 2608, 2616 */
+    HDR_KEEP_ALIVE,                     /**< obsolete HTTP/1.0 header we may need to erase */
+    HDR_LAST_MODIFIED,                  /**< RFC 2608, 2616 */
+    HDR_LINK,                           /**< RFC 2068 */
+    HDR_LOCATION,                       /**< RFC 2608, 2616 */
+    /*HDR_LOCK_TOKEN,*/                 /* RFC 2518 */
+    HDR_MAX_FORWARDS,                   /**< RFC 2608, 2616 */
+    HDR_MIME_VERSION,                   /**< RFC 2626 */
+    HDR_NEGOTIATE,                      /**< experimental RFC 2295. Why only this one from 2295? */
+    /*HDR_OVERWRITE,*/                  /* RFC 2518 */
+    HDR_PRAGMA,                         /**< deprecated RFC 2068,2616 header we may need to erase */
+    HDR_PROXY_AUTHENTICATE,             /**< RFC 2608, 2616, 2617 */
+    HDR_PROXY_AUTHENTICATION_INFO,      /**< RFC 2617 */
+    HDR_PROXY_AUTHORIZATION,            /**< RFC 2608, 2616, 2617 */
+    HDR_PROXY_CONNECTION,               /**< obsolete Netscape header we may need to erase. */
+    HDR_PROXY_SUPPORT,                  /**< RFC 4559 */
+    HDR_PUBLIC,                         /**< RFC 2608 */
+    HDR_RANGE,                          /**< RFC 2608, 2616 */
+    HDR_REFERER,                        /**< RFC 2608, 2616 */
+    HDR_REQUEST_RANGE,                  /**< some clients use this, sigh */
+    HDR_RETRY_AFTER,                    /**< RFC 2608, 2616 */
+    HDR_SERVER,                         /**< RFC 2608, 2616 */
+    HDR_SET_COOKIE,			/**< de-facto standard header we may need to erase */
+    HDR_SET_COOKIE2,                    /**< obsolete RFC 2965 header we may need to erase */
+    /*HDR_STATUS_URI,*/                 /* RFC 2518 */
+    /*HDR_TCN,*/                        /* experimental RFC 2295 */
+    HDR_TE,                             /**< RFC 2616 */
+    /*HDR_TIMEOUT,*/                    /* RFC 2518 */
+    HDR_TITLE,                          /* obsolete draft suggested header */
+    HDR_TRAILER,                        /**< RFC 2616 */
+    HDR_TRANSFER_ENCODING,              /**< RFC 2608, 2616 */
+    HDR_TRANSLATE,                      /**< IIS custom header we may need to erase */
+    HDR_UNLESS_MODIFIED_SINCE,          /**< IIS custom header we may need to erase */
+    HDR_UPGRADE,                        /**< RFC 2608, 2616 */
+    /*HDR_URI,*/                        /* obsolete RFC 2068 header */
+    HDR_USER_AGENT,                     /**< RFC 2608, 2616 */
+    /*HDR_VARIANT_VARY,*/               /* experimental RFC 2295 */
+    HDR_VARY,                           /**< RFC 2608, 2616 */
+    HDR_VIA,                            /**< RFC 2608, 2616 */
+    HDR_WARNING,                        /**< RFC 2608, 2616 */
+    HDR_WWW_AUTHENTICATE,               /**< RFC 2608, 2616, 2617, 4559 */
+    HDR_AUTHENTICATION_INFO,            /**< RFC 2617 */
+    HDR_X_CACHE,                        /**< Squid custom header */
+    HDR_X_CACHE_LOOKUP,	                /**< Squid custom header. temporary hack that became de-facto. TODO remove */
+    HDR_X_FORWARDED_FOR,                /**< Squid custom header */
+    HDR_X_REQUEST_URI,                  /**< Squid custom header appended if ADD_X_REQUEST_URI is defined */
+    HDR_X_SQUID_ERROR,                  /**< Squid custom header on generated error responses */
 #if X_ACCELERATOR_VARY
-    HDR_X_ACCELERATOR_VARY,
+    HDR_X_ACCELERATOR_VARY,             /**< obsolete Squid custom header. */
 #endif
 #if USE_ADAPTATION
-    HDR_X_NEXT_SERVICES,
+    HDR_X_NEXT_SERVICES,                /**< Squid custom ICAP header */
 #endif
-    HDR_SURROGATE_CAPABILITY,
-    HDR_SURROGATE_CONTROL,
-    HDR_FRONT_END_HTTPS,
-    HDR_OTHER,
+    HDR_SURROGATE_CAPABILITY,           /**< Edge Side Includes (ESI) header */
+    HDR_SURROGATE_CONTROL,              /**< Edge Side Includes (ESI) header */
+    HDR_FRONT_END_HTTPS,                /**< MS Exchange custom header we may have to add */
+    HDR_OTHER,                          /**< internal tag value for "unknown" headers */
     HDR_ENUM_END
 } http_hdr_type;
 
diff -u -r -N squid-3.2.0.13/src/HttpReply.cc squid-3.2.0.14/src/HttpReply.cc
--- squid-3.2.0.13/src/HttpReply.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/HttpReply.cc	2011-12-13 00:08:18.000000000 +1300
@@ -36,6 +36,7 @@
 #include "squid.h"
 #include "SquidTime.h"
 #include "Store.h"
+#include "HttpBody.h"
 #include "HttpReply.h"
 #include "HttpHdrContRange.h"
 #include "HttpHdrCc.h"
@@ -94,7 +95,6 @@
 void
 HttpReply::init()
 {
-    httpBodyInit(&body);
     hdrCacheInit();
     httpStatusLineInit(&sline);
     pstate = psReadyToParseStartLine;
@@ -121,7 +121,7 @@
     // points to a pipe that is owned and initiated by another object.
     body_pipe = NULL;
 
-    httpBodyClean(&body);
+    body.clear();
     hdrCacheClean();
     header.clean();
     httpStatusLineClean(&sline);
@@ -140,7 +140,7 @@
 HttpReply::packInto(Packer * p)
 {
     packHeadersInto(p);
-    httpBodyPackInto(&body, p);
+    body.packInto(p);
 }
 
 /* create memBuf, create mem-based packer, pack, destroy packer, return MemBuf */
@@ -408,7 +408,7 @@
     }
 
     if (surrogate_control) {
-        httpHdrScDestroy(surrogate_control);
+        delete surrogate_control;
         surrogate_control = NULL;
     }
 
diff -u -r -N squid-3.2.0.13/src/HttpReply.h squid-3.2.0.14/src/HttpReply.h
--- squid-3.2.0.13/src/HttpReply.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/HttpReply.h	2011-12-13 00:08:18.000000000 +1300
@@ -32,6 +32,7 @@
 #ifndef SQUID_HTTPREPLY_H
 #define SQUID_HTTPREPLY_H
 
+#include "HttpBody.h"
 #include "HttpMsg.h"
 #include "HttpStatusLine.h"
 
diff -u -r -N squid-3.2.0.13/src/ident/Ident.cc squid-3.2.0.14/src/ident/Ident.cc
--- squid-3.2.0.13/src/ident/Ident.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ident/Ident.cc	2011-12-13 00:08:18.000000000 +1300
@@ -68,7 +68,7 @@
 
 // TODO: make these all a series of Async job calls. They are self-contained callbacks now.
 static IOCB ReadReply;
-static PF Close;
+static CLCB Close;
 static CTCB Timeout;
 static CNCB ConnectDone;
 static hash_table *ident_hash = NULL;
@@ -101,9 +101,9 @@
 }
 
 void
-Ident::Close(int fdnotused, void *data)
+Ident::Close(const CommCloseCbParams &params)
 {
-    IdentStateData *state = (IdentStateData *)data;
+    IdentStateData *state = (IdentStateData *)params.data;
     identCallback(state, NULL);
     state->conn->close();
     hash_remove_link(ident_hash, (hash_link *) state);
diff -u -r -N squid-3.2.0.13/src/internal.cc squid-3.2.0.14/src/internal.cc
--- squid-3.2.0.13/src/internal.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/internal.cc	2011-12-13 00:08:18.000000000 +1300
@@ -76,7 +76,7 @@
     } else {
         debugObj(76, 1, "internalStart: unknown request:\n",
                  request, (ObjPackMethod) & httpRequestPack);
-        err = errorCon(ERR_INVALID_REQ, HTTP_NOT_FOUND, request);
+        err = new ErrorState(ERR_INVALID_REQ, HTTP_NOT_FOUND, request);
         errorAppendEntry(entry, err);
     }
 }
diff -u -r -N squid-3.2.0.13/src/ip/QosConfig.cc squid-3.2.0.14/src/ip/QosConfig.cc
--- squid-3.2.0.13/src/ip/QosConfig.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ip/QosConfig.cc	2011-12-13 00:08:18.000000000 +1300
@@ -128,12 +128,13 @@
     } else if (Ip::Qos::TheConfig.tosParentHit && hierCode==PARENT_HIT) {
         tos = Ip::Qos::TheConfig.tosParentHit;
         debugs(33, 2, "QOS: Parent Peer hit with hier code=" << hierCode << ", TOS=" << int(tos));
-    } else if (Ip::Qos::TheConfig.tosMiss) {
-        tos = Ip::Qos::TheConfig.tosMiss;
-        debugs(33, 2, "QOS: Cache miss, setting TOS=" << int(tos));
-    } else if (Ip::Qos::TheConfig.preserveMissTos && Ip::Qos::TheConfig.preserveMissTosMask) {
+    } else if (Ip::Qos::TheConfig.preserveMissTos) {
         tos = fd_table[conn->fd].tosFromServer & Ip::Qos::TheConfig.preserveMissTosMask;
+        tos = (tos & ~Ip::Qos::TheConfig.tosMissMask) | (Ip::Qos::TheConfig.tosMiss & Ip::Qos::TheConfig.tosMissMask);
         debugs(33, 2, "QOS: Preserving TOS on miss, TOS=" << int(tos));
+    } else if (Ip::Qos::TheConfig.tosMiss) {
+        tos = Ip::Qos::TheConfig.tosMiss & Ip::Qos::TheConfig.tosMissMask;
+        debugs(33, 2, "QOS: Cache miss, setting TOS=" << int(tos));
     }
     return setSockTos(conn, tos);
 }
@@ -148,12 +149,13 @@
     } else if (Ip::Qos::TheConfig.markParentHit && hierCode==PARENT_HIT) {
         mark = Ip::Qos::TheConfig.markParentHit;
         debugs(33, 2, "QOS: Parent Peer hit with hier code=" << hierCode << ", Mark=" << mark);
-    } else if (Ip::Qos::TheConfig.markMiss) {
-        mark = Ip::Qos::TheConfig.markMiss;
-        debugs(33, 2, "QOS: Cache miss, setting Mark=" << mark);
     } else if (Ip::Qos::TheConfig.preserveMissMark) {
         mark = fd_table[conn->fd].nfmarkFromServer & Ip::Qos::TheConfig.preserveMissMarkMask;
+        mark = (mark & ~Ip::Qos::TheConfig.markMissMask) | (Ip::Qos::TheConfig.markMiss & Ip::Qos::TheConfig.markMissMask);
         debugs(33, 2, "QOS: Preserving mark on miss, Mark=" << mark);
+    } else if (Ip::Qos::TheConfig.markMiss) {
+        mark = Ip::Qos::TheConfig.markMiss & Ip::Qos::TheConfig.markMissMask;
+        debugs(33, 2, "QOS: Cache miss, setting Mark=" << mark);
     }
     return setSockNfmark(conn, mark);
 }
@@ -182,12 +184,14 @@
     tosSiblingHit = 0;
     tosParentHit = 0;
     tosMiss = 0;
+    tosMissMask = 0;
     preserveMissTos = false;
     preserveMissTosMask = 0xFF;
     markLocalHit = 0;
     markSiblingHit = 0;
     markParentHit = 0;
     markMiss = 0;
+    markMissMask = 0;
     preserveMissMark = false;
     preserveMissMarkMask = 0xFFFFFFFF;
 }
@@ -290,18 +294,36 @@
 
         } else if (strncmp(token, "miss=",5) == 0) {
 
+            char *end;
             if (mark) {
-                if (!xstrtoui(&token[5], NULL, &markMiss, 0, std::numeric_limits<nfmark_t>::max())) {
+                if (!xstrtoui(&token[5], &end, &markMiss, 0, std::numeric_limits<nfmark_t>::max())) {
                     debugs(3, DBG_CRITICAL, "ERROR: Bad mark miss value " << &token[5]);
                     self_destruct();
                 }
+                if (*end == '/') {
+                    if (!xstrtoui(end + 1, NULL, &markMissMask, 0, std::numeric_limits<nfmark_t>::max())) {
+                        debugs(3, DBG_CRITICAL, "ERROR: Bad mark miss mask value " << (end + 1) << ". Using 0xFFFFFFFF instead.");
+                        markMissMask = 0xFFFFFFFF;
+                    }
+                } else {
+                    markMissMask = 0xFFFFFFFF;
+                }
             } else {
                 unsigned int v = 0;
-                if (!xstrtoui(&token[5], NULL, &v, 0, std::numeric_limits<tos_t>::max())) {
+                if (!xstrtoui(&token[5], &end, &v, 0, std::numeric_limits<tos_t>::max())) {
                     debugs(3, DBG_CRITICAL, "ERROR: Bad TOS miss value " << &token[5]);
                     self_destruct();
                 }
                 tosMiss = (tos_t)v;
+                if (*end == '/') {
+                    if (!xstrtoui(end + 1, NULL, &v, 0, std::numeric_limits<tos_t>::max())) {
+                        debugs(3, DBG_CRITICAL, "ERROR: Bad TOS miss mask value " << (end + 1) << ". Using 0xFF instead.");
+                        tosMissMask = 0xFF;
+                    } else
+                        tosMissMask = (tos_t)v;
+                } else {
+                    tosMissMask = 0xFF;
+                }
             }
 
         } else if (strcmp(token, "disable-preserve-miss") == 0) {
@@ -366,6 +388,9 @@
         }
         if (tosMiss > 0) {
             p += snprintf(p, 11, " miss=0x%02X", tosMiss);
+            if (tosMissMask!=0xFFU) {
+                p += snprintf(p, 6, "/0x%02X", markMissMask);
+            }
         }
         if (preserveMissTos == 0) {
             p += snprintf(p, 23, " disable-preserve-miss");
@@ -391,6 +416,9 @@
         }
         if (markMiss > 0) {
             p += snprintf(p, 17, " miss=0x%02X", markMiss);
+            if (markMissMask!=0xFFFFFFFFU) {
+                p += snprintf(p, 12, "/0x%02X", markMissMask);
+            }
         }
         if (preserveMissMark == false) {
             p += snprintf(p, 23, " disable-preserve-miss");
diff -u -r -N squid-3.2.0.13/src/ip/QosConfig.h squid-3.2.0.14/src/ip/QosConfig.h
--- squid-3.2.0.13/src/ip/QosConfig.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ip/QosConfig.h	2011-12-13 00:08:18.000000000 +1300
@@ -158,15 +158,17 @@
     tos_t tosSiblingHit;                ///< TOS value to apply to hits from siblings
     tos_t tosParentHit;                 ///< TOS value to apply to hits from parent
     tos_t tosMiss;                      ///< TOS value to apply to cache misses
+    tos_t tosMissMask;                  ///< Mask for TOS value to apply to cache misses. Applied to the tosMiss value.
     bool preserveMissTos;               ///< Whether to preserve the TOS value of the inbound packet for misses
-    tos_t preserveMissTosMask;          ///< The mask to apply when preserving the TOS of misses
+    tos_t preserveMissTosMask;          ///< The mask to apply when preserving the TOS of misses. Applies to preserved value from upstream.
 
     nfmark_t markLocalHit;              ///< Netfilter mark value to apply to local cache hits
     nfmark_t markSiblingHit;            ///< Netfilter mark value to apply to hits from siblings
     nfmark_t markParentHit;             ///< Netfilter mark value to apply to hits from parent
     nfmark_t markMiss;                  ///< Netfilter mark value to apply to cache misses
+    nfmark_t markMissMask;              ///< Mask for netfilter mark value to apply to cache misses. Applied to the markMiss value.
     bool preserveMissMark;              ///< Whether to preserve netfilter mark value of inbound connection
-    nfmark_t preserveMissMarkMask;      ///< The mask to apply when preserving the netfilter mark of misses
+    nfmark_t preserveMissMarkMask;      ///< The mask to apply when preserving the netfilter mark of misses. Applied to preserved value from upstream.
 
     acl_tos *tosToServer;               ///< The TOS that packets to the web server should be marked with, based on ACL
     acl_tos *tosToClient;               ///< The TOS that packets to the client should be marked with, based on ACL
diff -u -r -N squid-3.2.0.13/src/ipc/AtomicWord.cc squid-3.2.0.14/src/ipc/AtomicWord.cc
--- squid-3.2.0.13/src/ipc/AtomicWord.cc	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/ipc/AtomicWord.cc	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,19 @@
+/*
+ * $Id$
+ *
+ * DEBUG: section 54    Interprocess Communication
+ *
+ */
+
+#include "config.h"
+#include "ipc/AtomicWord.h"
+#include "protos.h"
+
+bool Ipc::Atomic::Enabled()
+{
+#if HAVE_ATOMIC_OPS
+    return true;
+#else
+    return !UsingSmp();
+#endif
+}
diff -u -r -N squid-3.2.0.13/src/ipc/AtomicWord.h squid-3.2.0.14/src/ipc/AtomicWord.h
--- squid-3.2.0.13/src/ipc/AtomicWord.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/AtomicWord.h	2011-12-13 00:08:18.000000000 +1300
@@ -6,17 +6,27 @@
 #ifndef SQUID_IPC_ATOMIC_WORD_H
 #define SQUID_IPC_ATOMIC_WORD_H
 
+namespace Ipc
+{
+
+namespace Atomic
+{
+
+/// Whether atomic operations support is available
+bool Enabled();
+
 #if HAVE_ATOMIC_OPS
+
 /// Supplies atomic operations for an integral Value in memory shared by kids.
 /// Used to implement non-blocking shared locks, queues, tables, and pools.
 template <class ValueType>
-class AtomicWordT
+class WordT
 {
 public:
     typedef ValueType Value;
 
-    AtomicWordT() {} // leave value unchanged
-    AtomicWordT(Value aValue): value(aValue) {} // XXX: unsafe
+    WordT() {} // leave value unchanged
+    WordT(Value aValue): value(aValue) {} // XXX: unsafe
 
     Value operator +=(int delta) { return __sync_add_and_fetch(&value, delta); }
     Value operator -=(int delta) { return __sync_sub_and_fetch(&value, delta); }
@@ -25,64 +35,67 @@
     Value operator ++(int) { return __sync_fetch_and_add(&value, 1); }
     Value operator --(int) { return __sync_fetch_and_sub(&value, 1); }
 
-    bool swap_if(const int comparand, const int replacement) { return __sync_bool_compare_and_swap(&value, comparand, replacement); }
+    bool swap_if(const Value comparand, const Value replacement) { return __sync_bool_compare_and_swap(&value, comparand, replacement); }
 
     /// v1 = value; value &= v2; return v1;
     Value fetchAndAnd(const Value v2) { return __sync_fetch_and_and(&value, v2); }
 
     // TODO: no need for __sync_bool_compare_and_swap here?
-    bool operator ==(int v2) { return __sync_bool_compare_and_swap(&value, v2, value); }
+    bool operator ==(const Value v2) { return __sync_bool_compare_and_swap(&value, v2, value); }
 
     // TODO: no need for __sync_fetch_and_add here?
     Value get() const { return __sync_fetch_and_add(const_cast<Value*>(&value), 0); }
     operator Value () const { return get(); }
 
 private:
+
     Value value;
 };
 
-enum { AtomicOperationsSupported = 1 };
-
 #else
-/// A wrapper to provide AtomicWordT API (and asserting implementation)
+
+/// A wrapper to provide AtomicWordT API (and implementation asserting in SMP mode)
 /// where we do not support atomic operations. This avoids ifdefs in core code.
 template <class ValueType>
-class AtomicWordT
+class WordT
 {
 public:
     typedef ValueType Value;
 
-    AtomicWordT() {} // leave value unchanged
-    AtomicWordT(Value aValue): value(aValue) {} // XXX: unsafe
+    WordT() {} // leave value unchanged
+    WordT(Value aValue): value(aValue) {} // XXX: unsafe
 
-    Value operator +=(int) { assert(false); return *this; }
+    Value operator +=(int delta) { assert(Enabled()); return value += delta; }
     Value operator ++() { return *this += 1; }
     Value operator --() { return *this += -1; }
-    Value operator ++(int) { assert(false); return *this; }
-    Value operator --(int) { assert(false); return *this; }
+    Value operator ++(int) { assert(Enabled()); return value++; }
+    Value operator --(int) { assert(Enabled()); return value--; }
 
-    bool swap_if(const int comparand, const int replacement)
-    { assert(false); return false; }
+    bool swap_if(const Value comparand, const Value replacement)
+    { assert(Enabled()); return value == comparand ? value = replacement, true : false; }
 
     /// v1 = value; value &= v2; return v1;
     Value fetchAndAnd(const Value v2)
-    { assert(false); return value; }
+    { assert(Enabled()); const Value v1 = value; value &= v2; return v1; }
 
     // TODO: no need for __sync_bool_compare_and_swap here?
-    bool operator ==(int v2) { assert(false); return false; }
+    bool operator ==(const Value v2) { assert(Enabled()); return value == v2; }
 
     // TODO: no need for __sync_fetch_and_add here?
-    Value get() const { assert(false); return value; }
+    Value get() const { assert(Enabled()); return value; }
     operator Value () const { return get(); }
 
 private:
+
     Value value;
 };
 
-enum { AtomicOperationsSupported = 0 };
-
 #endif /* HAVE_ATOMIC_OPS */
 
-typedef AtomicWordT<int> AtomicWord;
+typedef WordT<int> Word;
+
+} // namespace Atomic
+
+} // namespace Ipc
 
 #endif // SQUID_IPC_ATOMIC_WORD_H
diff -u -r -N squid-3.2.0.13/src/ipc/Makefile.am squid-3.2.0.14/src/ipc/Makefile.am
--- squid-3.2.0.13/src/ipc/Makefile.am	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/Makefile.am	2011-12-13 00:08:18.000000000 +1300
@@ -4,6 +4,7 @@
 noinst_LTLIBRARIES = libipc.la
 
 libipc_la_SOURCES = \
+	AtomicWord.cc \
 	AtomicWord.h \
 	FdNotes.cc \
 	FdNotes.h \
diff -u -r -N squid-3.2.0.13/src/ipc/Makefile.in squid-3.2.0.14/src/ipc/Makefile.in
--- squid-3.2.0.13/src/ipc/Makefile.in	2011-10-14 14:48:14.000000000 +1300
+++ squid-3.2.0.14/src/ipc/Makefile.in	2011-12-13 00:10:53.000000000 +1300
@@ -56,11 +56,12 @@
 CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libipc_la_LIBADD =
-am_libipc_la_OBJECTS = FdNotes.lo Kid.lo Kids.lo Queue.lo \
-	ReadWriteLock.lo StartListening.lo StoreMap.lo StrandCoord.lo \
-	StrandSearch.lo SharedListen.lo TypedMsgHdr.lo Coordinator.lo \
-	UdsOp.lo Port.lo Strand.lo Forwarder.lo Inquirer.lo Page.lo \
-	PagePool.lo Pages.lo PageStack.lo Segment.lo
+am_libipc_la_OBJECTS = AtomicWord.lo FdNotes.lo Kid.lo Kids.lo \
+	Queue.lo ReadWriteLock.lo StartListening.lo StoreMap.lo \
+	StrandCoord.lo StrandSearch.lo SharedListen.lo TypedMsgHdr.lo \
+	Coordinator.lo UdsOp.lo Port.lo Strand.lo Forwarder.lo \
+	Inquirer.lo Page.lo PagePool.lo Pages.lo PageStack.lo \
+	Segment.lo
 libipc_la_OBJECTS = $(am_libipc_la_OBJECTS)
 DEFAULT_INCLUDES = 
 depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp
@@ -313,6 +314,7 @@
 subst_perlshell = sed -e 's,[@]PERL[@],$(PERL),g' <$(srcdir)/$@.pl.in >$@ || ($(RM) -f $@ ; exit 1)
 noinst_LTLIBRARIES = libipc.la
 libipc_la_SOURCES = \
+	AtomicWord.cc \
 	AtomicWord.h \
 	FdNotes.cc \
 	FdNotes.h \
@@ -427,6 +429,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AtomicWord.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Coordinator.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FdNotes.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Forwarder.Plo@am__quote@
diff -u -r -N squid-3.2.0.13/src/ipc/mem/PagePool.cc squid-3.2.0.14/src/ipc/mem/PagePool.cc
--- squid-3.2.0.13/src/ipc/mem/PagePool.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/mem/PagePool.cc	2011-12-13 00:08:18.000000000 +1300
@@ -24,7 +24,7 @@
 
 Ipc::Mem::PagePool::PagePool(const char *const id):
         pageIndex(shm_old(PageStack)(id)),
-        theLevels(reinterpret_cast<AtomicWord *>(
+        theLevels(reinterpret_cast<Atomic::Word *>(
                       reinterpret_cast<char *>(pageIndex.getRaw()) +
                       pageIndex->stackSize())),
         theBuf(reinterpret_cast<char *>(theLevels + PageId::maxPurpose))
diff -u -r -N squid-3.2.0.13/src/ipc/mem/PagePool.h squid-3.2.0.14/src/ipc/mem/PagePool.h
--- squid-3.2.0.13/src/ipc/mem/PagePool.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/mem/PagePool.h	2011-12-13 00:08:18.000000000 +1300
@@ -47,7 +47,7 @@
 private:
     Ipc::Mem::Pointer<PageStack> pageIndex; ///< free pages index
     /// number of shared memory pages used now for each purpose
-    AtomicWord *const theLevels;
+    Atomic::Word *const theLevels;
     char *const theBuf; ///< pages storage
 };
 
diff -u -r -N squid-3.2.0.13/src/ipc/mem/Pages.cc squid-3.2.0.14/src/ipc/mem/Pages.cc
--- squid-3.2.0.13/src/ipc/mem/Pages.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/mem/Pages.cc	2011-12-13 00:08:18.000000000 +1300
@@ -19,6 +19,7 @@
 // TODO: make pool id more unique so it does not conflict with other Squids?
 static const char *PagePoolId = "squid-page-pool";
 static Ipc::Mem::PagePool *ThePagePool = 0;
+static int TheLimits[Ipc::Mem::PageId::maxPurpose];
 
 // TODO: make configurable to avoid waste when mem-cached objects are small/big
 size_t
@@ -60,16 +61,17 @@
 size_t
 Ipc::Mem::PageLimit(const int purpose)
 {
-    switch (purpose) {
-    case PageId::cachePage:
-        return Config.memMaxSize > 0 ? Config.memMaxSize / PageSize() : 0;
-    case PageId::ioPage:
-        // XXX: this should be independent from memory cache pages
-        return PageLimit(PageId::cachePage)/2;
-    default:
-        Must(false);
-    }
-    return 0;
+    Must(0 <= purpose && purpose <= PageId::maxPurpose);
+    return TheLimits[purpose];
+}
+
+// note: adjust this if we start recording needs during reconfigure
+void
+Ipc::Mem::NotePageNeed(const int purpose, const int count)
+{
+    Must(0 <= purpose && purpose <= PageId::maxPurpose);
+    Must(count >= 0);
+    TheLimits[purpose] += count;
 }
 
 size_t
@@ -105,22 +107,8 @@
 void
 SharedMemPagesRr::run(const RunnerRegistry &r)
 {
-    if (!UsingSmp())
-        return;
-
-    // When cache_dirs start using shared memory pages, they would
-    // need to communicate their needs to us somehow.
-    if (Config.memMaxSize <= 0)
-        return;
-
-    if (Ipc::Mem::PageLimit() <= 0) {
-        if (IamMasterProcess()) {
-            debugs(54, DBG_IMPORTANT, "WARNING: mem-cache size is too small ("
-                   << (Config.memMaxSize / 1024.0) << " KB), should be >= " <<
-                   (Ipc::Mem::PageSize() / 1024.0) << " KB");
-        }
+    if (Ipc::Mem::PageLimit() <= 0)
         return;
-    }
 
     Ipc::Mem::RegisteredRunner::run(r);
 }
diff -u -r -N squid-3.2.0.13/src/ipc/mem/Pages.h squid-3.2.0.14/src/ipc/mem/Pages.h
--- squid-3.2.0.13/src/ipc/mem/Pages.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/mem/Pages.h	2011-12-13 00:08:18.000000000 +1300
@@ -51,6 +51,9 @@
 /// returns page size in bytes; all pages are assumed to be the same size
 size_t PageSize();
 
+/// claim the need for a number of pages for a given purpose
+void NotePageNeed(const int purpose, const int count);
+
 } // namespace Mem
 
 } // namespace Ipc
diff -u -r -N squid-3.2.0.13/src/ipc/mem/PageStack.cc squid-3.2.0.14/src/ipc/mem/PageStack.cc
--- squid-3.2.0.13/src/ipc/mem/PageStack.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/mem/PageStack.cc	2011-12-13 00:08:18.000000000 +1300
@@ -113,7 +113,7 @@
 size_t
 Ipc::Mem::PageStack::SharedMemorySize(const uint32_t, const unsigned int capacity, const size_t pageSize)
 {
-    const size_t levelsSize = PageId::maxPurpose * sizeof(AtomicWord);
+    const size_t levelsSize = PageId::maxPurpose * sizeof(Atomic::Word);
     const size_t pagesDataSize = capacity * pageSize;
     return StackSize(capacity) + pagesDataSize + levelsSize;
 }
diff -u -r -N squid-3.2.0.13/src/ipc/mem/PageStack.h squid-3.2.0.14/src/ipc/mem/PageStack.h
--- squid-3.2.0.13/src/ipc/mem/PageStack.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/mem/PageStack.h	2011-12-13 00:08:18.000000000 +1300
@@ -59,14 +59,14 @@
     const Offset theCapacity; ///< stack capacity, i.e. theItems size
     const size_t thePageSize; ///< page size, used to calculate shared memory size
     /// lower bound for the number of free pages (may get negative!)
-    AtomicWordT<Offset> theSize;
+    Atomic::WordT<Offset> theSize;
 
     /// last readable item index; just a hint, not a guarantee
-    AtomicWordT<Offset> theLastReadable;
+    Atomic::WordT<Offset> theLastReadable;
     /// first writable item index; just a hint, not a guarantee
-    AtomicWordT<Offset> theFirstWritable;
+    Atomic::WordT<Offset> theFirstWritable;
 
-    typedef AtomicWordT<Value> Item;
+    typedef Atomic::WordT<Value> Item;
     Item theItems[]; ///< page number storage
 };
 
diff -u -r -N squid-3.2.0.13/src/ipc/mem/Segment.cc squid-3.2.0.14/src/ipc/mem/Segment.cc
--- squid-3.2.0.13/src/ipc/mem/Segment.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/mem/Segment.cc	2011-12-13 00:08:18.000000000 +1300
@@ -16,6 +16,10 @@
 #include <sys/stat.h>
 #include <unistd.h>
 
+
+// test cases change this
+const char *Ipc::Mem::Segment::BasePath = DEFAULT_STATEDIR;
+
 void *
 Ipc::Mem::Segment::reserve(size_t chunkSize)
 {
@@ -66,12 +70,14 @@
                      S_IRUSR | S_IWUSR);
     if (theFD < 0) {
         debugs(54, 5, HERE << "shm_open " << theName << ": " << xstrerror());
-        fatal("Ipc::Mem::Segment::create failed to shm_open");
+        fatalf("Ipc::Mem::Segment::create failed to shm_open(%s): %s\n",
+               theName.termedBuf(), xstrerror());
     }
 
     if (ftruncate(theFD, aSize)) {
         debugs(54, 5, HERE << "ftruncate " << theName << ": " << xstrerror());
-        fatal("Ipc::Mem::Segment::create failed to ftruncate");
+        fatalf("Ipc::Mem::Segment::create failed to ftruncate(%s): %s\n",
+               theName.termedBuf(), xstrerror());
     }
 
     assert(statSize("Ipc::Mem::Segment::create") == aSize); // paranoid
@@ -93,9 +99,8 @@
     theFD = shm_open(theName.termedBuf(), O_RDWR, 0);
     if (theFD < 0) {
         debugs(54, 5, HERE << "shm_open " << theName << ": " << xstrerror());
-        String s = "Ipc::Mem::Segment::open failed to shm_open ";
-        s.append(theName);
-        fatal(s.termedBuf());
+        fatalf("Ipc::Mem::Segment::open failed to shm_open(%s): %s\n",
+               theName.termedBuf(), xstrerror());
     }
 
     theSize = statSize("Ipc::Mem::Segment::open");
@@ -120,7 +125,8 @@
         mmap(NULL, theSize, PROT_READ | PROT_WRITE, MAP_SHARED, theFD, 0);
     if (p == MAP_FAILED) {
         debugs(54, 5, HERE << "mmap " << theName << ": " << xstrerror());
-        fatal("Ipc::Mem::Segment::attach failed to mmap");
+        fatalf("Ipc::Mem::Segment::attach failed to mmap(%s): %s\n",
+               theName.termedBuf(), xstrerror());
     }
     theMem = p;
 }
@@ -134,7 +140,8 @@
 
     if (munmap(theMem, theSize)) {
         debugs(54, 5, HERE << "munmap " << theName << ": " << xstrerror());
-        fatal("Ipc::Mem::Segment::detach failed to munmap");
+        fatalf("Ipc::Mem::Segment::detach failed to munmap(%s): %s\n",
+               theName.termedBuf(), xstrerror());
     }
     theMem = 0;
 }
@@ -158,21 +165,24 @@
     memset(&s, 0, sizeof(s));
 
     if (fstat(theFD, &s) != 0) {
-        debugs(54, 5, HERE << "fstat " << theName << ": " << xstrerror());
-        String s = context;
-        s.append("failed to fstat(2) ");
-        s.append(theName);
-        fatal(s.termedBuf());
+        debugs(54, 5, HERE << context << " fstat " << theName << ": " << xstrerror());
+        fatalf("Ipc::Mem::Segment::statSize: %s failed to fstat(%s): %s\n",
+               context, theName.termedBuf(), xstrerror());
     }
 
     return s.st_size;
 }
 
-/// Generate name for shared memory segment. Replaces all slashes with dots.
+/// Generate name for shared memory segment. Starts with a prefix required
+/// for cross-platform portability and replaces all slashes in ID with dots.
 String
 Ipc::Mem::Segment::GenerateName(const char *id)
 {
-    String name("/squid-");
+    assert(BasePath);
+    static const bool nameIsPath = shm_portable_segment_name_is_path();
+    String name(nameIsPath ? BasePath : "/squid-");
+
+    // append id, replacing slashes with dots
     for (const char *slash = strchr(id, '/'); slash; slash = strchr(id, '/')) {
         if (id != slash) {
             name.append(id, slash - id);
@@ -181,6 +191,8 @@
         id = slash + 1;
     }
     name.append(id);
+
+    name.append(".shm"); // to distinguish from non-segments when nameIsPath
     return name;
 }
 
@@ -200,14 +212,16 @@
 {
     if (doUnlink) {
         delete [] static_cast<char *>(theMem);
-        debugs(54, 3, HERE << "deleted " << theName << " segment");
+        theMem = NULL;
+        Segments.erase(theName);
+        debugs(54, 3, HERE << "unlinked " << theName << " fake segment");
     }
 }
 
 bool
 Ipc::Mem::Segment::Enabled()
 {
-    return !InDaemonMode() || (!UsingSmp() && IamWorkerProcess());
+    return !UsingSmp() && IamWorkerProcess();
 }
 
 void
@@ -249,9 +263,11 @@
 Ipc::Mem::Segment::checkSupport(const char *const context)
 {
     if (!Enabled()) {
-        debugs(54, 5, HERE << "True shared memory segments are not supported. "
+        debugs(54, 5, HERE << context <<
+               ": True shared memory segments are not supported. "
                "Cannot fake shared segments in SMP config.");
-        fatalf("%s failed", context);
+        fatalf("Ipc::Mem::Segment: Cannot fake shared segments in SMP config (%s)\n",
+               context);
     }
 }
 
diff -u -r -N squid-3.2.0.13/src/ipc/mem/Segment.h squid-3.2.0.14/src/ipc/mem/Segment.h
--- squid-3.2.0.13/src/ipc/mem/Segment.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/mem/Segment.h	2011-12-13 00:08:18.000000000 +1300
@@ -35,6 +35,8 @@
     void *mem() { return reserve(0); } ///< pointer to the next chunk
     void *reserve(size_t chunkSize); ///< reserve and return the next chunk
 
+    /// common path of all segment names in path-based environments
+    static const char *BasePath;
 
 private:
 
diff -u -r -N squid-3.2.0.13/src/ipc/Queue.cc squid-3.2.0.14/src/ipc/Queue.cc
--- squid-3.2.0.13/src/ipc/Queue.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/Queue.cc	2011-12-13 00:08:18.000000000 +1300
@@ -149,6 +149,12 @@
     debugs(54, 7, HERE << "queue " << id << " reader: " << localReader.id);
 }
 
+int
+Ipc::FewToFewBiQueue::MaxItemsCount(const int groupASize, const int groupBSize, const int capacity)
+{
+    return capacity * groupASize * groupBSize * 2;
+}
+
 bool
 Ipc::FewToFewBiQueue::validProcessId(const Group group, const int processId) const
 {
@@ -197,6 +203,22 @@
     return (*queues)[oneToOneQueueIndex(fromGroup, fromProcessId, toGroup, toProcessId)];
 }
 
+/// incoming queue from a given remote process
+const Ipc::OneToOneUniQueue &
+Ipc::FewToFewBiQueue::inQueue(const int remoteProcessId) const
+{
+    return oneToOneQueue(remoteGroup(), remoteProcessId,
+                         theLocalGroup, theLocalProcessId);
+}
+
+/// outgoing queue to a given remote process
+const Ipc::OneToOneUniQueue &
+Ipc::FewToFewBiQueue::outQueue(const int remoteProcessId) const
+{
+    return oneToOneQueue(theLocalGroup, theLocalProcessId,
+                         remoteGroup(), remoteProcessId);
+}
+
 int
 Ipc::FewToFewBiQueue::readerIndex(const Group group, const int processId) const
 {
@@ -233,21 +255,6 @@
     // theLastPopProcessId = remoteProcessId;
 }
 
-bool
-Ipc::FewToFewBiQueue::popReady() const
-{
-    // mimic FewToFewBiQueue::pop() but quit just before popping
-    int popProcessId = theLastPopProcessId; // preserve for future pop()
-    for (int i = 0; i < remoteGroupSize(); ++i) {
-        if (++popProcessId >= remoteGroupIdOffset() + remoteGroupSize())
-            popProcessId = remoteGroupIdOffset();
-        const OneToOneUniQueue &queue = oneToOneQueue(remoteGroup(), popProcessId, theLocalGroup, theLocalProcessId);
-        if (!queue.empty())
-            return true;
-    }
-    return false; // most likely, no process had anything to pop
-}
-
 Ipc::QueueReader::Balance &
 Ipc::FewToFewBiQueue::localBalance()
 {
@@ -255,6 +262,13 @@
     return r.balance;
 }
 
+const Ipc::QueueReader::Balance &
+Ipc::FewToFewBiQueue::balance(const int remoteProcessId) const
+{
+    const QueueReader &r = reader(remoteGroup(), remoteProcessId);
+    return r.balance;
+}
+
 Ipc::QueueReader::Rate &
 Ipc::FewToFewBiQueue::localRateLimit()
 {
@@ -262,6 +276,13 @@
     return r.rateLimit;
 }
 
+const Ipc::QueueReader::Rate &
+Ipc::FewToFewBiQueue::rateLimit(const int remoteProcessId) const
+{
+    const QueueReader &r = reader(remoteGroup(), remoteProcessId);
+    return r.rateLimit;
+}
+
 Ipc::FewToFewBiQueue::Metadata::Metadata(const int aGroupASize, const int aGroupAIdOffset, const int aGroupBSize, const int aGroupBIdOffset):
         theGroupASize(aGroupASize), theGroupAIdOffset(aGroupAIdOffset),
         theGroupBSize(aGroupBSize), theGroupBIdOffset(aGroupBIdOffset)
diff -u -r -N squid-3.2.0.13/src/ipc/Queue.h squid-3.2.0.14/src/ipc/Queue.h
--- squid-3.2.0.13/src/ipc/Queue.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/Queue.h	2011-12-13 00:08:18.000000000 +1300
@@ -42,15 +42,15 @@
     void clearSignal() { unblock(); popSignal.swap_if(1,0); }
 
 private:
-    AtomicWord popBlocked; ///< whether the reader is blocked on pop()
-    AtomicWord popSignal; ///< whether writer has sent and reader has not received notification
+    Atomic::Word popBlocked; ///< whether the reader is blocked on pop()
+    Atomic::Word popSignal; ///< whether writer has sent and reader has not received notification
 
 public:
-    typedef AtomicWord Rate; ///< pop()s per second
+    typedef Atomic::Word Rate; ///< pop()s per second
     Rate rateLimit; ///< pop()s per second limit if positive
 
     // we need a signed atomic type because balance may get negative
-    typedef AtomicWordT<int> AtomicSignedMsec;
+    typedef Atomic::WordT<int> AtomicSignedMsec;
     typedef AtomicSignedMsec Balance;
     /// how far ahead the reader is compared to a perfect read/sec event rate
     Balance balance;
@@ -115,7 +115,7 @@
     unsigned int theIn; ///< input index, used only in push()
     unsigned int theOut; ///< output index, used only in pop()
 
-    AtomicWord theSize; ///< number of items in the queue
+    Atomic::Word theSize; ///< number of items in the queue
     const unsigned int theMaxItemSize; ///< maximum item size
     const int theCapacity; ///< maximum number of items, i.e. theBuffer size
 
@@ -186,6 +186,9 @@
     enum Group { groupA = 0, groupB = 1 };
     FewToFewBiQueue(const String &id, const Group aLocalGroup, const int aLocalProcessId);
 
+    /// maximum number of items in the queue
+    static int MaxItemsCount(const int groupASize, const int groupBSize, const int capacity);
+
     Group localGroup() const { return theLocalGroup; }
     Group remoteGroup() const { return theLocalGroup == groupA ? groupB : groupA; }
 
@@ -198,24 +201,38 @@
     /// calls OneToOneUniQueue::push() using the given process queue
     template <class Value> bool push(const int remoteProcessId, const Value &value);
 
-    // TODO: rename to findOldest() or some such
-    /// calls OneToOneUniQueue::peek() using the given process queue
-    template<class Value> bool peek(const int remoteProcessId, Value &value) const;
+    /// finds the oldest item in incoming and outgoing queues between
+    /// us and the given remote process
+    template<class Value> bool findOldest(const int remoteProcessId, Value &value) const;
 
-    /// returns true if pop() would have probably succeeded but does not pop()
-    bool popReady() const;
+    /// peeks at the item likely to be pop()ed next
+    template<class Value> bool peek(int &remoteProcessId, Value &value) const;
 
     /// returns local reader's balance
     QueueReader::Balance &localBalance();
 
+    /// returns reader's balance for a given remote process
+    const QueueReader::Balance &balance(const int remoteProcessId) const;
+
     /// returns local reader's rate limit
     QueueReader::Rate &localRateLimit();
 
+    /// returns reader's rate limit for a given remote process
+    const QueueReader::Rate &rateLimit(const int remoteProcessId) const;
+
+    /// number of items in incoming queue from a given remote process
+    int inSize(const int remoteProcessId) const { return inQueue(remoteProcessId).size(); }
+
+    /// number of items in outgoing queue to a given remote process
+    int outSize(const int remoteProcessId) const { return outQueue(remoteProcessId).size(); }
+
 private:
     bool validProcessId(const Group group, const int processId) const;
     int oneToOneQueueIndex(const Group fromGroup, const int fromProcessId, const Group toGroup, const int toProcessId) const;
     const OneToOneUniQueue &oneToOneQueue(const Group fromGroup, const int fromProcessId, const Group toGroup, const int toProcessId) const;
     OneToOneUniQueue &oneToOneQueue(const Group fromGroup, const int fromProcessId, const Group toGroup, const int toProcessId);
+    const OneToOneUniQueue &inQueue(const int remoteProcessId) const;
+    const OneToOneUniQueue &outQueue(const int remoteProcessId) const;
     QueueReader &reader(const Group group, const int processId);
     const QueueReader &reader(const Group group, const int processId) const;
     int readerIndex(const Group group, const int processId) const;
@@ -350,22 +367,44 @@
 
 template <class Value>
 bool
-FewToFewBiQueue::peek(const int remoteProcessId, Value &value) const
+FewToFewBiQueue::findOldest(const int remoteProcessId, Value &value) const
 {
     // we may be called before remote process configured its queue end
     if (!validProcessId(remoteGroup(), remoteProcessId))
         return false;
 
     // we need the oldest value, so start with the incoming, them-to-us queue:
-    const OneToOneUniQueue &inQueue = oneToOneQueue(remoteGroup(), remoteProcessId, theLocalGroup, theLocalProcessId);
-    debugs(54, 2, HERE << "peeking from " << remoteProcessId << " to " << theLocalProcessId << " at " << inQueue.size());
-    if (inQueue.peek(value))
+    const OneToOneUniQueue &in = inQueue(remoteProcessId);
+    debugs(54, 2, HERE << "peeking from " << remoteProcessId << " to " <<
+           theLocalProcessId << " at " << in.size());
+    if (in.peek(value))
         return true;
 
     // if the incoming queue is empty, check the outgoing, us-to-them queue:
-    const OneToOneUniQueue &outQueue = oneToOneQueue(theLocalGroup, theLocalProcessId, remoteGroup(), remoteProcessId);
-    debugs(54, 2, HERE << "peeking from " << theLocalProcessId << " to " << remoteProcessId << " at " << outQueue.size());
-    return outQueue.peek(value);
+    const OneToOneUniQueue &out = outQueue(remoteProcessId);
+    debugs(54, 2, HERE << "peeking from " << theLocalProcessId << " to " <<
+           remoteProcessId << " at " << out.size());
+    return out.peek(value);
+}
+
+template <class Value>
+bool
+FewToFewBiQueue::peek(int &remoteProcessId, Value &value) const
+{
+    // mimic FewToFewBiQueue::pop() but quit just before popping
+    int popProcessId = theLastPopProcessId; // preserve for future pop()
+    for (int i = 0; i < remoteGroupSize(); ++i) {
+        if (++popProcessId >= remoteGroupIdOffset() + remoteGroupSize())
+            popProcessId = remoteGroupIdOffset();
+        const OneToOneUniQueue &queue =
+            oneToOneQueue(remoteGroup(), popProcessId,
+                          theLocalGroup, theLocalProcessId);
+        if (queue.peek(value)) {
+            remoteProcessId = popProcessId;
+            return true;
+        }
+    }
+    return false; // most likely, no process had anything to pop
 }
 
 } // namespace Ipc
diff -u -r -N squid-3.2.0.13/src/ipc/ReadWriteLock.h squid-3.2.0.14/src/ipc/ReadWriteLock.h
--- squid-3.2.0.13/src/ipc/ReadWriteLock.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/ReadWriteLock.h	2011-12-13 00:08:18.000000000 +1300
@@ -26,8 +26,8 @@
     void updateStats(ReadWriteLockStats &stats) const;
 
 public:
-    mutable AtomicWord readers; ///< number of users trying to read
-    AtomicWord writers; ///< number of writers trying to modify protected data
+    mutable Atomic::Word readers; ///< number of users trying to read
+    Atomic::Word writers; ///< number of writers trying to modify protected data
 };
 
 
diff -u -r -N squid-3.2.0.13/src/ipc/StoreMap.cc squid-3.2.0.14/src/ipc/StoreMap.cc
--- squid-3.2.0.13/src/ipc/StoreMap.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/StoreMap.cc	2011-12-13 00:08:18.000000000 +1300
@@ -46,7 +46,7 @@
         assert(s.state != Slot::Writeable); // until we start breaking locks
 
         // free if the entry was used, keeping the entry locked
-        if (s.waitingToBeFreed == true || s.state == Slot::Readable)
+        if (s.waitingToBeFreed || s.state == Slot::Readable)
             freeLocked(s, true);
 
         assert(s.state == Slot::Empty);
diff -u -r -N squid-3.2.0.13/src/ipc/StoreMap.h squid-3.2.0.14/src/ipc/StoreMap.h
--- squid-3.2.0.13/src/ipc/StoreMap.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc/StoreMap.h	2011-12-13 00:08:18.000000000 +1300
@@ -22,7 +22,7 @@
 
 public:
     mutable ReadWriteLock lock; ///< protects slot data below
-    AtomicWordT<uint8_t> waitingToBeFreed; ///< may be accessed w/o a lock
+    Atomic::WordT<uint8_t> waitingToBeFreed; ///< may be accessed w/o a lock
 
     uint64_t key[2]; ///< StoreEntry key
 
@@ -65,7 +65,7 @@
 
         const int limit; ///< maximum number of map slots
         const size_t extrasSize; ///< size of slot extra data
-        AtomicWord count; ///< current number of map slots
+        Atomic::Word count; ///< current number of map slots
         Slot slots[]; ///< slots storage
     };
 
@@ -195,7 +195,7 @@
 
 } // namespace Ipc
 
-// We do not reuse struct _fileMap because we cannot control its size,
+// We do not reuse FileMap because we cannot control its size,
 // resulting in sfilenos that are pointing beyond the database.
 
 #endif /* SQUID_IPC_STORE_MAP_H */
diff -u -r -N squid-3.2.0.13/src/ipc.cc squid-3.2.0.14/src/ipc.cc
--- squid-3.2.0.13/src/ipc.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ipc.cc	2011-12-13 00:08:18.000000000 +1300
@@ -87,8 +87,7 @@
     int t1, t2, t3;
     int x;
 
-#if USE_POLL && defined(_SQUID_OSF_)
-
+#if USE_POLL && _SQUID_OSF_
     assert(type != IPC_FIFO);
 #endif
 
diff -u -r -N squid-3.2.0.13/src/log/access_log.cc squid-3.2.0.14/src/log/access_log.cc
--- squid-3.2.0.13/src/log/access_log.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/log/access_log.cc	2011-12-13 00:08:18.000000000 +1300
@@ -47,7 +47,7 @@
 #include "eui/Eui48.h"
 #include "eui/Eui64.h"
 #endif
-#include "format/Tokens.h"
+#include "format/Token.h"
 #include "hier_code.h"
 #include "HttpReply.h"
 #include "HttpRequest.h"
@@ -322,8 +322,8 @@
 
 #if USE_ADAPTATION
         for (Format::Token * curr_token = (log->logFormat?log->logFormat->format:NULL); curr_token; curr_token = curr_token->next) {
-            if (curr_token->type == Format::LTF_ADAPTATION_SUM_XACT_TIMES ||
-                    curr_token->type == Format::LTF_ADAPTATION_ALL_XACT_TIMES ||
+            if (curr_token->type == Format::LFT_ADAPTATION_SUM_XACT_TIMES ||
+                    curr_token->type == Format::LFT_ADAPTATION_ALL_XACT_TIMES ||
                     curr_token->type == Format::LFT_ADAPTATION_LAST_HEADER ||
                     curr_token->type == Format::LFT_ADAPTATION_LAST_HEADER_ELEM ||
                     curr_token->type == Format::LFT_ADAPTATION_LAST_ALL_HEADERS) {
diff -u -r -N squid-3.2.0.13/src/log/FormatHttpdCombined.cc squid-3.2.0.14/src/log/FormatHttpdCombined.cc
--- squid-3.2.0.13/src/log/FormatHttpdCombined.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/log/FormatHttpdCombined.cc	2011-12-13 00:08:18.000000000 +1300
@@ -34,7 +34,7 @@
 
 #include "config.h"
 #include "AccessLogEntry.h"
-#include "format/Tokens.h"
+#include "format/Token.h"
 #include "format/Quoting.h"
 #include "HttpRequest.h"
 #include "log/File.h"
diff -u -r -N squid-3.2.0.13/src/log/FormatHttpdCommon.cc squid-3.2.0.14/src/log/FormatHttpdCommon.cc
--- squid-3.2.0.13/src/log/FormatHttpdCommon.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/log/FormatHttpdCommon.cc	2011-12-13 00:08:18.000000000 +1300
@@ -35,7 +35,7 @@
 #include "config.h"
 #include "AccessLogEntry.h"
 #include "format/Quoting.h"
-#include "format/Tokens.h"
+#include "format/Token.h"
 #include "log/File.h"
 #include "log/Formats.h"
 #include "SquidTime.h"
diff -u -r -N squid-3.2.0.13/src/log/FormatSquidCustom.cc squid-3.2.0.14/src/log/FormatSquidCustom.cc
--- squid-3.2.0.13/src/log/FormatSquidCustom.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/log/FormatSquidCustom.cc	2011-12-13 00:08:18.000000000 +1300
@@ -34,7 +34,6 @@
 
 #include "config.h"
 #include "AccessLogEntry.h"
-#include "format/Tokens.h"
 #include "log/File.h"
 #include "log/Formats.h"
 #include "MemBuf.h"
diff -u -r -N squid-3.2.0.13/src/log/FormatSquidNative.cc squid-3.2.0.14/src/log/FormatSquidNative.cc
--- squid-3.2.0.13/src/log/FormatSquidNative.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/log/FormatSquidNative.cc	2011-12-13 00:08:18.000000000 +1300
@@ -35,7 +35,7 @@
 #include "config.h"
 #include "AccessLogEntry.h"
 #include "format/Quoting.h"
-#include "format/Tokens.h"
+#include "format/Token.h"
 #include "log/File.h"
 #include "log/Formats.h"
 #include "SquidTime.h"
diff -u -r -N squid-3.2.0.13/src/main.cc squid-3.2.0.14/src/main.cc
--- squid-3.2.0.13/src/main.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/main.cc	2011-12-13 00:08:18.000000000 +1300
@@ -63,6 +63,7 @@
 #include "event.h"
 #include "EventLoop.h"
 #include "ExternalACL.h"
+#include "format/Token.h"
 #include "fs/Module.h"
 #include "PeerSelectState.h"
 #include "Store.h"
@@ -419,26 +420,18 @@
                 opt_send_signal = SIGHUP;
             else if (!strncmp(optarg, "rotate", strlen(optarg)))
                 /** \li On rotate send SIGQUIT or SIGUSR1. */
-#ifdef _SQUID_LINUX_THREADS_
-
+#if defined(_SQUID_LINUX_THREADS_)
                 opt_send_signal = SIGQUIT;
-
 #else
-
                 opt_send_signal = SIGUSR1;
-
 #endif
 
             else if (!strncmp(optarg, "debug", strlen(optarg)))
                 /** \li On debug send SIGTRAP or SIGUSR2. */
-#ifdef _SQUID_LINUX_THREADS_
-
+#if defined(_SQUID_LINUX_THREADS_)
                 opt_send_signal = SIGTRAP;
-
 #else
-
                 opt_send_signal = SIGUSR2;
-
 #endif
 
             else if (!strncmp(optarg, "shutdown", strlen(optarg)))
@@ -678,7 +671,6 @@
         htcpInit();
 #endif
 #if SQUID_SNMP
-
         snmpConnectionOpen();
 #endif
 
@@ -722,8 +714,7 @@
 
         icmpEngine.Close();
 #if SQUID_SNMP
-
-        snmpConnectionShutdown();
+        snmpConnectionClose();
 #endif
 
         asnFreeMemory();
@@ -743,10 +734,6 @@
 
     htcpSocketClose();
 #endif
-#if SQUID_SNMP
-
-    snmpConnectionClose();
-#endif
 #if USE_DNSSERVERS
 
     dnsShutdown();
@@ -872,6 +859,11 @@
 
     mimeInit(Config.mimeTablePathname);
 
+#if USE_UNLINKD
+    if (unlinkdNeeded())
+        unlinkdInit();
+#endif
+
 #if USE_DELAY_POOLS
     Config.ClientDelay.finalize();
 #endif
@@ -1085,7 +1077,8 @@
 
     if (!configured_once) {
 #if USE_UNLINKD
-        unlinkdInit();
+        if (unlinkdNeeded())
+            unlinkdInit();
 #endif
 
         urlInitialize();
@@ -1139,7 +1132,7 @@
     if (!configured_once)
         writePidFile();		/* write PID file */
 
-#ifdef _SQUID_LINUX_THREADS_
+#if defined(_SQUID_LINUX_THREADS_)
 
     squid_signal(SIGQUIT, rotate_logs, SA_RESTART);
 
@@ -1399,6 +1392,8 @@
 #endif
         Ip::ProbeTransport(); // determine IPv4 or IPv6 capabilities before parsing.
 
+        Format::Token::Init(); // XXX: temporary. Use a runners registry of pre-parse runners instead.
+
         parse_err = parseConfigFile(ConfigFile);
 
         Mem::Report();
@@ -1442,6 +1437,7 @@
 
     debugs(1,2, HERE << "Doing post-config initialization\n");
     leave_suid();
+    ActivateRegistered(rrClaimMemoryNeeds);
     ActivateRegistered(rrAfterConfig);
     enter_suid();
 
@@ -1811,6 +1807,7 @@
         if (!TheKids.someRunning() && !TheKids.shouldRestartSome()) {
             leave_suid();
             DeactivateRegistered(rrAfterConfig);
+            DeactivateRegistered(rrClaimMemoryNeeds);
             enter_suid();
 
             if (TheKids.someSignaled(SIGINT) || TheKids.someSignaled(SIGTERM)) {
@@ -1867,7 +1864,6 @@
     htcpSocketClose();
 #endif
 #if SQUID_SNMP
-
     snmpConnectionClose();
 #endif
 #if USE_WCCP
@@ -1913,6 +1909,7 @@
     StoreFileSystem::FreeAllFs();
     DiskIOModule::FreeAllModules();
     DeactivateRegistered(rrAfterConfig);
+    DeactivateRegistered(rrClaimMemoryNeeds);
 #if LEAK_CHECK_MODE && 0 /* doesn't work at the moment */
 
     configFreeMemory();
diff -u -r -N squid-3.2.0.13/src/Makefile.am squid-3.2.0.14/src/Makefile.am
--- squid-3.2.0.13/src/Makefile.am	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/Makefile.am	2011-12-13 00:08:18.000000000 +1300
@@ -186,6 +186,7 @@
 	recv-announce \
 	tests/testUfs \
 	tests/testCoss \
+	tests/testRock \
 	tests/testNull \
 	ufsdump
 
@@ -322,6 +323,7 @@
 	fd.cc \
 	fde.cc \
 	fde.h \
+	FileMap.h \
 	filemap.cc \
 	forward.cc \
 	forward.h \
@@ -357,6 +359,7 @@
 	HttpHeaderMask.h \
 	HttpHeaderRange.h \
 	HttpHeaderTools.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpControlMsg.h \
 	HttpMsg.cc \
@@ -461,6 +464,8 @@
 	StoreMetaVary.cc \
 	StoreMetaVary.h \
 	StoreSearch.h \
+	StoreStats.cc \
+	StoreStats.h \
 	StoreSwapLogData.cc \
 	StoreSwapLogData.h \
 	Server.cc \
@@ -626,7 +631,11 @@
 	$(COMPAT_LIB) \
 	$(XTRA_LIBS)
 
-dnsserver_SOURCES = dnsserver.cc SquidNew.cc tests/stub_debug.cc test_tools.cc time.cc
+## dnsserver is a standalone helper. Do not link to any internal libraries
+dnsserver_SOURCES = dnsserver.cc
+## SquidNew.cc tests/stub_debug.cc test_tools.cc time.cc
+dnsserver_LDADD = $(COMPAT_LIB)
+
 recv_announce_SOURCES = recv-announce.cc
 
 ## What requires what..
@@ -901,7 +910,7 @@
 	true
 
 cf_parser.cci: cf.data cf_gen$(EXEEXT)
-	./cf_gen cf.data $(srcdir)/cf.data.depend
+	./cf_gen$(EXEEXT) cf.data $(srcdir)/cf.data.depend
 
 cf_gen_defines.cci: $(srcdir)/cf_gen_defines $(srcdir)/cf.data.pre
 	$(AWK) -f $(srcdir)/cf_gen_defines <$(srcdir)/cf.data.pre >$@ || ($(RM) -f $@ && exit 1)
@@ -1001,6 +1010,7 @@
 	tests/testStore \
 	tests/testString \
 	tests/testURL \
+	tests/testConfigParser \
 	$(STORE_TESTS)
 
 ## NP: required to run the above list. check_PROGRAMS only builds the binaries...
@@ -1034,6 +1044,7 @@
 	cbdata.cc \
 	cbdata.h \
 	ETag.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
@@ -1072,6 +1083,7 @@
 	tests/stub_HelperChildConfig.cc \
 	tests/stub_StatHist.cc \
 	tests/stub_store.cc \
+	tests/stub_store_stats.cc \
 	tests/testHttpReply.cc \
 	tests/testHttpReply.h \
 	tests/testMain.cc \
@@ -1125,6 +1137,7 @@
 	DiskIO/WriteRequest.cc \
 	ETag.cc \
 	event.cc \
+	FileMap.h \
 	filemap.cc \
 	HelperChildConfig.h \
 	HelperChildConfig.cc \
@@ -1176,6 +1189,7 @@
 	tests/stub_mime.cc \
 	tests/stub_store.cc \
 	tests/stub_store_rebuild.cc \
+	tests/stub_store_stats.cc \
 	tests/stub_store_swapout.cc \
 	tests/stub_tools.cc \
 	tests/stub_cache_manager.cc \
@@ -1250,6 +1264,7 @@
 	tests/testMain.cc \
 	tests/stub_main_cc.cc \
 	tests/stub_ipc_Forwarder.cc \
+	tests/stub_store_stats.cc \
 	time.cc \
 	BodyPipe.cc \
 	cache_manager.cc \
@@ -1285,6 +1300,7 @@
 	ExternalACLEntry.cc \
 	fd.cc \
 	fde.cc \
+	FileMap.h \
 	filemap.cc \
 	forward.cc \
 	fqdncache.cc \
@@ -1296,6 +1312,7 @@
 	HelperChildConfig.cc \
 	$(HTCPSOURCE) \
 	http.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHeader.cc \
 	HttpHeaderTools.cc \
@@ -1435,7 +1452,9 @@
 	EventLoop.cc \
 	event.cc \
 	fd.cc \
+	FileMap.h \
 	filemap.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
@@ -1502,6 +1521,7 @@
 	tests/stub_pconn.cc \
 	tests/stub_Port.cc \
 	tests/stub_store_client.cc \
+	tests/stub_store_stats.cc \
 	tests/stub_store_rebuild.cc \
 	tests/stub_tools.cc \
 	tests/stub_UdsOp.cc \
@@ -1600,6 +1620,7 @@
 	FadingCounter.cc \
 	fd.cc \
 	fde.cc \
+	FileMap.h \
 	filemap.cc \
 	forward.cc \
 	fqdncache.cc \
@@ -1611,6 +1632,7 @@
 	hier_code.h \
 	$(HTCPSOURCE) \
 	http.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHeader.cc \
 	HttpHeaderTools.cc \
@@ -1692,6 +1714,7 @@
 	tests/testMain.cc \
 	tests/stub_main_cc.cc \
 	tests/stub_ipc_Forwarder.cc \
+	tests/stub_store_stats.cc \
 	time.cc \
 	tools.cc \
 	tunnel.cc \
@@ -1787,6 +1810,7 @@
 	FadingCounter.cc \
 	fd.cc \
 	fde.cc \
+	FileMap.h \
 	filemap.cc \
 	forward.cc \
 	fqdncache.cc \
@@ -1798,6 +1822,7 @@
 	hier_code.h \
 	$(HTCPSOURCE) \
 	http.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHeader.cc \
 	HttpHeaderTools.cc \
@@ -1878,6 +1903,7 @@
 	tests/testMain.cc \
 	tests/stub_main_cc.cc \
 	tests/stub_ipc_Forwarder.cc \
+	tests/stub_store_stats.cc \
 	time.cc \
 	tools.cc \
 	tunnel.cc \
@@ -1972,6 +1998,7 @@
 	FadingCounter.cc \
 	fd.cc \
 	fde.cc \
+	FileMap.h \
 	filemap.cc \
 	forward.cc \
 	fqdncache.cc \
@@ -1983,6 +2010,7 @@
 	hier_code.h \
 	$(HTCPSOURCE) \
 	http.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
@@ -2060,6 +2088,7 @@
 	tests/stub_ipc_Forwarder.cc \
 	tests/stub_main_cc.cc \
 	tests/stub_MemStore.cc \
+	tests/stub_store_stats.cc \
 	time.cc \
 	tools.cc \
 	tunnel.cc \
@@ -2165,6 +2194,7 @@
 	tests/stub_DiskIOModule.cc \
 	tests/stub_main_cc.cc \
 	tests/stub_ipc_Forwarder.cc \
+	tests/stub_store_stats.cc \
 	time.cc \
 	BodyPipe.cc \
 	cache_manager.cc \
@@ -2209,6 +2239,7 @@
 	hier_code.h \
 	$(HTCPSOURCE) \
 	http.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHeader.cc \
 	HttpHeaderTools.cc \
@@ -2345,6 +2376,7 @@
 	ETag.cc \
 	event.cc \
 	EventLoop.cc \
+	FileMap.h \
 	filemap.cc \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
@@ -2398,6 +2430,8 @@
 	tests/stub_helper.cc \
 	tests/stub_HelperChildConfig.cc \
 	tests/stub_http.cc \
+	HttpBody.h \
+	HttpBody.cc \
 	tests/stub_HttpReply.cc \
 	tests/stub_HttpRequest.cc \
 	tests/stub_libcomm.cc \
@@ -2406,6 +2440,7 @@
 	tests/stub_mime.cc \
 	tests/stub_Port.cc \
 	tests/stub_store_client.cc \
+	tests/stub_store_stats.cc \
 	tests/stub_store_rebuild.cc \
 	tests/stub_store_swapout.cc \
 	tests/stub_tools.cc \
@@ -2530,9 +2565,12 @@
 	tests/stub_UdsOp.cc \
 	tests/stub_internal.cc \
 	tests/stub_store_rebuild.cc \
+	tests/stub_store_stats.cc \
 	fd.cc \
 	disk.cc \
+	FileMap.h \
 	filemap.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpReply.cc \
 	HttpStatusLine.cc \
@@ -2651,6 +2689,132 @@
 tests_testUfs_DEPENDENCIES = \
 	$(SWAP_TEST_DS)
 
+tests_testRock_SOURCES = \
+	cbdata.cc \
+	CacheDigest.cc \
+	ConfigOption.cc \
+	ConfigParser.cc \
+	disk.cc \
+	ETag.cc \
+	EventLoop.cc \
+	event.cc \
+	fd.cc \
+	FileMap.h \
+	filemap.cc \
+	HttpBody.h \
+	HttpBody.cc \
+	HttpHdrCc.cc \
+	HttpHdrContRange.cc \
+	HttpHdrRange.cc \
+	HttpHdrSc.cc \
+	HttpHdrScTarget.cc \
+	HttpHeader.cc \
+	HttpHeaderTools.cc \
+	HttpMsg.cc \
+	HttpReply.cc \
+	HttpRequestMethod.cc \
+	HttpStatusLine.cc \
+	int.cc \
+	list.cc \
+	mem.cc \
+	MemBuf.cc \
+	MemObject.cc \
+	mem_node.cc \
+	Packer.cc \
+	Parsing.cc \
+	RemovalPolicy.cc \
+	StatHist.cc \
+	stmem.cc \
+	store.cc \
+	StoreFileSystem.cc \
+	StoreIOState.cc \
+	StoreMeta.cc \
+	StoreMetaMD5.cc \
+	StoreMetaSTD.cc \
+	StoreMetaSTDLFS.cc \
+	StoreMetaURL.cc \
+	StoreMetaUnpacker.cc \
+	StoreMetaVary.cc \
+	StoreSwapLogData.cc \
+	store_dir.cc \
+	store_io.cc \
+	store_key_md5.cc \
+	store_swapmeta.cc \
+	store_swapout.cc \
+	String.cc \
+	SwapDir.cc \
+	tests/testRock.cc \
+	tests/testMain.cc \
+	tests/testRock.h \
+	tests/testStoreSupport.cc \
+	tests/testStoreSupport.h \
+	tests/stub_access_log.cc \
+	tests/stub_cache_cf.cc \
+	tests/stub_cache_manager.cc \
+	tests/stub_client_db.cc \
+	tests/stub_client_side_request.cc \
+	tests/stub_debug.cc \
+	tests/stub_errorpage.cc \
+	tests/stub_HelperChildConfig.cc \
+	tests/stub_http.cc \
+	tests/stub_HttpRequest.cc \
+	tests/stub_icp.cc \
+	tests/stub_ipc.cc \
+	tests/stub_ipcache.cc \
+	tests/stub_libicmp.cc \
+	tests/stub_MemStore.cc \
+	tests/stub_mime.cc \
+	tests/stub_Port.cc \
+	tests/stub_pconn.cc \
+	tests/stub_store_client.cc \
+	tests/stub_store_rebuild.cc \
+	tests/stub_store_stats.cc \
+	tests/stub_tools.cc \
+	tests/stub_UdsOp.cc \
+	time.cc \
+	url.cc \
+	URLScheme.cc \
+	wordlist.cc \
+	$(DELAY_POOL_SOURCE) \
+	$(DISKIO_SOURCE) \
+	$(UNLINKDSOURCE)
+nodist_tests_testRock_SOURCES = \
+	$(DISKIO_GEN_SOURCE) \
+	swap_log_op.cc \
+	SquidMath.cc \
+	SquidMath.h \
+	$(TESTSOURCES)
+tests_testRock_LDADD = \
+	anyp/libanyp.la \
+	libsquid.la \
+	comm/libcomm.la \
+	ip/libip.la \
+	fs/libfs.la \
+	$(AUTH_LIBS) \
+	$(COMMON_LIBS) \
+	$(REPL_OBJS) \
+	$(DISK_LIBS) \
+	$(DISK_OS_LIBS) \
+	acl/libacls.la \
+	acl/libapi.la \
+	acl/libstate.la \
+	eui/libeui.la \
+	ipc/libipc.la \
+	mgr/libmgr.la \
+	base/libbase.la \
+	$(SSL_LIBS) \
+	$(top_builddir)/lib/libmisccontainers.la \
+	$(top_builddir)/lib/libmiscencoding.la \
+	$(top_builddir)/lib/libmiscutil.la \
+	$(REGEXLIB) \
+	$(SQUID_CPPUNIT_LIBS) \
+	$(SSLLIB) \
+	$(COMPAT_LIB) \
+	$(XTRA_LIBS)
+tests_testRock_LDFLAGS = $(LIBADD_DL)
+tests_testRock_DEPENDENCIES = \
+	$(SWAP_TEST_DS)
+
 tests_testCoss_SOURCES = \
 	tests/testCoss.cc \
 	tests/testMain.cc \
@@ -2663,9 +2827,12 @@
 	tests/stub_ipc.cc \
 	tests/stub_pconn.cc \
 	tests/stub_store_rebuild.cc \
+	tests/stub_store_stats.cc \
 	fd.cc \
 	disk.cc \
+	FileMap.h \
 	filemap.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpReply.cc \
 	HttpStatusLine.cc \
@@ -2734,6 +2901,7 @@
 	tests/stub_MemStore.cc \
 	tests/stub_Port.cc \
 	tests/stub_store_client.cc \
+	tests/stub_store_stats.cc \
 	tests/stub_tools.cc \
 	tests/stub_UdsOp.cc \
 	tests/testStoreSupport.cc \
@@ -2792,9 +2960,12 @@
 	tests/stub_internal.cc \
 	tests/stub_CommIO.cc \
 	tests/stub_store_rebuild.cc \
+	tests/stub_store_stats.cc \
 	fd.cc \
 	disk.cc \
+	FileMap.h \
 	filemap.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpReply.cc \
 	HttpStatusLine.cc \
@@ -2863,6 +3034,7 @@
 	tests/stub_access_log.cc \
 	refresh.cc \
 	tests/stub_store_client.cc \
+	tests/stub_store_stats.cc \
 	tests/stub_tools.cc \
 	tests/testStoreSupport.cc \
 	tests/testStoreSupport.h \
@@ -2941,6 +3113,7 @@
 	ExternalACLEntry.cc \
 	fd.cc \
 	fde.cc \
+	FileMap.h \
 	filemap.cc \
 	forward.cc \
 	fqdncache.cc \
@@ -2952,6 +3125,7 @@
 	hier_code.h \
 	$(HTCPSOURCE) \
 	http.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
@@ -3032,6 +3206,7 @@
 	tests/stub_DiskIOModule.cc \
 	tests/stub_main_cc.cc \
 	tests/stub_ipc_Forwarder.cc \
+	tests/stub_store_stats.cc \
 	tests/testURL.cc \
 	tests/testURL.h \
 	tests/testURLScheme.cc \
@@ -3091,6 +3266,36 @@
 	$(REPL_OBJS) \
 	$(SQUID_CPPUNIT_LA)
 
+tests_testConfigParser_SOURCES = \
+	ClientInfo.h \
+	mem.cc \
+	MemBuf.cc \
+	String.cc \
+	ConfigParser.cc \
+	tests/testMain.cc \
+	tests/testConfigParser.cc \
+	tests/testConfigParser.h \
+	tests/stub_cache_cf.cc \
+	tests/stub_cache_manager.cc \
+	tests/stub_debug.cc \
+	tests/stub_HelperChildConfig.cc \
+	time.cc \
+	wordlist.cc
+nodist_tests_testConfigParser_SOURCES = \
+	$(TESTSOURCES)
+tests_testConfigParser_LDADD = \
+	base/libbase.la \
+	libsquid.la \
+	ip/libip.la \
+	$(top_builddir)/lib/libmiscutil.la \
+	$(REGEXLIB) \
+	$(SQUID_CPPUNIT_LIBS) \
+	$(SSLLIB) \
+	$(COMPAT_LIB) \
+	$(XTRA_LIBS)
+tests_testConfigParser_LDFLAGS = $(LIBADD_DL)
+tests_testConfigParser_DEPENDENCIES = \
+	$(SQUID_CPPUNIT_LA)
 
 TESTS += testHeaders
 
diff -u -r -N squid-3.2.0.13/src/Makefile.in squid-3.2.0.14/src/Makefile.in
--- squid-3.2.0.13/src/Makefile.in	2011-10-14 14:47:47.000000000 +1300
+++ squid-3.2.0.14/src/Makefile.in	2011-12-13 00:10:40.000000000 +1300
@@ -53,7 +53,8 @@
 	tests/test_http_range$(EXEEXT) tests/testHttpParser$(EXEEXT) \
 	tests/testHttpReply$(EXEEXT) tests/testHttpRequest$(EXEEXT) \
 	tests/testStore$(EXEEXT) tests/testString$(EXEEXT) \
-	tests/testURL$(EXEEXT) $(STORE_TESTS)
+	tests/testURL$(EXEEXT) tests/testConfigParser$(EXEEXT) \
+	$(STORE_TESTS)
 @USE_LOADABLE_MODULES_TRUE@am__append_1 = $(INCLTDL)
 @ENABLE_AUTH_TRUE@am__append_2 = auth
 @ENABLE_AUTH_TRUE@am__append_3 = tests/testACLMaxUserIP
@@ -64,7 +65,8 @@
 EXTRA_PROGRAMS = DiskIO/DiskDaemon/diskd$(EXEEXT) unlinkd$(EXEEXT) \
 	dnsserver$(EXEEXT) recv-announce$(EXEEXT) \
 	tests/testUfs$(EXEEXT) tests/testCoss$(EXEEXT) \
-	tests/testNull$(EXEEXT) ufsdump$(EXEEXT)
+	tests/testRock$(EXEEXT) tests/testNull$(EXEEXT) \
+	ufsdump$(EXEEXT)
 noinst_PROGRAMS = cf_gen$(EXEEXT)
 sbin_PROGRAMS = squid$(EXEEXT)
 bin_PROGRAMS =
@@ -181,16 +183,9 @@
 am_cf_gen_OBJECTS = cf_gen.$(OBJEXT)
 cf_gen_OBJECTS = $(am_cf_gen_OBJECTS)
 cf_gen_DEPENDENCIES =
-am_dnsserver_OBJECTS = dnsserver.$(OBJEXT) SquidNew.$(OBJEXT) \
-	tests/stub_debug.$(OBJEXT) test_tools.$(OBJEXT) time.$(OBJEXT)
+am_dnsserver_OBJECTS = dnsserver.$(OBJEXT)
 dnsserver_OBJECTS = $(am_dnsserver_OBJECTS)
-dnsserver_LDADD = $(LDADD)
-dnsserver_DEPENDENCIES = $(AUTH_ACL_LIBS) ident/libident.la \
-	acl/libacls.la eui/libeui.la acl/libstate.la $(AUTH_LIBS) \
-	acl/libapi.la base/libbase.la libsquid.la ip/libip.la \
-	fs/libfs.la ipc/libipc.la mgr/libmgr.la $(am__DEPENDENCIES_3) \
-	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2) \
-	$(am__DEPENDENCIES_3)
+dnsserver_DEPENDENCIES = $(am__DEPENDENCIES_2)
 am_recv_announce_OBJECTS = recv-announce.$(OBJEXT)
 recv_announce_OBJECTS = $(am_recv_announce_OBJECTS)
 recv_announce_LDADD = $(LDADD)
@@ -229,18 +224,18 @@
 	ETag.h event.cc event.h EventLoop.h EventLoop.cc \
 	external_acl.cc ExternalACL.h ExternalACLEntry.cc \
 	ExternalACLEntry.h FadingCounter.h FadingCounter.cc fd.cc \
-	fde.cc fde.h filemap.cc forward.cc forward.h fqdncache.cc \
-	ftp.cc Generic.h globals.h gopher.cc helper.cc helper.h \
-	HelperChildConfig.h HelperChildConfig.cc hier_code.h \
+	fde.cc fde.h FileMap.h filemap.cc forward.cc forward.h \
+	fqdncache.cc ftp.cc Generic.h globals.h gopher.cc helper.cc \
+	helper.h HelperChildConfig.h HelperChildConfig.cc hier_code.h \
 	HierarchyLogEntry.h htcp.cc htcp.h http.cc http.h \
 	HttpStatusCode.h HttpStatusLine.cc HttpStatusLine.h \
 	HttpHdrCc.h HttpHdrCc.cc HttpHdrCc.cci HttpHdrRange.cc \
 	HttpHdrSc.cc HttpHdrSc.h HttpHdrScTarget.cc HttpHdrScTarget.h \
 	HttpHdrContRange.cc HttpHdrContRange.h HttpHeader.cc \
 	HttpHeader.h HttpHeaderMask.h HttpHeaderRange.h \
-	HttpHeaderTools.cc HttpBody.cc HttpControlMsg.h HttpMsg.cc \
-	HttpMsg.h HttpParser.cc HttpParser.h HttpReply.cc HttpReply.h \
-	HttpRequest.cc HttpRequest.h HttpRequestMethod.cc \
+	HttpHeaderTools.cc HttpBody.h HttpBody.cc HttpControlMsg.h \
+	HttpMsg.cc HttpMsg.h HttpParser.cc HttpParser.h HttpReply.cc \
+	HttpReply.h HttpRequest.cc HttpRequest.h HttpRequestMethod.cc \
 	HttpRequestMethod.h HttpVersion.h ICP.h icp_opcode.h icp_v2.cc \
 	icp_v3.cc int.cc internal.cc ipc.cc ipc_win32.cc ipcache.cc \
 	ipcache.h LeakFinder.cc list.cc lookup_t.h main.cc mem.cc \
@@ -264,12 +259,13 @@
 	StoreMetaSTDLFS.cc StoreMetaSTDLFS.h StoreMetaObjSize.h \
 	StoreMetaUnpacker.cc StoreMetaUnpacker.h StoreMetaURL.cc \
 	StoreMetaURL.h StoreMetaVary.cc StoreMetaVary.h StoreSearch.h \
-	StoreSwapLogData.cc StoreSwapLogData.h Server.cc Server.h \
-	structs.h swap_log_op.h SwapDir.cc SwapDir.h MemStore.cc \
-	MemStore.h time.cc TimeOrTag.h tools.cc tunnel.cc typedefs.h \
-	unlinkd.cc url.cc URL.h URLScheme.cc URLScheme.h urn.cc \
-	wccp.cc wccp2.cc whois.cc wordlist.cc wordlist.h win32.cc \
-	WinSvc.cc LoadableModule.h LoadableModule.cc LoadableModules.h \
+	StoreStats.cc StoreStats.h StoreSwapLogData.cc \
+	StoreSwapLogData.h Server.cc Server.h structs.h swap_log_op.h \
+	SwapDir.cc SwapDir.h MemStore.cc MemStore.h time.cc \
+	TimeOrTag.h tools.cc tunnel.cc typedefs.h unlinkd.cc url.cc \
+	URL.h URLScheme.cc URLScheme.h urn.cc wccp.cc wccp2.cc \
+	whois.cc wordlist.cc wordlist.h win32.cc WinSvc.cc \
+	LoadableModule.h LoadableModule.cc LoadableModules.h \
 	LoadableModules.cc
 am__objects_4 = AclRegs.$(OBJEXT) AuthReg.$(OBJEXT)
 am__objects_5 = delay_pools.$(OBJEXT) DelayId.$(OBJEXT) \
@@ -343,13 +339,13 @@
 	StoreMeta.$(OBJEXT) StoreMetaMD5.$(OBJEXT) \
 	StoreMetaSTD.$(OBJEXT) StoreMetaSTDLFS.$(OBJEXT) \
 	StoreMetaUnpacker.$(OBJEXT) StoreMetaURL.$(OBJEXT) \
-	StoreMetaVary.$(OBJEXT) StoreSwapLogData.$(OBJEXT) \
-	Server.$(OBJEXT) SwapDir.$(OBJEXT) MemStore.$(OBJEXT) \
-	time.$(OBJEXT) tools.$(OBJEXT) tunnel.$(OBJEXT) \
-	$(am__objects_16) url.$(OBJEXT) URLScheme.$(OBJEXT) \
-	urn.$(OBJEXT) wccp.$(OBJEXT) wccp2.$(OBJEXT) whois.$(OBJEXT) \
-	wordlist.$(OBJEXT) $(am__objects_17) $(am__objects_18) \
-	$(am__objects_20)
+	StoreMetaVary.$(OBJEXT) StoreStats.$(OBJEXT) \
+	StoreSwapLogData.$(OBJEXT) Server.$(OBJEXT) SwapDir.$(OBJEXT) \
+	MemStore.$(OBJEXT) time.$(OBJEXT) tools.$(OBJEXT) \
+	tunnel.$(OBJEXT) $(am__objects_16) url.$(OBJEXT) \
+	URLScheme.$(OBJEXT) urn.$(OBJEXT) wccp.$(OBJEXT) \
+	wccp2.$(OBJEXT) whois.$(OBJEXT) wordlist.$(OBJEXT) \
+	$(am__objects_17) $(am__objects_18) $(am__objects_20)
 am__EXTRA_squid_SOURCES_DIST = DiskIO/AIO/aio_win32.cc \
 	DiskIO/AIO/aio_win32.h ConfigOption.h CommonPool.h \
 	CompositePoolNode.h delay_pools.cc DelayId.cc DelayId.h \
@@ -405,6 +401,7 @@
 	tests/stub_MemObject.$(OBJEXT) tests/stub_MemStore.$(OBJEXT) \
 	tests/stub_mime.$(OBJEXT) tests/stub_store.$(OBJEXT) \
 	tests/stub_store_rebuild.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) \
 	tests/stub_store_swapout.$(OBJEXT) tests/stub_tools.$(OBJEXT) \
 	tests/stub_cache_manager.$(OBJEXT) \
 	tests/testACLMaxUserIP.$(OBJEXT) tests/testMain.$(OBJEXT) \
@@ -430,19 +427,19 @@
 	HttpRequestMethod.cc mem.cc String.cc \
 	tests/testCacheManager.cc tests/testCacheManager.h \
 	tests/testMain.cc tests/stub_main_cc.cc \
-	tests/stub_ipc_Forwarder.cc time.cc BodyPipe.cc \
-	cache_manager.cc cache_cf.cc ProtoPort.cc ProtoPort.h \
-	CacheDigest.cc carp.cc cbdata.cc ChunkedCodingParser.cc \
-	client_db.cc client_side.cc client_side_reply.cc \
-	client_side_request.cc ClientInfo.h clientStream.cc \
-	ConfigOption.cc ConfigParser.cc CpuAffinityMap.cc \
-	CpuAffinityMap.h CpuAffinitySet.cc CpuAffinitySet.h \
-	CommonPool.h CompositePoolNode.h delay_pools.cc DelayId.cc \
-	DelayId.h DelayIdComposite.h DelayBucket.cc DelayBucket.h \
-	DelayConfig.cc DelayConfig.h DelayPool.cc DelayPool.h \
-	DelayPools.h DelaySpec.cc DelaySpec.h DelayTagged.cc \
-	DelayTagged.h DelayUser.cc DelayUser.h DelayVector.cc \
-	DelayVector.h NullDelayId.cc NullDelayId.h \
+	tests/stub_ipc_Forwarder.cc tests/stub_store_stats.cc time.cc \
+	BodyPipe.cc cache_manager.cc cache_cf.cc ProtoPort.cc \
+	ProtoPort.h CacheDigest.cc carp.cc cbdata.cc \
+	ChunkedCodingParser.cc client_db.cc client_side.cc \
+	client_side_reply.cc client_side_request.cc ClientInfo.h \
+	clientStream.cc ConfigOption.cc ConfigParser.cc \
+	CpuAffinityMap.cc CpuAffinityMap.h CpuAffinitySet.cc \
+	CpuAffinitySet.h CommonPool.h CompositePoolNode.h \
+	delay_pools.cc DelayId.cc DelayId.h DelayIdComposite.h \
+	DelayBucket.cc DelayBucket.h DelayConfig.cc DelayConfig.h \
+	DelayPool.cc DelayPool.h DelayPools.h DelaySpec.cc DelaySpec.h \
+	DelayTagged.cc DelayTagged.h DelayUser.cc DelayUser.h \
+	DelayVector.cc DelayVector.h NullDelayId.cc NullDelayId.h \
 	ClientDelayConfig.cc ClientDelayConfig.h \
 	DiskIO/DiskIOModule.cc DiskIO/ReadRequest.cc \
 	DiskIO/ReadRequest.h DiskIO/WriteRequest.cc \
@@ -451,16 +448,16 @@
 	DiskIO/DiskIOModule.h disk.cc dlink.h dlink.cc dns_internal.cc \
 	DnsLookupDetails.h DnsLookupDetails.cc dns.cc errorpage.cc \
 	ETag.cc event.cc external_acl.cc ExternalACLEntry.cc fd.cc \
-	fde.cc filemap.cc forward.cc fqdncache.cc ftp.cc gopher.cc \
-	hier_code.h helper.cc HelperChildConfig.h HelperChildConfig.cc \
-	htcp.cc htcp.h http.cc HttpBody.cc HttpHeader.cc \
-	HttpHeaderTools.cc HttpHdrCc.h HttpHdrCc.cc HttpHdrCc.cci \
-	HttpHdrContRange.cc HttpHdrRange.cc HttpHdrSc.cc \
-	HttpHdrScTarget.cc HttpMsg.cc HttpReply.cc HttpStatusLine.cc \
-	icp_v2.cc icp_v3.cc ipc.cc ipc_win32.cc ipcache.cc int.cc \
-	internal.cc list.cc multicast.cc mem_node.cc MemBuf.cc \
-	MemObject.cc mime.cc mime_header.cc neighbors.cc Packer.cc \
-	Parsing.cc pconn.cc peer_digest.cc \
+	fde.cc FileMap.h filemap.cc forward.cc fqdncache.cc ftp.cc \
+	gopher.cc hier_code.h helper.cc HelperChildConfig.h \
+	HelperChildConfig.cc htcp.cc htcp.h http.cc HttpBody.h \
+	HttpBody.cc HttpHeader.cc HttpHeaderTools.cc HttpHdrCc.h \
+	HttpHdrCc.cc HttpHdrCc.cci HttpHdrContRange.cc HttpHdrRange.cc \
+	HttpHdrSc.cc HttpHdrScTarget.cc HttpMsg.cc HttpReply.cc \
+	HttpStatusLine.cc icp_v2.cc icp_v3.cc ipc.cc ipc_win32.cc \
+	ipcache.cc int.cc internal.cc list.cc multicast.cc mem_node.cc \
+	MemBuf.cc MemObject.cc mime.cc mime_header.cc neighbors.cc \
+	Packer.cc Parsing.cc pconn.cc peer_digest.cc \
 	peer_proxy_negotiate_auth.cc peer_select.cc peer_sourcehash.cc \
 	peer_userhash.cc redirect.cc refresh.cc RemovalPolicy.cc \
 	Server.cc snmp_core.h snmp_core.cc snmp_agent.cc SquidMath.h \
@@ -478,7 +475,8 @@
 	HttpRequestMethod.$(OBJEXT) mem.$(OBJEXT) String.$(OBJEXT) \
 	tests/testCacheManager.$(OBJEXT) tests/testMain.$(OBJEXT) \
 	tests/stub_main_cc.$(OBJEXT) \
-	tests/stub_ipc_Forwarder.$(OBJEXT) time.$(OBJEXT) \
+	tests/stub_ipc_Forwarder.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) time.$(OBJEXT) \
 	BodyPipe.$(OBJEXT) cache_manager.$(OBJEXT) cache_cf.$(OBJEXT) \
 	ProtoPort.$(OBJEXT) CacheDigest.$(OBJEXT) carp.$(OBJEXT) \
 	cbdata.$(OBJEXT) ChunkedCodingParser.$(OBJEXT) \
@@ -530,14 +528,28 @@
 tests_testCacheManager_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(tests_testCacheManager_LDFLAGS) $(LDFLAGS) -o $@
+am_tests_testConfigParser_OBJECTS = mem.$(OBJEXT) MemBuf.$(OBJEXT) \
+	String.$(OBJEXT) ConfigParser.$(OBJEXT) \
+	tests/testMain.$(OBJEXT) tests/testConfigParser.$(OBJEXT) \
+	tests/stub_cache_cf.$(OBJEXT) \
+	tests/stub_cache_manager.$(OBJEXT) tests/stub_debug.$(OBJEXT) \
+	tests/stub_HelperChildConfig.$(OBJEXT) time.$(OBJEXT) \
+	wordlist.$(OBJEXT)
+nodist_tests_testConfigParser_OBJECTS = $(am__objects_23)
+tests_testConfigParser_OBJECTS = $(am_tests_testConfigParser_OBJECTS) \
+	$(nodist_tests_testConfigParser_OBJECTS)
+tests_testConfigParser_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(tests_testConfigParser_LDFLAGS) $(LDFLAGS) -o $@
 am__tests_testCoss_SOURCES_DIST = tests/testCoss.cc tests/testMain.cc \
 	tests/testCoss.h tests/stub_cache_manager.cc \
 	tests/stub_client_db.cc tests/stub_debug.cc \
 	tests/stub_HelperChildConfig.cc tests/stub_internal.cc \
 	tests/stub_ipc.cc tests/stub_pconn.cc \
-	tests/stub_store_rebuild.cc fd.cc disk.cc filemap.cc \
-	HttpBody.cc HttpReply.cc HttpStatusLine.cc int.cc list.cc \
-	MemObject.cc StoreSwapLogData.cc StoreIOState.cc StoreMeta.cc \
+	tests/stub_store_rebuild.cc tests/stub_store_stats.cc fd.cc \
+	disk.cc FileMap.h filemap.cc HttpBody.h HttpBody.cc \
+	HttpReply.cc HttpStatusLine.cc int.cc list.cc MemObject.cc \
+	StoreSwapLogData.cc StoreIOState.cc StoreMeta.cc \
 	StoreMetaMD5.cc StoreMetaSTD.cc StoreMetaSTDLFS.cc \
 	StoreMetaUnpacker.cc StoreMetaURL.cc StoreMetaVary.cc \
 	StoreFileSystem.cc store_io.cc store_swapout.cc \
@@ -575,8 +587,8 @@
 	tests/stub_HelperChildConfig.$(OBJEXT) \
 	tests/stub_internal.$(OBJEXT) tests/stub_ipc.$(OBJEXT) \
 	tests/stub_pconn.$(OBJEXT) tests/stub_store_rebuild.$(OBJEXT) \
-	fd.$(OBJEXT) disk.$(OBJEXT) filemap.$(OBJEXT) \
-	HttpBody.$(OBJEXT) HttpReply.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) fd.$(OBJEXT) disk.$(OBJEXT) \
+	filemap.$(OBJEXT) HttpBody.$(OBJEXT) HttpReply.$(OBJEXT) \
 	HttpStatusLine.$(OBJEXT) int.$(OBJEXT) list.$(OBJEXT) \
 	MemObject.$(OBJEXT) StoreSwapLogData.$(OBJEXT) \
 	StoreIOState.$(OBJEXT) StoreMeta.$(OBJEXT) \
@@ -605,7 +617,8 @@
 	tests/stub_HttpRequest.$(OBJEXT) \
 	tests/stub_access_log.$(OBJEXT) refresh.$(OBJEXT) \
 	tests/stub_MemStore.$(OBJEXT) tests/stub_Port.$(OBJEXT) \
-	tests/stub_store_client.$(OBJEXT) tests/stub_tools.$(OBJEXT) \
+	tests/stub_store_client.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) tests/stub_tools.$(OBJEXT) \
 	tests/stub_UdsOp.$(OBJEXT) tests/testStoreSupport.$(OBJEXT) \
 	time.$(OBJEXT) URLScheme.$(OBJEXT) wordlist.$(OBJEXT) \
 	$(am__objects_7)
@@ -629,8 +642,8 @@
 	DiskIO/WriteRequest.cc DiskIO/WriteRequest.h DiskIO/DiskFile.h \
 	DiskIO/DiskIOStrategy.h DiskIO/IORequestor.h \
 	DiskIO/DiskIOModule.h disk.cc ETag.cc EventLoop.cc event.cc \
-	fd.cc filemap.cc HttpBody.cc HttpHdrCc.h HttpHdrCc.cc \
-	HttpHdrCc.cci HttpHdrContRange.cc HttpHdrSc.cc \
+	fd.cc FileMap.h filemap.cc HttpBody.h HttpBody.cc HttpHdrCc.h \
+	HttpHdrCc.cc HttpHdrCc.cci HttpHdrContRange.cc HttpHdrSc.cc \
 	HttpHdrScTarget.cc HttpHdrRange.cc HttpHeaderTools.cc \
 	HttpHeader.cc HttpMsg.cc HttpReply.cc HttpRequestMethod.cc \
 	HttpStatusLine.cc int.cc list.cc MemBuf.cc MemObject.cc \
@@ -650,9 +663,9 @@
 	tests/stub_ipc.cc tests/stub_ipcache.cc tests/stub_libicmp.cc \
 	tests/stub_MemStore.cc tests/stub_mime.cc tests/stub_pconn.cc \
 	tests/stub_Port.cc tests/stub_store_client.cc \
-	tests/stub_store_rebuild.cc tests/stub_tools.cc \
-	tests/stub_UdsOp.cc tests/testDiskIO.cc tests/testDiskIO.h \
-	tests/testMain.cc tests/testStoreSupport.cc \
+	tests/stub_store_stats.cc tests/stub_store_rebuild.cc \
+	tests/stub_tools.cc tests/stub_UdsOp.cc tests/testDiskIO.cc \
+	tests/testDiskIO.h tests/testMain.cc tests/testStoreSupport.cc \
 	tests/testStoreSupport.h time.cc unlinkd.cc url.cc \
 	URLScheme.cc win32.cc wordlist.cc
 am_tests_testDiskIO_OBJECTS = CacheDigest.$(OBJEXT) cbdata.$(OBJEXT) \
@@ -691,6 +704,7 @@
 	tests/stub_libicmp.$(OBJEXT) tests/stub_MemStore.$(OBJEXT) \
 	tests/stub_mime.$(OBJEXT) tests/stub_pconn.$(OBJEXT) \
 	tests/stub_Port.$(OBJEXT) tests/stub_store_client.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) \
 	tests/stub_store_rebuild.$(OBJEXT) tests/stub_tools.$(OBJEXT) \
 	tests/stub_UdsOp.$(OBJEXT) tests/testDiskIO.$(OBJEXT) \
 	tests/testMain.$(OBJEXT) tests/testStoreSupport.$(OBJEXT) \
@@ -723,21 +737,21 @@
 	DiskIO/DiskIOModule.h disk.cc dlink.h dlink.cc dns_internal.cc \
 	DnsLookupDetails.h DnsLookupDetails.cc dns.cc errorpage.cc \
 	ETag.cc event.cc EventLoop.h EventLoop.cc external_acl.cc \
-	ExternalACLEntry.cc FadingCounter.cc fd.cc fde.cc filemap.cc \
-	forward.cc fqdncache.cc ftp.cc gopher.cc helper.cc \
+	ExternalACLEntry.cc FadingCounter.cc fd.cc fde.cc FileMap.h \
+	filemap.cc forward.cc fqdncache.cc ftp.cc gopher.cc helper.cc \
 	HelperChildConfig.h HelperChildConfig.cc hier_code.h htcp.cc \
-	htcp.h http.cc HttpBody.cc HttpHeader.cc HttpHeaderTools.cc \
-	HttpHdrCc.h HttpHdrCc.cc HttpHdrCc.cci HttpHdrContRange.cc \
-	HttpHdrRange.cc HttpHdrSc.cc HttpHdrScTarget.cc HttpMsg.cc \
-	HttpParser.cc HttpParser.h HttpReply.cc HttpRequest.cc \
-	HttpRequestMethod.cc HttpStatusLine.cc icp_v2.cc icp_v3.cc \
-	ipc.cc ipc_win32.cc ipcache.cc int.cc internal.cc list.cc \
-	mem.cc mem_node.cc MemBuf.cc MemObject.cc mime.cc \
-	mime_header.cc multicast.cc neighbors.cc Packer.cc Parsing.cc \
-	pconn.cc peer_digest.cc peer_proxy_negotiate_auth.cc \
-	peer_select.cc peer_sourcehash.cc peer_userhash.cc \
-	ProtoPort.cc ProtoPort.h redirect.cc refresh.cc \
-	RemovalPolicy.cc Server.cc snmp_core.h snmp_core.cc \
+	htcp.h http.cc HttpBody.h HttpBody.cc HttpHeader.cc \
+	HttpHeaderTools.cc HttpHdrCc.h HttpHdrCc.cc HttpHdrCc.cci \
+	HttpHdrContRange.cc HttpHdrRange.cc HttpHdrSc.cc \
+	HttpHdrScTarget.cc HttpMsg.cc HttpParser.cc HttpParser.h \
+	HttpReply.cc HttpRequest.cc HttpRequestMethod.cc \
+	HttpStatusLine.cc icp_v2.cc icp_v3.cc ipc.cc ipc_win32.cc \
+	ipcache.cc int.cc internal.cc list.cc mem.cc mem_node.cc \
+	MemBuf.cc MemObject.cc mime.cc mime_header.cc multicast.cc \
+	neighbors.cc Packer.cc Parsing.cc pconn.cc peer_digest.cc \
+	peer_proxy_negotiate_auth.cc peer_select.cc peer_sourcehash.cc \
+	peer_userhash.cc ProtoPort.cc ProtoPort.h redirect.cc \
+	refresh.cc RemovalPolicy.cc Server.cc snmp_core.h snmp_core.cc \
 	snmp_agent.cc SquidMath.cc SquidMath.h stat.cc StatHist.cc \
 	stmem.cc store.cc store_client.cc store_digest.cc store_dir.cc \
 	store_io.cc store_key_md5.cc store_log.cc store_rebuild.cc \
@@ -748,9 +762,9 @@
 	StoreSwapLogData.cc String.cc SwapDir.cc \
 	tests/CapturingStoreEntry.h tests/testEvent.cc \
 	tests/testEvent.h tests/testMain.cc tests/stub_main_cc.cc \
-	tests/stub_ipc_Forwarder.cc time.cc tools.cc tunnel.cc \
-	MemStore.cc unlinkd.cc url.cc URLScheme.cc urn.cc wccp2.cc \
-	whois.cc win32.cc wordlist.cc
+	tests/stub_ipc_Forwarder.cc tests/stub_store_stats.cc time.cc \
+	tools.cc tunnel.cc MemStore.cc unlinkd.cc url.cc URLScheme.cc \
+	urn.cc wccp2.cc whois.cc win32.cc wordlist.cc
 am_tests_testEvent_OBJECTS = $(am__objects_4) BodyPipe.$(OBJEXT) \
 	CacheDigest.$(OBJEXT) cache_cf.$(OBJEXT) \
 	cache_manager.$(OBJEXT) carp.$(OBJEXT) cbdata.$(OBJEXT) \
@@ -797,7 +811,8 @@
 	StoreMetaVary.$(OBJEXT) StoreSwapLogData.$(OBJEXT) \
 	String.$(OBJEXT) SwapDir.$(OBJEXT) tests/testEvent.$(OBJEXT) \
 	tests/testMain.$(OBJEXT) tests/stub_main_cc.$(OBJEXT) \
-	tests/stub_ipc_Forwarder.$(OBJEXT) time.$(OBJEXT) \
+	tests/stub_ipc_Forwarder.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) time.$(OBJEXT) \
 	tools.$(OBJEXT) tunnel.$(OBJEXT) MemStore.$(OBJEXT) \
 	$(am__objects_16) url.$(OBJEXT) URLScheme.$(OBJEXT) \
 	urn.$(OBJEXT) wccp2.$(OBJEXT) whois.$(OBJEXT) \
@@ -828,32 +843,34 @@
 	DiskIO/DiskIOModule.h disk.cc dlink.h dlink.cc dns_internal.cc \
 	DnsLookupDetails.h DnsLookupDetails.cc dns.cc errorpage.cc \
 	ETag.cc EventLoop.h EventLoop.cc event.cc external_acl.cc \
-	ExternalACLEntry.cc FadingCounter.cc fd.cc fde.cc filemap.cc \
-	forward.cc fqdncache.cc ftp.cc gopher.cc helper.cc \
+	ExternalACLEntry.cc FadingCounter.cc fd.cc fde.cc FileMap.h \
+	filemap.cc forward.cc fqdncache.cc ftp.cc gopher.cc helper.cc \
 	HelperChildConfig.h HelperChildConfig.cc hier_code.h htcp.cc \
-	htcp.h http.cc HttpBody.cc HttpHeader.cc HttpHeaderTools.cc \
-	HttpHdrCc.h HttpHdrCc.cc HttpHdrCc.cci HttpHdrContRange.cc \
-	HttpHdrRange.cc HttpHdrSc.cc HttpHdrScTarget.cc HttpMsg.cc \
-	HttpParser.cc HttpParser.h HttpReply.cc HttpRequest.cc \
-	HttpRequestMethod.cc HttpStatusLine.cc icp_v2.cc icp_v3.cc \
-	ipc.cc ipc_win32.cc ipcache.cc int.cc internal.cc list.cc \
-	MemBuf.cc MemObject.cc mem.cc mem_node.cc mime.cc \
-	mime_header.cc multicast.cc neighbors.cc Packer.cc Parsing.cc \
-	pconn.cc peer_digest.cc peer_proxy_negotiate_auth.cc \
-	peer_select.cc peer_sourcehash.cc peer_userhash.cc \
-	ProtoPort.cc ProtoPort.h RemovalPolicy.cc redirect.cc \
-	refresh.cc Server.cc snmp_core.h snmp_core.cc snmp_agent.cc \
-	SquidMath.h SquidMath.cc stat.cc StatHist.cc stmem.cc store.cc \
-	store_client.cc store_digest.cc store_dir.cc store_io.cc \
-	store_key_md5.cc store_log.cc store_rebuild.cc store_swapin.cc \
-	store_swapmeta.cc store_swapout.cc StoreFileSystem.cc \
-	StoreIOState.cc StoreMeta.cc StoreMetaMD5.cc StoreMetaSTD.cc \
-	StoreMetaSTDLFS.cc StoreMetaUnpacker.cc StoreMetaURL.cc \
-	StoreMetaVary.cc StoreSwapLogData.cc String.cc SwapDir.cc \
+	htcp.h http.cc HttpBody.h HttpBody.cc HttpHeader.cc \
+	HttpHeaderTools.cc HttpHdrCc.h HttpHdrCc.cc HttpHdrCc.cci \
+	HttpHdrContRange.cc HttpHdrRange.cc HttpHdrSc.cc \
+	HttpHdrScTarget.cc HttpMsg.cc HttpParser.cc HttpParser.h \
+	HttpReply.cc HttpRequest.cc HttpRequestMethod.cc \
+	HttpStatusLine.cc icp_v2.cc icp_v3.cc ipc.cc ipc_win32.cc \
+	ipcache.cc int.cc internal.cc list.cc MemBuf.cc MemObject.cc \
+	mem.cc mem_node.cc mime.cc mime_header.cc multicast.cc \
+	neighbors.cc Packer.cc Parsing.cc pconn.cc peer_digest.cc \
+	peer_proxy_negotiate_auth.cc peer_select.cc peer_sourcehash.cc \
+	peer_userhash.cc ProtoPort.cc ProtoPort.h RemovalPolicy.cc \
+	redirect.cc refresh.cc Server.cc snmp_core.h snmp_core.cc \
+	snmp_agent.cc SquidMath.h SquidMath.cc stat.cc StatHist.cc \
+	stmem.cc store.cc store_client.cc store_digest.cc store_dir.cc \
+	store_io.cc store_key_md5.cc store_log.cc store_rebuild.cc \
+	store_swapin.cc store_swapmeta.cc store_swapout.cc \
+	StoreFileSystem.cc StoreIOState.cc StoreMeta.cc \
+	StoreMetaMD5.cc StoreMetaSTD.cc StoreMetaSTDLFS.cc \
+	StoreMetaUnpacker.cc StoreMetaURL.cc StoreMetaVary.cc \
+	StoreSwapLogData.cc String.cc SwapDir.cc \
 	tests/testEventLoop.cc tests/testEventLoop.h tests/testMain.cc \
-	tests/stub_main_cc.cc tests/stub_ipc_Forwarder.cc time.cc \
-	tools.cc tunnel.cc MemStore.cc unlinkd.cc url.cc URLScheme.cc \
-	urn.cc wccp2.cc whois.cc win32.cc wordlist.cc
+	tests/stub_main_cc.cc tests/stub_ipc_Forwarder.cc \
+	tests/stub_store_stats.cc time.cc tools.cc tunnel.cc \
+	MemStore.cc unlinkd.cc url.cc URLScheme.cc urn.cc wccp2.cc \
+	whois.cc win32.cc wordlist.cc
 am_tests_testEventLoop_OBJECTS = $(am__objects_4) BodyPipe.$(OBJEXT) \
 	CacheDigest.$(OBJEXT) cache_manager.$(OBJEXT) \
 	cache_cf.$(OBJEXT) carp.$(OBJEXT) cbdata.$(OBJEXT) \
@@ -901,7 +918,8 @@
 	String.$(OBJEXT) SwapDir.$(OBJEXT) \
 	tests/testEventLoop.$(OBJEXT) tests/testMain.$(OBJEXT) \
 	tests/stub_main_cc.$(OBJEXT) \
-	tests/stub_ipc_Forwarder.$(OBJEXT) time.$(OBJEXT) \
+	tests/stub_ipc_Forwarder.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) time.$(OBJEXT) \
 	tools.$(OBJEXT) tunnel.$(OBJEXT) MemStore.$(OBJEXT) \
 	$(am__objects_16) url.$(OBJEXT) URLScheme.$(OBJEXT) \
 	urn.$(OBJEXT) wccp2.$(OBJEXT) whois.$(OBJEXT) \
@@ -939,8 +957,8 @@
 	tests/stub_cache_manager.$(OBJEXT) tests/stub_debug.$(OBJEXT) \
 	tests/stub_HelperChildConfig.$(OBJEXT) \
 	tests/stub_StatHist.$(OBJEXT) tests/stub_store.$(OBJEXT) \
-	tests/testHttpReply.$(OBJEXT) tests/testMain.$(OBJEXT) \
-	time.$(OBJEXT) wordlist.$(OBJEXT)
+	tests/stub_store_stats.$(OBJEXT) tests/testHttpReply.$(OBJEXT) \
+	tests/testMain.$(OBJEXT) time.$(OBJEXT) wordlist.$(OBJEXT)
 nodist_tests_testHttpReply_OBJECTS = $(am__objects_23)
 tests_testHttpReply_OBJECTS = $(am_tests_testHttpReply_OBJECTS) \
 	$(nodist_tests_testHttpReply_OBJECTS)
@@ -953,51 +971,53 @@
 	tests/testHttpRequest.cc tests/testHttpRequestMethod.h \
 	tests/testHttpRequestMethod.cc tests/testMain.cc \
 	tests/stub_DiskIOModule.cc tests/stub_main_cc.cc \
-	tests/stub_ipc_Forwarder.cc time.cc BodyPipe.cc \
-	cache_manager.cc cache_cf.cc debug.cc ProtoPort.cc ProtoPort.h \
-	CacheDigest.cc carp.cc cbdata.cc ChunkedCodingParser.cc \
-	client_db.cc client_side.cc client_side_reply.cc \
-	client_side_request.cc ClientInfo.h clientStream.cc \
-	ConfigOption.cc ConfigParser.cc CpuAffinityMap.cc \
-	CpuAffinityMap.h CpuAffinitySet.cc CpuAffinitySet.h \
-	CommonPool.h CompositePoolNode.h delay_pools.cc DelayId.cc \
-	DelayId.h DelayIdComposite.h DelayBucket.cc DelayBucket.h \
-	DelayConfig.cc DelayConfig.h DelayPool.cc DelayPool.h \
-	DelayPools.h DelaySpec.cc DelaySpec.h DelayTagged.cc \
-	DelayTagged.h DelayUser.cc DelayUser.h DelayVector.cc \
-	DelayVector.h NullDelayId.cc NullDelayId.h \
+	tests/stub_ipc_Forwarder.cc tests/stub_store_stats.cc time.cc \
+	BodyPipe.cc cache_manager.cc cache_cf.cc debug.cc ProtoPort.cc \
+	ProtoPort.h CacheDigest.cc carp.cc cbdata.cc \
+	ChunkedCodingParser.cc client_db.cc client_side.cc \
+	client_side_reply.cc client_side_request.cc ClientInfo.h \
+	clientStream.cc ConfigOption.cc ConfigParser.cc \
+	CpuAffinityMap.cc CpuAffinityMap.h CpuAffinitySet.cc \
+	CpuAffinitySet.h CommonPool.h CompositePoolNode.h \
+	delay_pools.cc DelayId.cc DelayId.h DelayIdComposite.h \
+	DelayBucket.cc DelayBucket.h DelayConfig.cc DelayConfig.h \
+	DelayPool.cc DelayPool.h DelayPools.h DelaySpec.cc DelaySpec.h \
+	DelayTagged.cc DelayTagged.h DelayUser.cc DelayUser.h \
+	DelayVector.cc DelayVector.h NullDelayId.cc NullDelayId.h \
 	ClientDelayConfig.cc ClientDelayConfig.h disk.cc dlink.h \
 	dlink.cc dns_internal.cc DnsLookupDetails.h \
 	DnsLookupDetails.cc dns.cc errorpage.cc ETag.cc \
 	external_acl.cc ExternalACLEntry.cc fd.cc fde.cc forward.cc \
 	fqdncache.cc ftp.cc gopher.cc helper.cc HelperChildConfig.h \
 	HelperChildConfig.cc hier_code.h htcp.cc htcp.h http.cc \
-	HttpBody.cc HttpHeader.cc HttpHeaderTools.cc HttpHdrCc.h \
-	HttpHdrCc.cc HttpHdrCc.cci HttpHdrContRange.cc HttpHdrRange.cc \
-	HttpHdrSc.cc HttpHdrScTarget.cc HttpMsg.cc HttpReply.cc \
-	HttpStatusLine.cc icp_v2.cc icp_v3.cc ipc.cc ipc_win32.cc \
-	ipcache.cc int.cc internal.cc list.cc multicast.cc mem_node.cc \
-	MemBuf.cc MemObject.cc mime.cc mime_header.cc neighbors.cc \
-	Packer.cc Parsing.cc pconn.cc peer_digest.cc \
-	peer_proxy_negotiate_auth.cc peer_select.cc peer_sourcehash.cc \
-	peer_userhash.cc redirect.cc refresh.cc RemovalPolicy.cc \
-	Server.cc snmp_core.h snmp_core.cc snmp_agent.cc SquidMath.h \
-	SquidMath.cc stat.cc StatHist.cc stmem.cc store.cc \
-	store_client.cc store_digest.cc store_dir.cc store_io.cc \
-	store_key_md5.cc store_log.cc store_rebuild.cc store_swapin.cc \
-	store_swapmeta.cc store_swapout.cc StoreFileSystem.cc \
-	StoreIOState.cc StoreMeta.cc StoreMetaMD5.cc StoreMetaSTD.cc \
-	StoreMetaSTDLFS.cc StoreMetaUnpacker.cc StoreMetaURL.cc \
-	StoreMetaVary.cc StoreSwapLogData.cc event.cc tools.cc \
-	tunnel.cc SwapDir.cc MemStore.cc url.cc URLScheme.cc urn.cc \
-	wccp2.cc whois.cc FadingCounter.cc win32.cc wordlist.cc
+	HttpBody.h HttpBody.cc HttpHeader.cc HttpHeaderTools.cc \
+	HttpHdrCc.h HttpHdrCc.cc HttpHdrCc.cci HttpHdrContRange.cc \
+	HttpHdrRange.cc HttpHdrSc.cc HttpHdrScTarget.cc HttpMsg.cc \
+	HttpReply.cc HttpStatusLine.cc icp_v2.cc icp_v3.cc ipc.cc \
+	ipc_win32.cc ipcache.cc int.cc internal.cc list.cc \
+	multicast.cc mem_node.cc MemBuf.cc MemObject.cc mime.cc \
+	mime_header.cc neighbors.cc Packer.cc Parsing.cc pconn.cc \
+	peer_digest.cc peer_proxy_negotiate_auth.cc peer_select.cc \
+	peer_sourcehash.cc peer_userhash.cc redirect.cc refresh.cc \
+	RemovalPolicy.cc Server.cc snmp_core.h snmp_core.cc \
+	snmp_agent.cc SquidMath.h SquidMath.cc stat.cc StatHist.cc \
+	stmem.cc store.cc store_client.cc store_digest.cc store_dir.cc \
+	store_io.cc store_key_md5.cc store_log.cc store_rebuild.cc \
+	store_swapin.cc store_swapmeta.cc store_swapout.cc \
+	StoreFileSystem.cc StoreIOState.cc StoreMeta.cc \
+	StoreMetaMD5.cc StoreMetaSTD.cc StoreMetaSTDLFS.cc \
+	StoreMetaUnpacker.cc StoreMetaURL.cc StoreMetaVary.cc \
+	StoreSwapLogData.cc event.cc tools.cc tunnel.cc SwapDir.cc \
+	MemStore.cc url.cc URLScheme.cc urn.cc wccp2.cc whois.cc \
+	FadingCounter.cc win32.cc wordlist.cc
 am_tests_testHttpRequest_OBJECTS = $(am__objects_4) \
 	HttpParser.$(OBJEXT) HttpRequest.$(OBJEXT) \
 	HttpRequestMethod.$(OBJEXT) mem.$(OBJEXT) String.$(OBJEXT) \
 	tests/testHttpRequest.$(OBJEXT) \
 	tests/testHttpRequestMethod.$(OBJEXT) tests/testMain.$(OBJEXT) \
 	tests/stub_DiskIOModule.$(OBJEXT) tests/stub_main_cc.$(OBJEXT) \
-	tests/stub_ipc_Forwarder.$(OBJEXT) time.$(OBJEXT) \
+	tests/stub_ipc_Forwarder.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) time.$(OBJEXT) \
 	BodyPipe.$(OBJEXT) cache_manager.$(OBJEXT) cache_cf.$(OBJEXT) \
 	debug.$(OBJEXT) ProtoPort.$(OBJEXT) CacheDigest.$(OBJEXT) \
 	carp.$(OBJEXT) cbdata.$(OBJEXT) ChunkedCodingParser.$(OBJEXT) \
@@ -1050,9 +1070,10 @@
 	$(CXXFLAGS) $(tests_testHttpRequest_LDFLAGS) $(LDFLAGS) -o $@
 am__tests_testNull_SOURCES_DIST = tests/testNull.cc tests/testMain.cc \
 	tests/testNull.h tests/stub_internal.cc tests/stub_CommIO.cc \
-	tests/stub_store_rebuild.cc fd.cc disk.cc filemap.cc \
-	HttpBody.cc HttpReply.cc HttpStatusLine.cc int.cc list.cc \
-	MemObject.cc StoreSwapLogData.cc StoreIOState.cc StoreMeta.cc \
+	tests/stub_store_rebuild.cc tests/stub_store_stats.cc fd.cc \
+	disk.cc FileMap.h filemap.cc HttpBody.h HttpBody.cc \
+	HttpReply.cc HttpStatusLine.cc int.cc list.cc MemObject.cc \
+	StoreSwapLogData.cc StoreIOState.cc StoreMeta.cc \
 	StoreMetaMD5.cc StoreMetaSTD.cc StoreMetaSTDLFS.cc \
 	StoreMetaUnpacker.cc StoreMetaURL.cc StoreMetaVary.cc \
 	StoreFileSystem.cc store_io.cc store_swapout.cc \
@@ -1086,8 +1107,8 @@
 am_tests_testNull_OBJECTS = tests/testNull.$(OBJEXT) \
 	tests/testMain.$(OBJEXT) tests/stub_internal.$(OBJEXT) \
 	tests/stub_CommIO.$(OBJEXT) tests/stub_store_rebuild.$(OBJEXT) \
-	fd.$(OBJEXT) disk.$(OBJEXT) filemap.$(OBJEXT) \
-	HttpBody.$(OBJEXT) HttpReply.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) fd.$(OBJEXT) disk.$(OBJEXT) \
+	filemap.$(OBJEXT) HttpBody.$(OBJEXT) HttpReply.$(OBJEXT) \
 	HttpStatusLine.$(OBJEXT) int.$(OBJEXT) list.$(OBJEXT) \
 	MemObject.$(OBJEXT) StoreSwapLogData.$(OBJEXT) \
 	StoreIOState.$(OBJEXT) StoreMeta.$(OBJEXT) \
@@ -1116,7 +1137,8 @@
 	tests/stub_errorpage.$(OBJEXT) \
 	tests/stub_HttpRequest.$(OBJEXT) \
 	tests/stub_access_log.$(OBJEXT) refresh.$(OBJEXT) \
-	tests/stub_store_client.$(OBJEXT) tests/stub_tools.$(OBJEXT) \
+	tests/stub_store_client.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) tests/stub_tools.$(OBJEXT) \
 	tests/testStoreSupport.$(OBJEXT) time.$(OBJEXT) \
 	URLScheme.$(OBJEXT) wordlist.$(OBJEXT) $(am__objects_7)
 nodist_tests_testNull_OBJECTS = $(am__objects_23) $(am__objects_21)
@@ -1125,6 +1147,90 @@
 tests_testNull_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(tests_testNull_LDFLAGS) $(LDFLAGS) -o $@
+am__tests_testRock_SOURCES_DIST = cbdata.cc CacheDigest.cc \
+	ConfigOption.cc ConfigParser.cc disk.cc ETag.cc EventLoop.cc \
+	event.cc fd.cc FileMap.h filemap.cc HttpBody.h HttpBody.cc \
+	HttpHdrCc.cc HttpHdrContRange.cc HttpHdrRange.cc HttpHdrSc.cc \
+	HttpHdrScTarget.cc HttpHeader.cc HttpHeaderTools.cc HttpMsg.cc \
+	HttpReply.cc HttpRequestMethod.cc HttpStatusLine.cc int.cc \
+	list.cc mem.cc MemBuf.cc MemObject.cc mem_node.cc Packer.cc \
+	Parsing.cc RemovalPolicy.cc StatHist.cc stmem.cc store.cc \
+	StoreFileSystem.cc StoreIOState.cc StoreMeta.cc \
+	StoreMetaMD5.cc StoreMetaSTD.cc StoreMetaSTDLFS.cc \
+	StoreMetaURL.cc StoreMetaUnpacker.cc StoreMetaVary.cc \
+	StoreSwapLogData.cc store_dir.cc store_io.cc store_key_md5.cc \
+	store_swapmeta.cc store_swapout.cc String.cc SwapDir.cc \
+	tests/testRock.cc tests/testMain.cc tests/testRock.h \
+	tests/testStoreSupport.cc tests/testStoreSupport.h \
+	tests/stub_access_log.cc tests/stub_cache_cf.cc \
+	tests/stub_cache_manager.cc tests/stub_client_db.cc \
+	tests/stub_client_side_request.cc tests/stub_debug.cc \
+	tests/stub_errorpage.cc tests/stub_HelperChildConfig.cc \
+	tests/stub_http.cc tests/stub_HttpRequest.cc tests/stub_icp.cc \
+	tests/stub_ipc.cc tests/stub_ipcache.cc tests/stub_libicmp.cc \
+	tests/stub_MemStore.cc tests/stub_mime.cc tests/stub_Port.cc \
+	tests/stub_pconn.cc tests/stub_store_client.cc \
+	tests/stub_store_rebuild.cc tests/stub_store_stats.cc \
+	tests/stub_tools.cc tests/stub_UdsOp.cc time.cc url.cc \
+	URLScheme.cc wordlist.cc CommonPool.h CompositePoolNode.h \
+	delay_pools.cc DelayId.cc DelayId.h DelayIdComposite.h \
+	DelayBucket.cc DelayBucket.h DelayConfig.cc DelayConfig.h \
+	DelayPool.cc DelayPool.h DelayPools.h DelaySpec.cc DelaySpec.h \
+	DelayTagged.cc DelayTagged.h DelayUser.cc DelayUser.h \
+	DelayVector.cc DelayVector.h NullDelayId.cc NullDelayId.h \
+	ClientDelayConfig.cc ClientDelayConfig.h \
+	DiskIO/DiskIOModule.cc DiskIO/ReadRequest.cc \
+	DiskIO/ReadRequest.h DiskIO/WriteRequest.cc \
+	DiskIO/WriteRequest.h DiskIO/DiskFile.h \
+	DiskIO/DiskIOStrategy.h DiskIO/IORequestor.h \
+	DiskIO/DiskIOModule.h unlinkd.cc
+am_tests_testRock_OBJECTS = cbdata.$(OBJEXT) CacheDigest.$(OBJEXT) \
+	ConfigOption.$(OBJEXT) ConfigParser.$(OBJEXT) disk.$(OBJEXT) \
+	ETag.$(OBJEXT) EventLoop.$(OBJEXT) event.$(OBJEXT) \
+	fd.$(OBJEXT) filemap.$(OBJEXT) HttpBody.$(OBJEXT) \
+	HttpHdrCc.$(OBJEXT) HttpHdrContRange.$(OBJEXT) \
+	HttpHdrRange.$(OBJEXT) HttpHdrSc.$(OBJEXT) \
+	HttpHdrScTarget.$(OBJEXT) HttpHeader.$(OBJEXT) \
+	HttpHeaderTools.$(OBJEXT) HttpMsg.$(OBJEXT) \
+	HttpReply.$(OBJEXT) HttpRequestMethod.$(OBJEXT) \
+	HttpStatusLine.$(OBJEXT) int.$(OBJEXT) list.$(OBJEXT) \
+	mem.$(OBJEXT) MemBuf.$(OBJEXT) MemObject.$(OBJEXT) \
+	mem_node.$(OBJEXT) Packer.$(OBJEXT) Parsing.$(OBJEXT) \
+	RemovalPolicy.$(OBJEXT) StatHist.$(OBJEXT) stmem.$(OBJEXT) \
+	store.$(OBJEXT) StoreFileSystem.$(OBJEXT) \
+	StoreIOState.$(OBJEXT) StoreMeta.$(OBJEXT) \
+	StoreMetaMD5.$(OBJEXT) StoreMetaSTD.$(OBJEXT) \
+	StoreMetaSTDLFS.$(OBJEXT) StoreMetaURL.$(OBJEXT) \
+	StoreMetaUnpacker.$(OBJEXT) StoreMetaVary.$(OBJEXT) \
+	StoreSwapLogData.$(OBJEXT) store_dir.$(OBJEXT) \
+	store_io.$(OBJEXT) store_key_md5.$(OBJEXT) \
+	store_swapmeta.$(OBJEXT) store_swapout.$(OBJEXT) \
+	String.$(OBJEXT) SwapDir.$(OBJEXT) tests/testRock.$(OBJEXT) \
+	tests/testMain.$(OBJEXT) tests/testStoreSupport.$(OBJEXT) \
+	tests/stub_access_log.$(OBJEXT) tests/stub_cache_cf.$(OBJEXT) \
+	tests/stub_cache_manager.$(OBJEXT) \
+	tests/stub_client_db.$(OBJEXT) \
+	tests/stub_client_side_request.$(OBJEXT) \
+	tests/stub_debug.$(OBJEXT) tests/stub_errorpage.$(OBJEXT) \
+	tests/stub_HelperChildConfig.$(OBJEXT) \
+	tests/stub_http.$(OBJEXT) tests/stub_HttpRequest.$(OBJEXT) \
+	tests/stub_icp.$(OBJEXT) tests/stub_ipc.$(OBJEXT) \
+	tests/stub_ipcache.$(OBJEXT) tests/stub_libicmp.$(OBJEXT) \
+	tests/stub_MemStore.$(OBJEXT) tests/stub_mime.$(OBJEXT) \
+	tests/stub_Port.$(OBJEXT) tests/stub_pconn.$(OBJEXT) \
+	tests/stub_store_client.$(OBJEXT) \
+	tests/stub_store_rebuild.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) tests/stub_tools.$(OBJEXT) \
+	tests/stub_UdsOp.$(OBJEXT) time.$(OBJEXT) url.$(OBJEXT) \
+	URLScheme.$(OBJEXT) wordlist.$(OBJEXT) $(am__objects_6) \
+	$(am__objects_7) $(am__objects_16)
+nodist_tests_testRock_OBJECTS = $(am__objects_21) \
+	swap_log_op.$(OBJEXT) SquidMath.$(OBJEXT) $(am__objects_23)
+tests_testRock_OBJECTS = $(am_tests_testRock_OBJECTS) \
+	$(nodist_tests_testRock_OBJECTS)
+tests_testRock_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(tests_testRock_LDFLAGS) $(LDFLAGS) -o $@
 am__tests_testStore_SOURCES_DIST = CacheDigest.cc cbdata.cc \
 	ClientInfo.h ConfigOption.cc ConfigParser.cc CommonPool.h \
 	CompositePoolNode.h delay_pools.cc DelayId.cc DelayId.h \
@@ -1134,7 +1240,7 @@
 	DelayUser.cc DelayUser.h DelayVector.cc DelayVector.h \
 	NullDelayId.cc NullDelayId.h ClientDelayConfig.cc \
 	ClientDelayConfig.h disk.cc DiskIO/ReadRequest.cc \
-	DiskIO/WriteRequest.cc ETag.cc event.cc EventLoop.cc \
+	DiskIO/WriteRequest.cc ETag.cc event.cc EventLoop.cc FileMap.h \
 	filemap.cc HttpHdrCc.h HttpHdrCc.cc HttpHdrCc.cci \
 	HttpHdrContRange.cc HttpHdrRange.cc HttpHdrSc.cc \
 	HttpHdrScTarget.cc HttpHeaderTools.cc HttpHeader.cc HttpMsg.cc \
@@ -1151,19 +1257,20 @@
 	tests/stub_comm.cc tests/stub_debug.cc \
 	tests/stub_DiskIOModule.cc tests/stub_errorpage.cc \
 	tests/stub_fd.cc tests/stub_helper.cc \
-	tests/stub_HelperChildConfig.cc tests/stub_http.cc \
-	tests/stub_HttpReply.cc tests/stub_HttpRequest.cc \
+	tests/stub_HelperChildConfig.cc tests/stub_http.cc HttpBody.h \
+	HttpBody.cc tests/stub_HttpReply.cc tests/stub_HttpRequest.cc \
 	tests/stub_libcomm.cc tests/stub_MemObject.cc \
 	tests/stub_MemStore.cc tests/stub_mime.cc tests/stub_Port.cc \
-	tests/stub_store_client.cc tests/stub_store_rebuild.cc \
-	tests/stub_store_swapout.cc tests/stub_tools.cc \
-	tests/stub_UdsOp.cc tests/testMain.cc tests/testStore.cc \
-	tests/testStore.h tests/testStoreEntryStream.cc \
-	tests/testStoreEntryStream.h tests/testStoreController.cc \
-	tests/testStoreController.h tests/testStoreHashIndex.cc \
-	tests/testStoreHashIndex.h tests/testStoreSupport.cc \
-	tests/testStoreSupport.h tests/TestSwapDir.cc \
-	tests/TestSwapDir.h time.cc url.cc URLScheme.cc wordlist.cc
+	tests/stub_store_client.cc tests/stub_store_stats.cc \
+	tests/stub_store_rebuild.cc tests/stub_store_swapout.cc \
+	tests/stub_tools.cc tests/stub_UdsOp.cc tests/testMain.cc \
+	tests/testStore.cc tests/testStore.h \
+	tests/testStoreEntryStream.cc tests/testStoreEntryStream.h \
+	tests/testStoreController.cc tests/testStoreController.h \
+	tests/testStoreHashIndex.cc tests/testStoreHashIndex.h \
+	tests/testStoreSupport.cc tests/testStoreSupport.h \
+	tests/TestSwapDir.cc tests/TestSwapDir.h time.cc url.cc \
+	URLScheme.cc wordlist.cc
 am_tests_testStore_OBJECTS = CacheDigest.$(OBJEXT) cbdata.$(OBJEXT) \
 	ConfigOption.$(OBJEXT) ConfigParser.$(OBJEXT) $(am__objects_6) \
 	disk.$(OBJEXT) DiskIO/ReadRequest.$(OBJEXT) \
@@ -1193,11 +1300,13 @@
 	tests/stub_errorpage.$(OBJEXT) tests/stub_fd.$(OBJEXT) \
 	tests/stub_helper.$(OBJEXT) \
 	tests/stub_HelperChildConfig.$(OBJEXT) \
-	tests/stub_http.$(OBJEXT) tests/stub_HttpReply.$(OBJEXT) \
+	tests/stub_http.$(OBJEXT) HttpBody.$(OBJEXT) \
+	tests/stub_HttpReply.$(OBJEXT) \
 	tests/stub_HttpRequest.$(OBJEXT) tests/stub_libcomm.$(OBJEXT) \
 	tests/stub_MemObject.$(OBJEXT) tests/stub_MemStore.$(OBJEXT) \
 	tests/stub_mime.$(OBJEXT) tests/stub_Port.$(OBJEXT) \
 	tests/stub_store_client.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) \
 	tests/stub_store_rebuild.$(OBJEXT) \
 	tests/stub_store_swapout.$(OBJEXT) tests/stub_tools.$(OBJEXT) \
 	tests/stub_UdsOp.$(OBJEXT) tests/testMain.$(OBJEXT) \
@@ -1242,11 +1351,11 @@
 	DiskIO/ReadRequest.cc DiskIO/WriteRequest.cc dlink.h dlink.cc \
 	dns_internal.cc DnsLookupDetails.h DnsLookupDetails.cc dns.cc \
 	errorpage.cc ETag.cc event.cc external_acl.cc \
-	ExternalACLEntry.cc fd.cc fde.cc filemap.cc forward.cc \
-	fqdncache.cc ftp.cc gopher.cc helper.cc HelperChildConfig.h \
-	HelperChildConfig.cc hier_code.h htcp.cc htcp.h http.cc \
-	HttpBody.cc HttpHdrCc.h HttpHdrCc.cc HttpHdrCc.cci \
-	HttpHdrContRange.cc HttpHdrRange.cc HttpHdrSc.cc \
+	ExternalACLEntry.cc fd.cc fde.cc FileMap.h filemap.cc \
+	forward.cc fqdncache.cc ftp.cc gopher.cc helper.cc \
+	HelperChildConfig.h HelperChildConfig.cc hier_code.h htcp.cc \
+	htcp.h http.cc HttpBody.h HttpBody.cc HttpHdrCc.h HttpHdrCc.cc \
+	HttpHdrCc.cci HttpHdrContRange.cc HttpHdrRange.cc HttpHdrSc.cc \
 	HttpHdrScTarget.cc HttpHeader.cc HttpHeaderTools.cc HttpMsg.cc \
 	HttpParser.cc HttpParser.h HttpReply.cc HttpRequest.cc \
 	HttpRequestMethod.cc HttpStatusLine.cc icp_v2.cc icp_v3.cc \
@@ -1266,10 +1375,10 @@
 	StoreMetaVary.cc StoreSwapLogData.cc String.cc SwapDir.cc \
 	MemStore.cc tests/stub_debug.cc tests/stub_DiskIOModule.cc \
 	tests/stub_main_cc.cc tests/stub_ipc_Forwarder.cc \
-	tests/testURL.cc tests/testURL.h tests/testURLScheme.cc \
-	tests/testURLScheme.h tests/testMain.cc time.cc tools.cc \
-	tunnel.cc url.cc URLScheme.cc urn.cc wccp2.cc whois.cc \
-	FadingCounter.cc win32.cc wordlist.cc
+	tests/stub_store_stats.cc tests/testURL.cc tests/testURL.h \
+	tests/testURLScheme.cc tests/testURLScheme.h tests/testMain.cc \
+	time.cc tools.cc tunnel.cc url.cc URLScheme.cc urn.cc wccp2.cc \
+	whois.cc FadingCounter.cc win32.cc wordlist.cc
 am_tests_testURL_OBJECTS = $(am__objects_4) BodyPipe.$(OBJEXT) \
 	cache_cf.$(OBJEXT) cache_manager.$(OBJEXT) \
 	CacheDigest.$(OBJEXT) carp.$(OBJEXT) cbdata.$(OBJEXT) \
@@ -1316,7 +1425,8 @@
 	String.$(OBJEXT) SwapDir.$(OBJEXT) MemStore.$(OBJEXT) \
 	tests/stub_debug.$(OBJEXT) tests/stub_DiskIOModule.$(OBJEXT) \
 	tests/stub_main_cc.$(OBJEXT) \
-	tests/stub_ipc_Forwarder.$(OBJEXT) tests/testURL.$(OBJEXT) \
+	tests/stub_ipc_Forwarder.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) tests/testURL.$(OBJEXT) \
 	tests/testURLScheme.$(OBJEXT) tests/testMain.$(OBJEXT) \
 	time.$(OBJEXT) tools.$(OBJEXT) tunnel.$(OBJEXT) url.$(OBJEXT) \
 	URLScheme.$(OBJEXT) urn.$(OBJEXT) wccp2.$(OBJEXT) \
@@ -1333,10 +1443,11 @@
 	tests/stub_client_db.cc tests/stub_HelperChildConfig.cc \
 	tests/stub_icp.cc tests/stub_ipc.cc tests/stub_MemStore.cc \
 	tests/stub_pconn.cc tests/stub_Port.cc tests/stub_UdsOp.cc \
-	tests/stub_internal.cc tests/stub_store_rebuild.cc fd.cc \
-	disk.cc filemap.cc HttpBody.cc HttpReply.cc HttpStatusLine.cc \
-	int.cc list.cc MemObject.cc StoreSwapLogData.cc \
-	StoreIOState.cc StoreMeta.cc StoreMetaMD5.cc StoreMetaSTD.cc \
+	tests/stub_internal.cc tests/stub_store_rebuild.cc \
+	tests/stub_store_stats.cc fd.cc disk.cc FileMap.h filemap.cc \
+	HttpBody.h HttpBody.cc HttpReply.cc HttpStatusLine.cc int.cc \
+	list.cc MemObject.cc StoreSwapLogData.cc StoreIOState.cc \
+	StoreMeta.cc StoreMetaMD5.cc StoreMetaSTD.cc \
 	StoreMetaSTDLFS.cc StoreMetaUnpacker.cc StoreMetaURL.cc \
 	StoreMetaVary.cc StoreFileSystem.cc store_io.cc \
 	store_swapout.cc store_swapmeta.cc unlinkd.cc win32.cc \
@@ -1374,7 +1485,8 @@
 	tests/stub_MemStore.$(OBJEXT) tests/stub_pconn.$(OBJEXT) \
 	tests/stub_Port.$(OBJEXT) tests/stub_UdsOp.$(OBJEXT) \
 	tests/stub_internal.$(OBJEXT) \
-	tests/stub_store_rebuild.$(OBJEXT) fd.$(OBJEXT) disk.$(OBJEXT) \
+	tests/stub_store_rebuild.$(OBJEXT) \
+	tests/stub_store_stats.$(OBJEXT) fd.$(OBJEXT) disk.$(OBJEXT) \
 	filemap.$(OBJEXT) HttpBody.$(OBJEXT) HttpReply.$(OBJEXT) \
 	HttpStatusLine.$(OBJEXT) int.$(OBJEXT) list.$(OBJEXT) \
 	MemObject.$(OBJEXT) StoreSwapLogData.$(OBJEXT) \
@@ -1435,10 +1547,10 @@
 	DiskIO/DiskIOModule.h disk.cc dlink.h dlink.cc dns_internal.cc \
 	DnsLookupDetails.h DnsLookupDetails.cc dns.cc errorpage.cc \
 	ETag.cc event.cc external_acl.cc ExternalACLEntry.cc \
-	FadingCounter.cc fd.cc fde.cc filemap.cc forward.cc \
+	FadingCounter.cc fd.cc fde.cc FileMap.h filemap.cc forward.cc \
 	fqdncache.cc ftp.cc gopher.cc helper.cc HelperChildConfig.h \
 	HelperChildConfig.cc hier_code.h htcp.cc htcp.h http.cc \
-	HttpBody.cc HttpHdrCc.h HttpHdrCc.cc HttpHdrCc.cci \
+	HttpBody.h HttpBody.cc HttpHdrCc.h HttpHdrCc.cc HttpHdrCc.cci \
 	HttpHdrContRange.cc HttpHdrRange.cc HttpHdrSc.cc \
 	HttpHdrScTarget.cc HttpHeader.cc HttpHeaderTools.cc HttpMsg.cc \
 	HttpParser.cc HttpParser.h HttpReply.cc HttpRequest.cc \
@@ -1458,9 +1570,10 @@
 	StoreMetaUnpacker.cc StoreMetaURL.cc StoreMetaVary.cc \
 	StoreSwapLogData.cc String.cc SwapDir.cc \
 	tests/test_http_range.cc tests/stub_ipc_Forwarder.cc \
-	tests/stub_main_cc.cc tests/stub_MemStore.cc time.cc tools.cc \
-	tunnel.cc unlinkd.cc url.cc URLScheme.cc urn.cc wccp2.cc \
-	whois.cc win32.cc wordlist.cc
+	tests/stub_main_cc.cc tests/stub_MemStore.cc \
+	tests/stub_store_stats.cc time.cc tools.cc tunnel.cc \
+	unlinkd.cc url.cc URLScheme.cc urn.cc wccp2.cc whois.cc \
+	win32.cc wordlist.cc
 am_tests_test_http_range_OBJECTS = $(am__objects_4) BodyPipe.$(OBJEXT) \
 	cache_cf.$(OBJEXT) ProtoPort.$(OBJEXT) cache_manager.$(OBJEXT) \
 	CacheDigest.$(OBJEXT) carp.$(OBJEXT) cbdata.$(OBJEXT) \
@@ -1508,10 +1621,11 @@
 	tests/test_http_range.$(OBJEXT) \
 	tests/stub_ipc_Forwarder.$(OBJEXT) \
 	tests/stub_main_cc.$(OBJEXT) tests/stub_MemStore.$(OBJEXT) \
-	time.$(OBJEXT) tools.$(OBJEXT) tunnel.$(OBJEXT) \
-	$(am__objects_16) url.$(OBJEXT) URLScheme.$(OBJEXT) \
-	urn.$(OBJEXT) wccp2.$(OBJEXT) whois.$(OBJEXT) \
-	$(am__objects_17) wordlist.$(OBJEXT)
+	tests/stub_store_stats.$(OBJEXT) time.$(OBJEXT) \
+	tools.$(OBJEXT) tunnel.$(OBJEXT) $(am__objects_16) \
+	url.$(OBJEXT) URLScheme.$(OBJEXT) urn.$(OBJEXT) \
+	wccp2.$(OBJEXT) whois.$(OBJEXT) $(am__objects_17) \
+	wordlist.$(OBJEXT)
 nodist_tests_test_http_range_OBJECTS = $(am__objects_22) \
 	$(am__objects_21)
 tests_test_http_range_OBJECTS = $(am_tests_test_http_range_OBJECTS) \
@@ -1578,6 +1692,8 @@
 	$(nodist_tests_testBoilerplate_SOURCES) \
 	$(tests_testCacheManager_SOURCES) \
 	$(nodist_tests_testCacheManager_SOURCES) \
+	$(tests_testConfigParser_SOURCES) \
+	$(nodist_tests_testConfigParser_SOURCES) \
 	$(tests_testCoss_SOURCES) $(nodist_tests_testCoss_SOURCES) \
 	$(tests_testDiskIO_SOURCES) $(nodist_tests_testDiskIO_SOURCES) \
 	$(tests_testEvent_SOURCES) $(nodist_tests_testEvent_SOURCES) \
@@ -1590,6 +1706,7 @@
 	$(tests_testHttpRequest_SOURCES) \
 	$(nodist_tests_testHttpRequest_SOURCES) \
 	$(tests_testNull_SOURCES) $(nodist_tests_testNull_SOURCES) \
+	$(tests_testRock_SOURCES) $(nodist_tests_testRock_SOURCES) \
 	$(tests_testStore_SOURCES) $(nodist_tests_testStore_SOURCES) \
 	$(tests_testString_SOURCES) $(nodist_tests_testString_SOURCES) \
 	$(tests_testURL_SOURCES) $(nodist_tests_testURL_SOURCES) \
@@ -1607,6 +1724,7 @@
 	$(tests_testACLMaxUserIP_SOURCES) \
 	$(tests_testBoilerplate_SOURCES) \
 	$(am__tests_testCacheManager_SOURCES_DIST) \
+	$(tests_testConfigParser_SOURCES) \
 	$(am__tests_testCoss_SOURCES_DIST) \
 	$(am__tests_testDiskIO_SOURCES_DIST) \
 	$(am__tests_testEvent_SOURCES_DIST) \
@@ -1614,6 +1732,7 @@
 	$(tests_testHttpParser_SOURCES) $(tests_testHttpReply_SOURCES) \
 	$(am__tests_testHttpRequest_SOURCES_DIST) \
 	$(am__tests_testNull_SOURCES_DIST) \
+	$(am__tests_testRock_SOURCES_DIST) \
 	$(am__tests_testStore_SOURCES_DIST) \
 	$(tests_testString_SOURCES) $(am__tests_testURL_SOURCES_DIST) \
 	$(am__tests_testUfs_SOURCES_DIST) \
@@ -2073,18 +2192,18 @@
 	errorpage.h ETag.cc ETag.h event.cc event.h EventLoop.h \
 	EventLoop.cc external_acl.cc ExternalACL.h ExternalACLEntry.cc \
 	ExternalACLEntry.h FadingCounter.h FadingCounter.cc fd.cc \
-	fde.cc fde.h filemap.cc forward.cc forward.h fqdncache.cc \
-	ftp.cc Generic.h globals.h gopher.cc helper.cc helper.h \
-	HelperChildConfig.h HelperChildConfig.cc hier_code.h \
+	fde.cc fde.h FileMap.h filemap.cc forward.cc forward.h \
+	fqdncache.cc ftp.cc Generic.h globals.h gopher.cc helper.cc \
+	helper.h HelperChildConfig.h HelperChildConfig.cc hier_code.h \
 	HierarchyLogEntry.h $(HTCPSOURCE) http.cc http.h \
 	HttpStatusCode.h HttpStatusLine.cc HttpStatusLine.h \
 	HttpHdrCc.h HttpHdrCc.cc HttpHdrCc.cci HttpHdrRange.cc \
 	HttpHdrSc.cc HttpHdrSc.h HttpHdrScTarget.cc HttpHdrScTarget.h \
 	HttpHdrContRange.cc HttpHdrContRange.h HttpHeader.cc \
 	HttpHeader.h HttpHeaderMask.h HttpHeaderRange.h \
-	HttpHeaderTools.cc HttpBody.cc HttpControlMsg.h HttpMsg.cc \
-	HttpMsg.h HttpParser.cc HttpParser.h HttpReply.cc HttpReply.h \
-	HttpRequest.cc HttpRequest.h HttpRequestMethod.cc \
+	HttpHeaderTools.cc HttpBody.h HttpBody.cc HttpControlMsg.h \
+	HttpMsg.cc HttpMsg.h HttpParser.cc HttpParser.h HttpReply.cc \
+	HttpReply.h HttpRequest.cc HttpRequest.h HttpRequestMethod.cc \
 	HttpRequestMethod.h HttpVersion.h ICP.h icp_opcode.h icp_v2.cc \
 	icp_v3.cc int.cc internal.cc $(IPC_SOURCE) ipcache.cc \
 	ipcache.h $(LEAKFINDERSOURCE) list.cc lookup_t.h main.cc \
@@ -2107,12 +2226,13 @@
 	StoreMetaSTDLFS.cc StoreMetaSTDLFS.h StoreMetaObjSize.h \
 	StoreMetaUnpacker.cc StoreMetaUnpacker.h StoreMetaURL.cc \
 	StoreMetaURL.h StoreMetaVary.cc StoreMetaVary.h StoreSearch.h \
-	StoreSwapLogData.cc StoreSwapLogData.h Server.cc Server.h \
-	structs.h swap_log_op.h SwapDir.cc SwapDir.h MemStore.cc \
-	MemStore.h time.cc TimeOrTag.h tools.cc tunnel.cc typedefs.h \
-	$(UNLINKDSOURCE) url.cc URL.h URLScheme.cc URLScheme.h urn.cc \
-	wccp.cc wccp2.cc whois.cc wordlist.cc wordlist.h \
-	$(WIN32_SOURCE) $(WINSVC_SOURCE) $(am__append_8)
+	StoreStats.cc StoreStats.h StoreSwapLogData.cc \
+	StoreSwapLogData.h Server.cc Server.h structs.h swap_log_op.h \
+	SwapDir.cc SwapDir.h MemStore.cc MemStore.h time.cc \
+	TimeOrTag.h tools.cc tunnel.cc typedefs.h $(UNLINKDSOURCE) \
+	url.cc URL.h URLScheme.cc URLScheme.h urn.cc wccp.cc wccp2.cc \
+	whois.cc wordlist.cc wordlist.h $(WIN32_SOURCE) \
+	$(WINSVC_SOURCE) $(am__append_8)
 EXTRA_squid_SOURCES = \
 	$(AIO_WIN32_ALL_SOURCES) \
 	$(all_AUTHMODULES) \
@@ -2207,7 +2327,8 @@
 	$(COMPAT_LIB) \
 	$(XTRA_LIBS)
 
-dnsserver_SOURCES = dnsserver.cc SquidNew.cc tests/stub_debug.cc test_tools.cc time.cc
+dnsserver_SOURCES = dnsserver.cc
+dnsserver_LDADD = $(COMPAT_LIB)
 recv_announce_SOURCES = recv-announce.cc
 ufsdump_SOURCES = \
 	ClientInfo.h \
@@ -2443,6 +2564,7 @@
 	cbdata.cc \
 	cbdata.h \
 	ETag.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
@@ -2481,6 +2603,7 @@
 	tests/stub_HelperChildConfig.cc \
 	tests/stub_StatHist.cc \
 	tests/stub_store.cc \
+	tests/stub_store_stats.cc \
 	tests/testHttpReply.cc \
 	tests/testHttpReply.h \
 	tests/testMain.cc \
@@ -2515,6 +2638,7 @@
 	DiskIO/WriteRequest.cc \
 	ETag.cc \
 	event.cc \
+	FileMap.h \
 	filemap.cc \
 	HelperChildConfig.h \
 	HelperChildConfig.cc \
@@ -2566,6 +2690,7 @@
 	tests/stub_mime.cc \
 	tests/stub_store.cc \
 	tests/stub_store_rebuild.cc \
+	tests/stub_store_stats.cc \
 	tests/stub_store_swapout.cc \
 	tests/stub_tools.cc \
 	tests/stub_cache_manager.cc \
@@ -2643,6 +2768,7 @@
 	tests/testMain.cc \
 	tests/stub_main_cc.cc \
 	tests/stub_ipc_Forwarder.cc \
+	tests/stub_store_stats.cc \
 	time.cc \
 	BodyPipe.cc \
 	cache_manager.cc \
@@ -2678,6 +2804,7 @@
 	ExternalACLEntry.cc \
 	fd.cc \
 	fde.cc \
+	FileMap.h \
 	filemap.cc \
 	forward.cc \
 	fqdncache.cc \
@@ -2689,6 +2816,7 @@
 	HelperChildConfig.cc \
 	$(HTCPSOURCE) \
 	http.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHeader.cc \
 	HttpHeaderTools.cc \
@@ -2832,7 +2960,9 @@
 	EventLoop.cc \
 	event.cc \
 	fd.cc \
+	FileMap.h \
 	filemap.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
@@ -2899,6 +3029,7 @@
 	tests/stub_pconn.cc \
 	tests/stub_Port.cc \
 	tests/stub_store_client.cc \
+	tests/stub_store_stats.cc \
 	tests/stub_store_rebuild.cc \
 	tests/stub_tools.cc \
 	tests/stub_UdsOp.cc \
@@ -2998,6 +3129,7 @@
 	FadingCounter.cc \
 	fd.cc \
 	fde.cc \
+	FileMap.h \
 	filemap.cc \
 	forward.cc \
 	fqdncache.cc \
@@ -3009,6 +3141,7 @@
 	hier_code.h \
 	$(HTCPSOURCE) \
 	http.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHeader.cc \
 	HttpHeaderTools.cc \
@@ -3090,6 +3223,7 @@
 	tests/testMain.cc \
 	tests/stub_main_cc.cc \
 	tests/stub_ipc_Forwarder.cc \
+	tests/stub_store_stats.cc \
 	time.cc \
 	tools.cc \
 	tunnel.cc \
@@ -3187,6 +3321,7 @@
 	FadingCounter.cc \
 	fd.cc \
 	fde.cc \
+	FileMap.h \
 	filemap.cc \
 	forward.cc \
 	fqdncache.cc \
@@ -3198,6 +3333,7 @@
 	hier_code.h \
 	$(HTCPSOURCE) \
 	http.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHeader.cc \
 	HttpHeaderTools.cc \
@@ -3278,6 +3414,7 @@
 	tests/testMain.cc \
 	tests/stub_main_cc.cc \
 	tests/stub_ipc_Forwarder.cc \
+	tests/stub_store_stats.cc \
 	time.cc \
 	tools.cc \
 	tunnel.cc \
@@ -3375,6 +3512,7 @@
 	FadingCounter.cc \
 	fd.cc \
 	fde.cc \
+	FileMap.h \
 	filemap.cc \
 	forward.cc \
 	fqdncache.cc \
@@ -3386,6 +3524,7 @@
 	hier_code.h \
 	$(HTCPSOURCE) \
 	http.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
@@ -3463,6 +3602,7 @@
 	tests/stub_ipc_Forwarder.cc \
 	tests/stub_main_cc.cc \
 	tests/stub_MemStore.cc \
+	tests/stub_store_stats.cc \
 	time.cc \
 	tools.cc \
 	tunnel.cc \
@@ -3572,6 +3712,7 @@
 	tests/stub_DiskIOModule.cc \
 	tests/stub_main_cc.cc \
 	tests/stub_ipc_Forwarder.cc \
+	tests/stub_store_stats.cc \
 	time.cc \
 	BodyPipe.cc \
 	cache_manager.cc \
@@ -3616,6 +3757,7 @@
 	hier_code.h \
 	$(HTCPSOURCE) \
 	http.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHeader.cc \
 	HttpHeaderTools.cc \
@@ -3753,6 +3895,7 @@
 	ETag.cc \
 	event.cc \
 	EventLoop.cc \
+	FileMap.h \
 	filemap.cc \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
@@ -3806,6 +3949,8 @@
 	tests/stub_helper.cc \
 	tests/stub_HelperChildConfig.cc \
 	tests/stub_http.cc \
+	HttpBody.h \
+	HttpBody.cc \
 	tests/stub_HttpReply.cc \
 	tests/stub_HttpRequest.cc \
 	tests/stub_libcomm.cc \
@@ -3814,6 +3959,7 @@
 	tests/stub_mime.cc \
 	tests/stub_Port.cc \
 	tests/stub_store_client.cc \
+	tests/stub_store_stats.cc \
 	tests/stub_store_rebuild.cc \
 	tests/stub_store_swapout.cc \
 	tests/stub_tools.cc \
@@ -3939,9 +4085,12 @@
 	tests/stub_UdsOp.cc \
 	tests/stub_internal.cc \
 	tests/stub_store_rebuild.cc \
+	tests/stub_store_stats.cc \
 	fd.cc \
 	disk.cc \
+	FileMap.h \
 	filemap.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpReply.cc \
 	HttpStatusLine.cc \
@@ -4062,6 +4211,135 @@
 tests_testUfs_DEPENDENCIES = \
 	$(SWAP_TEST_DS)
 
+tests_testRock_SOURCES = \
+	cbdata.cc \
+	CacheDigest.cc \
+	ConfigOption.cc \
+	ConfigParser.cc \
+	disk.cc \
+	ETag.cc \
+	EventLoop.cc \
+	event.cc \
+	fd.cc \
+	FileMap.h \
+	filemap.cc \
+	HttpBody.h \
+	HttpBody.cc \
+	HttpHdrCc.cc \
+	HttpHdrContRange.cc \
+	HttpHdrRange.cc \
+	HttpHdrSc.cc \
+	HttpHdrScTarget.cc \
+	HttpHeader.cc \
+	HttpHeaderTools.cc \
+	HttpMsg.cc \
+	HttpReply.cc \
+	HttpRequestMethod.cc \
+	HttpStatusLine.cc \
+	int.cc \
+	list.cc \
+	mem.cc \
+	MemBuf.cc \
+	MemObject.cc \
+	mem_node.cc \
+	Packer.cc \
+	Parsing.cc \
+	RemovalPolicy.cc \
+	StatHist.cc \
+	stmem.cc \
+	store.cc \
+	StoreFileSystem.cc \
+	StoreIOState.cc \
+	StoreMeta.cc \
+	StoreMetaMD5.cc \
+	StoreMetaSTD.cc \
+	StoreMetaSTDLFS.cc \
+	StoreMetaURL.cc \
+	StoreMetaUnpacker.cc \
+	StoreMetaVary.cc \
+	StoreSwapLogData.cc \
+	store_dir.cc \
+	store_io.cc \
+	store_key_md5.cc \
+	store_swapmeta.cc \
+	store_swapout.cc \
+	String.cc \
+	SwapDir.cc \
+	tests/testRock.cc \
+	tests/testMain.cc \
+	tests/testRock.h \
+	tests/testStoreSupport.cc \
+	tests/testStoreSupport.h \
+	tests/stub_access_log.cc \
+	tests/stub_cache_cf.cc \
+	tests/stub_cache_manager.cc \
+	tests/stub_client_db.cc \
+	tests/stub_client_side_request.cc \
+	tests/stub_debug.cc \
+	tests/stub_errorpage.cc \
+	tests/stub_HelperChildConfig.cc \
+	tests/stub_http.cc \
+	tests/stub_HttpRequest.cc \
+	tests/stub_icp.cc \
+	tests/stub_ipc.cc \
+	tests/stub_ipcache.cc \
+	tests/stub_libicmp.cc \
+	tests/stub_MemStore.cc \
+	tests/stub_mime.cc \
+	tests/stub_Port.cc \
+	tests/stub_pconn.cc \
+	tests/stub_store_client.cc \
+	tests/stub_store_rebuild.cc \
+	tests/stub_store_stats.cc \
+	tests/stub_tools.cc \
+	tests/stub_UdsOp.cc \
+	time.cc \
+	url.cc \
+	URLScheme.cc \
+	wordlist.cc \
+	$(DELAY_POOL_SOURCE) \
+	$(DISKIO_SOURCE) \
+	$(UNLINKDSOURCE)
+
+nodist_tests_testRock_SOURCES = \
+	$(DISKIO_GEN_SOURCE) \
+	swap_log_op.cc \
+	SquidMath.cc \
+	SquidMath.h \
+	$(TESTSOURCES)
+
+tests_testRock_LDADD = \
+	anyp/libanyp.la \
+	libsquid.la \
+	comm/libcomm.la \
+	ip/libip.la \
+	fs/libfs.la \
+	$(AUTH_LIBS) \
+	$(COMMON_LIBS) \
+	$(REPL_OBJS) \
+	$(DISK_LIBS) \
+	$(DISK_OS_LIBS) \
+	acl/libacls.la \
+	acl/libapi.la \
+	acl/libstate.la \
+	eui/libeui.la \
+	ipc/libipc.la \
+	mgr/libmgr.la \
+	base/libbase.la \
+	$(SSL_LIBS) \
+	$(top_builddir)/lib/libmisccontainers.la \
+	$(top_builddir)/lib/libmiscencoding.la \
+	$(top_builddir)/lib/libmiscutil.la \
+	$(REGEXLIB) \
+	$(SQUID_CPPUNIT_LIBS) \
+	$(SSLLIB) \
+	$(COMPAT_LIB) \
+	$(XTRA_LIBS)
+
+tests_testRock_LDFLAGS = $(LIBADD_DL)
+tests_testRock_DEPENDENCIES = \
+	$(SWAP_TEST_DS)
+
 tests_testCoss_SOURCES = \
 	tests/testCoss.cc \
 	tests/testMain.cc \
@@ -4074,9 +4352,12 @@
 	tests/stub_ipc.cc \
 	tests/stub_pconn.cc \
 	tests/stub_store_rebuild.cc \
+	tests/stub_store_stats.cc \
 	fd.cc \
 	disk.cc \
+	FileMap.h \
 	filemap.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpReply.cc \
 	HttpStatusLine.cc \
@@ -4145,6 +4426,7 @@
 	tests/stub_MemStore.cc \
 	tests/stub_Port.cc \
 	tests/stub_store_client.cc \
+	tests/stub_store_stats.cc \
 	tests/stub_tools.cc \
 	tests/stub_UdsOp.cc \
 	tests/testStoreSupport.cc \
@@ -4205,9 +4487,12 @@
 	tests/stub_internal.cc \
 	tests/stub_CommIO.cc \
 	tests/stub_store_rebuild.cc \
+	tests/stub_store_stats.cc \
 	fd.cc \
 	disk.cc \
+	FileMap.h \
 	filemap.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpReply.cc \
 	HttpStatusLine.cc \
@@ -4276,6 +4561,7 @@
 	tests/stub_access_log.cc \
 	refresh.cc \
 	tests/stub_store_client.cc \
+	tests/stub_store_stats.cc \
 	tests/stub_tools.cc \
 	tests/testStoreSupport.cc \
 	tests/testStoreSupport.h \
@@ -4354,6 +4640,7 @@
 	ExternalACLEntry.cc \
 	fd.cc \
 	fde.cc \
+	FileMap.h \
 	filemap.cc \
 	forward.cc \
 	fqdncache.cc \
@@ -4365,6 +4652,7 @@
 	hier_code.h \
 	$(HTCPSOURCE) \
 	http.cc \
+	HttpBody.h \
 	HttpBody.cc \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
@@ -4445,6 +4733,7 @@
 	tests/stub_DiskIOModule.cc \
 	tests/stub_main_cc.cc \
 	tests/stub_ipc_Forwarder.cc \
+	tests/stub_store_stats.cc \
 	tests/testURL.cc \
 	tests/testURL.h \
 	tests/testURLScheme.cc \
@@ -4507,6 +4796,40 @@
 	$(REPL_OBJS) \
 	$(SQUID_CPPUNIT_LA)
 
+tests_testConfigParser_SOURCES = \
+	ClientInfo.h \
+	mem.cc \
+	MemBuf.cc \
+	String.cc \
+	ConfigParser.cc \
+	tests/testMain.cc \
+	tests/testConfigParser.cc \
+	tests/testConfigParser.h \
+	tests/stub_cache_cf.cc \
+	tests/stub_cache_manager.cc \
+	tests/stub_debug.cc \
+	tests/stub_HelperChildConfig.cc \
+	time.cc \
+	wordlist.cc
+
+nodist_tests_testConfigParser_SOURCES = \
+	$(TESTSOURCES)
+
+tests_testConfigParser_LDADD = \
+	base/libbase.la \
+	libsquid.la \
+	ip/libip.la \
+	$(top_builddir)/lib/libmiscutil.la \
+	$(REGEXLIB) \
+	$(SQUID_CPPUNIT_LIBS) \
+	$(SSLLIB) \
+	$(COMPAT_LIB) \
+	$(XTRA_LIBS)
+
+tests_testConfigParser_LDFLAGS = $(LIBADD_DL)
+tests_testConfigParser_DEPENDENCIES = \
+	$(SQUID_CPPUNIT_LA)
+
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
@@ -4830,14 +5153,6 @@
 DiskIO/DiskDaemon/diskd$(EXEEXT): $(DiskIO_DiskDaemon_diskd_OBJECTS) $(DiskIO_DiskDaemon_diskd_DEPENDENCIES) DiskIO/DiskDaemon/$(am__dirstamp)
 	@rm -f DiskIO/DiskDaemon/diskd$(EXEEXT)
 	$(CXXLINK) $(DiskIO_DiskDaemon_diskd_OBJECTS) $(DiskIO_DiskDaemon_diskd_LDADD) $(LIBS)
-tests/$(am__dirstamp):
-	@$(MKDIR_P) tests
-	@: > tests/$(am__dirstamp)
-tests/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) tests/$(DEPDIR)
-	@: > tests/$(DEPDIR)/$(am__dirstamp)
-tests/stub_debug.$(OBJEXT): tests/$(am__dirstamp) \
-	tests/$(DEPDIR)/$(am__dirstamp)
 dnsserver$(EXEEXT): $(dnsserver_OBJECTS) $(dnsserver_DEPENDENCIES) 
 	@rm -f dnsserver$(EXEEXT)
 	$(CXXLINK) $(dnsserver_OBJECTS) $(dnsserver_LDADD) $(LIBS)
@@ -4861,12 +5176,20 @@
 squid$(EXEEXT): $(squid_OBJECTS) $(squid_DEPENDENCIES) 
 	@rm -f squid$(EXEEXT)
 	$(squid_LINK) $(squid_OBJECTS) $(squid_LDADD) $(LIBS)
+tests/$(am__dirstamp):
+	@$(MKDIR_P) tests
+	@: > tests/$(am__dirstamp)
+tests/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) tests/$(DEPDIR)
+	@: > tests/$(DEPDIR)/$(am__dirstamp)
 tests/stub_access_log.$(OBJEXT): tests/$(am__dirstamp) \
 	tests/$(DEPDIR)/$(am__dirstamp)
 tests/stub_cache_cf.$(OBJEXT): tests/$(am__dirstamp) \
 	tests/$(DEPDIR)/$(am__dirstamp)
 tests/stub_comm.$(OBJEXT): tests/$(am__dirstamp) \
 	tests/$(DEPDIR)/$(am__dirstamp)
+tests/stub_debug.$(OBJEXT): tests/$(am__dirstamp) \
+	tests/$(DEPDIR)/$(am__dirstamp)
 tests/stub_DelayId.$(OBJEXT): tests/$(am__dirstamp) \
 	tests/$(DEPDIR)/$(am__dirstamp)
 tests/stub_DiskIOModule.$(OBJEXT): tests/$(am__dirstamp) \
@@ -4885,6 +5208,8 @@
 	tests/$(DEPDIR)/$(am__dirstamp)
 tests/stub_store_rebuild.$(OBJEXT): tests/$(am__dirstamp) \
 	tests/$(DEPDIR)/$(am__dirstamp)
+tests/stub_store_stats.$(OBJEXT): tests/$(am__dirstamp) \
+	tests/$(DEPDIR)/$(am__dirstamp)
 tests/stub_store_swapout.$(OBJEXT): tests/$(am__dirstamp) \
 	tests/$(DEPDIR)/$(am__dirstamp)
 tests/stub_tools.$(OBJEXT): tests/$(am__dirstamp) \
@@ -4912,12 +5237,17 @@
 tests/testCacheManager$(EXEEXT): $(tests_testCacheManager_OBJECTS) $(tests_testCacheManager_DEPENDENCIES) tests/$(am__dirstamp)
 	@rm -f tests/testCacheManager$(EXEEXT)
 	$(tests_testCacheManager_LINK) $(tests_testCacheManager_OBJECTS) $(tests_testCacheManager_LDADD) $(LIBS)
+tests/testConfigParser.$(OBJEXT): tests/$(am__dirstamp) \
+	tests/$(DEPDIR)/$(am__dirstamp)
+tests/stub_HelperChildConfig.$(OBJEXT): tests/$(am__dirstamp) \
+	tests/$(DEPDIR)/$(am__dirstamp)
+tests/testConfigParser$(EXEEXT): $(tests_testConfigParser_OBJECTS) $(tests_testConfigParser_DEPENDENCIES) tests/$(am__dirstamp)
+	@rm -f tests/testConfigParser$(EXEEXT)
+	$(tests_testConfigParser_LINK) $(tests_testConfigParser_OBJECTS) $(tests_testConfigParser_LDADD) $(LIBS)
 tests/testCoss.$(OBJEXT): tests/$(am__dirstamp) \
 	tests/$(DEPDIR)/$(am__dirstamp)
 tests/stub_client_db.$(OBJEXT): tests/$(am__dirstamp) \
 	tests/$(DEPDIR)/$(am__dirstamp)
-tests/stub_HelperChildConfig.$(OBJEXT): tests/$(am__dirstamp) \
-	tests/$(DEPDIR)/$(am__dirstamp)
 tests/stub_internal.$(OBJEXT): tests/$(am__dirstamp) \
 	tests/$(DEPDIR)/$(am__dirstamp)
 tests/stub_ipc.$(OBJEXT): tests/$(am__dirstamp) \
@@ -4994,6 +5324,11 @@
 tests/testNull$(EXEEXT): $(tests_testNull_OBJECTS) $(tests_testNull_DEPENDENCIES) tests/$(am__dirstamp)
 	@rm -f tests/testNull$(EXEEXT)
 	$(tests_testNull_LINK) $(tests_testNull_OBJECTS) $(tests_testNull_LDADD) $(LIBS)
+tests/testRock.$(OBJEXT): tests/$(am__dirstamp) \
+	tests/$(DEPDIR)/$(am__dirstamp)
+tests/testRock$(EXEEXT): $(tests_testRock_OBJECTS) $(tests_testRock_DEPENDENCIES) tests/$(am__dirstamp)
+	@rm -f tests/testRock$(EXEEXT)
+	$(tests_testRock_LINK) $(tests_testRock_OBJECTS) $(tests_testRock_LDADD) $(LIBS)
 tests/stub_HttpReply.$(OBJEXT): tests/$(am__dirstamp) \
 	tests/$(DEPDIR)/$(am__dirstamp)
 tests/stub_libcomm.$(OBJEXT): tests/$(am__dirstamp) \
@@ -5108,11 +5443,13 @@
 	-rm -f tests/stub_store.$(OBJEXT)
 	-rm -f tests/stub_store_client.$(OBJEXT)
 	-rm -f tests/stub_store_rebuild.$(OBJEXT)
+	-rm -f tests/stub_store_stats.$(OBJEXT)
 	-rm -f tests/stub_store_swapout.$(OBJEXT)
 	-rm -f tests/stub_tools.$(OBJEXT)
 	-rm -f tests/testACLMaxUserIP.$(OBJEXT)
 	-rm -f tests/testBoilerplate.$(OBJEXT)
 	-rm -f tests/testCacheManager.$(OBJEXT)
+	-rm -f tests/testConfigParser.$(OBJEXT)
 	-rm -f tests/testCoss.$(OBJEXT)
 	-rm -f tests/testDiskIO.$(OBJEXT)
 	-rm -f tests/testEvent.$(OBJEXT)
@@ -5123,6 +5460,7 @@
 	-rm -f tests/testHttpRequestMethod.$(OBJEXT)
 	-rm -f tests/testMain.$(OBJEXT)
 	-rm -f tests/testNull.$(OBJEXT)
+	-rm -f tests/testRock.$(OBJEXT)
 	-rm -f tests/testStore.$(OBJEXT)
 	-rm -f tests/testStoreController.$(OBJEXT)
 	-rm -f tests/testStoreEntryStream.$(OBJEXT)
@@ -5207,6 +5545,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoreMetaURL.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoreMetaUnpacker.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoreMetaVary.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoreStats.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoreSwapLogData.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/String.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SwapDir.Po@am__quote@
@@ -5371,11 +5710,13 @@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/stub_store.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/stub_store_client.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/stub_store_rebuild.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/stub_store_stats.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/stub_store_swapout.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/stub_tools.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testACLMaxUserIP.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testBoilerplate.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testCacheManager.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testConfigParser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testCoss.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testDiskIO.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testEvent.Po@am__quote@
@@ -5386,6 +5727,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testHttpRequestMethod.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testMain.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testNull.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testRock.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testStore.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testStoreController.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testStoreEntryStream.Po@am__quote@
@@ -6013,7 +6355,7 @@
 	true
 
 cf_parser.cci: cf.data cf_gen$(EXEEXT)
-	./cf_gen cf.data $(srcdir)/cf.data.depend
+	./cf_gen$(EXEEXT) cf.data $(srcdir)/cf.data.depend
 
 cf_gen_defines.cci: $(srcdir)/cf_gen_defines $(srcdir)/cf.data.pre
 	$(AWK) -f $(srcdir)/cf_gen_defines <$(srcdir)/cf.data.pre >$@ || ($(RM) -f $@ && exit 1)
diff -u -r -N squid-3.2.0.13/src/MemStore.cc squid-3.2.0.14/src/MemStore.cc
--- squid-3.2.0.13/src/MemStore.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/MemStore.cc	2011-12-13 00:08:18.000000000 +1300
@@ -11,6 +11,7 @@
 #include "ipc/mem/Pages.h"
 #include "MemObject.h"
 #include "MemStore.h"
+#include "StoreStats.h"
 #include "HttpReply.h"
 
 /// shared memory segment path to use for MemStore maps
@@ -52,6 +53,19 @@
 }
 
 void
+MemStore::getStats(StoreInfoStats &stats) const
+{
+    const size_t pageSize = Ipc::Mem::PageSize();
+
+    stats.mem.shared = true;
+    stats.mem.capacity =
+        Ipc::Mem::PageLimit(Ipc::Mem::PageId::cachePage) * pageSize;
+    stats.mem.size =
+        Ipc::Mem::PageLevel(Ipc::Mem::PageId::cachePage) * pageSize;
+    stats.mem.count = currentCount();
+}
+
+void
 MemStore::stat(StoreEntry &e) const
 {
     storeAppendPrintf(&e, "\n\nShared Memory Cache\n");
@@ -342,6 +356,24 @@
 }
 
 
+/// reports our needs for shared memory pages to Ipc::Mem::Pages
+class MemStoreClaimMemoryNeedsRr: public RegisteredRunner
+{
+public:
+    /* RegisteredRunner API */
+    virtual void run(const RunnerRegistry &r);
+};
+
+RunnerRegistrationEntry(rrClaimMemoryNeeds, MemStoreClaimMemoryNeedsRr);
+
+
+void
+MemStoreClaimMemoryNeedsRr::run(const RunnerRegistry &)
+{
+    Ipc::Mem::NotePageNeed(Ipc::Mem::PageId::cachePage, MemStore::EntryLimit());
+}
+
+
 /// initializes shared memory segments used by MemStore
 class MemStoreRr: public Ipc::Mem::RegisteredRunner
 {
@@ -365,10 +397,10 @@
 {
     // decide whether to use a shared memory cache if the user did not specify
     if (!Config.memShared.configured()) {
-        Config.memShared.configure(AtomicOperationsSupported &&
+        Config.memShared.configure(Ipc::Atomic::Enabled() &&
                                    Ipc::Mem::Segment::Enabled() && UsingSmp() &&
                                    Config.memMaxSize > 0);
-    } else if (Config.memShared && !AtomicOperationsSupported) {
+    } else if (Config.memShared && !Ipc::Atomic::Enabled()) {
         // bail if the user wants shared memory cache but we cannot support it
         fatal("memory_cache_shared is on, but no support for atomic operations detected");
     } else if (Config.memShared && !Ipc::Mem::Segment::Enabled()) {
@@ -388,8 +420,14 @@
 
     Must(!owner);
     const int64_t entryLimit = MemStore::EntryLimit();
-    if (entryLimit <= 0)
+    if (entryLimit <= 0) {
+        if (Config.memMaxSize > 0) {
+            debugs(20, DBG_IMPORTANT, "WARNING: mem-cache size is too small ("
+                   << (Config.memMaxSize / 1024.0) << " KB), should be >= " <<
+                   (Ipc::Mem::PageSize() / 1024.0) << " KB");
+        }
         return; // no memory cache configured or a misconfiguration
+    }
     owner = MemStoreMap::Init(ShmLabel, entryLimit);
 }
 
diff -u -r -N squid-3.2.0.13/src/MemStore.h squid-3.2.0.14/src/MemStore.h
--- squid-3.2.0.13/src/MemStore.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/MemStore.h	2011-12-13 00:08:18.000000000 +1300
@@ -37,6 +37,7 @@
     virtual uint64_t currentSize() const;
     virtual uint64_t currentCount() const;
     virtual int64_t maxObjectSize() const;
+    virtual void getStats(StoreInfoStats &stats) const;
     virtual void stat(StoreEntry &) const;
     virtual StoreSearch *search(String const url, HttpRequest *);
     virtual void reference(StoreEntry &);
diff -u -r -N squid-3.2.0.13/src/mgr/BasicActions.cc squid-3.2.0.14/src/mgr/BasicActions.cc
--- squid-3.2.0.13/src/mgr/BasicActions.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/mgr/BasicActions.cc	2011-12-13 00:08:18.000000000 +1300
@@ -96,7 +96,7 @@
 {
     debugs(16, DBG_IMPORTANT, "Rotate Logs by Cache Manager command.");
     storeAppendPrintf(entry, "Rotating Squid Process Logs ....");
-#ifdef _SQUID_LINUX_THREADS_
+#if defined(_SQUID_LINUX_THREADS_)
     rotate_logs(SIGQUIT);
 #else
     rotate_logs(SIGUSR1);
diff -u -r -N squid-3.2.0.13/src/mgr/Forwarder.cc squid-3.2.0.14/src/mgr/Forwarder.cc
--- squid-3.2.0.13/src/mgr/Forwarder.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/mgr/Forwarder.cc	2011-12-13 00:08:18.000000000 +1300
@@ -72,14 +72,14 @@
 Mgr::Forwarder::handleError()
 {
     debugs(16, DBG_CRITICAL, "ERROR: uri " << entry->url() << " exceeds buffer size");
-    sendError(errorCon(ERR_INVALID_URL, HTTP_REQUEST_URI_TOO_LARGE, httpRequest));
+    sendError(new ErrorState(ERR_INVALID_URL, HTTP_REQUEST_URI_TOO_LARGE, httpRequest));
     mustStop("long URI");
 }
 
 void
 Mgr::Forwarder::handleTimeout()
 {
-    sendError(errorCon(ERR_LIFETIME_EXP, HTTP_REQUEST_TIMEOUT, httpRequest));
+    sendError(new ErrorState(ERR_LIFETIME_EXP, HTTP_REQUEST_TIMEOUT, httpRequest));
     Ipc::Forwarder::handleTimeout();
 }
 
@@ -87,7 +87,7 @@
 Mgr::Forwarder::handleException(const std::exception& e)
 {
     if (entry != NULL && httpRequest != NULL && Comm::IsConnOpen(conn))
-        sendError(errorCon(ERR_INVALID_RESP, HTTP_INTERNAL_SERVER_ERROR, httpRequest));
+        sendError(new ErrorState(ERR_INVALID_RESP, HTTP_INTERNAL_SERVER_ERROR, httpRequest));
     Ipc::Forwarder::handleException(e);
 }
 
@@ -124,7 +124,7 @@
     entry->buffer();
     entry->replaceHttpReply(error->BuildHttpReply());
     entry->expires = squid_curtime;
-    errorStateFree(error);
+    delete error;
     entry->flush();
     entry->complete();
 }
diff -u -r -N squid-3.2.0.13/src/mgr/InfoAction.cc squid-3.2.0.14/src/mgr/InfoAction.cc
--- squid-3.2.0.13/src/mgr/InfoAction.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/mgr/InfoAction.cc	2011-12-13 00:08:18.000000000 +1300
@@ -58,12 +58,9 @@
     request_hit_mem_ratio60 += stats.request_hit_mem_ratio60;
     request_hit_disk_ratio5 += stats.request_hit_disk_ratio5;
     request_hit_disk_ratio60 += stats.request_hit_disk_ratio60;
-    store_swap_size += stats.store_swap_size;
-    store_swap_max_size += stats.store_swap_max_size;
-    store_mem_size += stats.store_mem_size;
-    store_pages_max += stats.store_pages_max;
-    store_mem_used += stats.store_mem_used;
-    objects_size += stats.objects_size;
+
+    store += stats.store;
+
     unlink_requests += stats.unlink_requests;
     http_requests5 += stats.http_requests5;
     http_requests60 += stats.http_requests60;
@@ -124,11 +121,6 @@
     opening_fd += stats.opening_fd;
     num_fd_free += stats.num_fd_free;
     reserved_fd += stats.reserved_fd;
-    store_open_disk_fd += stats.store_open_disk_fd;
-    store_entries += stats.store_entries;
-    store_mem_entries += stats.store_mem_entries;
-    hot_obj_count += stats.hot_obj_count;
-    n_disk_objects += stats.n_disk_objects;
     ++count;
 
     return *this;
diff -u -r -N squid-3.2.0.13/src/mgr/InfoAction.h squid-3.2.0.14/src/mgr/InfoAction.h
--- squid-3.2.0.13/src/mgr/InfoAction.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/mgr/InfoAction.h	2011-12-13 00:08:18.000000000 +1300
@@ -9,6 +9,7 @@
 #define SQUID_MGR_INFO_ACTION_H
 
 #include "mgr/Action.h"
+#include "StoreStats.h"
 #include <sys/time.h>
 
 
@@ -48,12 +49,9 @@
     double request_hit_mem_ratio60;
     double request_hit_disk_ratio5;
     double request_hit_disk_ratio60;
-    double store_swap_size;
-    double store_swap_max_size;
-    double store_mem_size;
-    double store_pages_max;
-    double store_mem_used;
-    double objects_size;
+
+    StoreInfoStats store; ///< disk and memory cache statistics
+
     double unlink_requests;
     double http_requests5;
     double http_requests60;
@@ -113,11 +111,6 @@
     double opening_fd;
     double num_fd_free;
     double reserved_fd;
-    double store_open_disk_fd;
-    double store_entries;
-    double store_mem_entries;
-    double hot_obj_count;
-    double n_disk_objects;
     unsigned int count;
 };
 
diff -u -r -N squid-3.2.0.13/src/mgr/Inquirer.cc squid-3.2.0.14/src/mgr/Inquirer.cc
--- squid-3.2.0.13/src/mgr/Inquirer.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/mgr/Inquirer.cc	2011-12-13 00:08:18.000000000 +1300
@@ -75,10 +75,9 @@
         LOCAL_ARRAY(char, url, MAX_URL);
         snprintf(url, MAX_URL, "%s", aggrAction->command().params.httpUri.termedBuf());
         HttpRequest *req = HttpRequest::CreateFromUrl(url);
-        ErrorState *err = errorCon(ERR_INVALID_URL, HTTP_NOT_FOUND, req);
-        std::auto_ptr<HttpReply> reply(err->BuildHttpReply());
+        ErrorState err(ERR_INVALID_URL, HTTP_NOT_FOUND, req);
+        std::auto_ptr<HttpReply> reply(err.BuildHttpReply());
         replyBuf.reset(reply->pack());
-        errorStateFree(err);
     } else {
         std::auto_ptr<HttpReply> reply(new HttpReply);
         reply->setHeaders(HTTP_OK, NULL, "text/plain", -1, squid_curtime, squid_curtime);
diff -u -r -N squid-3.2.0.13/src/pconn.cc squid-3.2.0.14/src/pconn.cc
--- squid-3.2.0.13/src/pconn.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/pconn.cc	2011-12-13 00:08:18.000000000 +1300
@@ -192,7 +192,7 @@
     comm_read(conn, fakeReadBuf_, sizeof(fakeReadBuf_), readCall);
     AsyncCall::Pointer timeoutCall = commCbCall(5,4, "IdleConnList::Timeout",
                                      CommTimeoutCbPtrFun(IdleConnList::Timeout, this));
-    commSetConnTimeout(conn, Config.Timeout.pconn, timeoutCall);
+    commSetConnTimeout(conn, Config.Timeout.serverIdlePconn, timeoutCall);
 }
 
 /// Determine whether an entry in the idle list is available for use.
@@ -417,7 +417,7 @@
     assert(!comm_has_incomplete_write(conn->fd));
 
     LOCAL_ARRAY(char, desc, FD_DESC_SZ);
-    snprintf(desc, FD_DESC_SZ, "Idle: %s", aKey);
+    snprintf(desc, FD_DESC_SZ, "Idle server: %s", aKey);
     fd_note(conn->fd, desc);
     debugs(48, 3, HERE << "pushed " << conn << " for " << aKey);
 }
diff -u -r -N squid-3.2.0.13/src/peer_select.cc squid-3.2.0.14/src/peer_select.cc
--- squid-3.2.0.13/src/peer_select.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/peer_select.cc	2011-12-13 00:08:18.000000000 +1300
@@ -34,6 +34,7 @@
 
 #include "squid.h"
 #include "DnsLookupDetails.h"
+#include "errorpage.h"
 #include "event.h"
 #include "PeerSelectState.h"
 #include "Store.h"
@@ -104,6 +105,8 @@
         psstate->entry = NULL;
     }
 
+    delete psstate->lastError;
+
     cbdataFree(psstate);
 }
 
@@ -265,7 +268,8 @@
 
     void *cbdata;
     if (cbdataReferenceValidDone(psstate->callback_data, &cbdata)) {
-        callback(psstate->paths, cbdata);
+        callback(psstate->paths, psstate->lastError, cbdata);
+        psstate->lastError = NULL; // FwdState has taken control over the ErrorState object.
     }
 
     peerSelectStateFree(psstate);
@@ -317,6 +321,13 @@
         }
     } else {
         debugs(44, 3, HERE << "Unknown host: " << fs->_peer ? fs->_peer->host : psstate->request->GetHost());
+        // discard any previous error.
+        delete psstate->lastError;
+        psstate->lastError = NULL;
+        if (fs->code == HIER_DIRECT) {
+            psstate->lastError = new ErrorState(ERR_DNS_FAIL, HTTP_SERVICE_UNAVAILABLE, psstate->request);
+            psstate->lastError->dnsError = details.error;
+        }
     }
 
     psstate->servers = fs->next;
@@ -441,8 +452,10 @@
         if (Config.onoff.prefer_direct)
             peerGetSomeDirect(ps);
 
-        if (request->flags.hierarchical || !Config.onoff.nonhierarchical_direct)
+        if (request->flags.hierarchical || !Config.onoff.nonhierarchical_direct) {
             peerGetSomeParent(ps);
+            peerGetAllParents(ps);
+        }
 
         if (!Config.onoff.prefer_direct)
             peerGetSomeDirect(ps);
@@ -897,6 +910,7 @@
         direct(DIRECT_UNKNOWN),
         callback (NULL),
         callback_data (NULL),
+        lastError(NULL),
         servers (NULL),
         first_parent_miss(),
         closest_parent_miss(),
diff -u -r -N squid-3.2.0.13/src/PeerSelectState.h squid-3.2.0.14/src/PeerSelectState.h
--- squid-3.2.0.13/src/PeerSelectState.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/PeerSelectState.h	2011-12-13 00:08:18.000000000 +1300
@@ -43,8 +43,9 @@
 
 class HttpRequest;
 class StoreEntry;
+class ErrorState;
 
-typedef void PSC(Comm::ConnectionList *, void *);
+typedef void PSC(Comm::ConnectionList *, ErrorState *, void *);
 
 SQUIDCEXTERN void peerSelect(Comm::ConnectionList *, HttpRequest *, StoreEntry *, PSC *, void *data);
 SQUIDCEXTERN void peerSelectInit(void);
@@ -79,6 +80,7 @@
     int direct;   // TODO: fold always_direct/never_direct/prefer_direct into this now that ACL can do a multi-state result.
     PSC *callback;
     void *callback_data;
+    ErrorState *lastError;
 
     Comm::ConnectionList *paths;    ///< the callers paths array. to be filled with our final results.
     FwdServer *servers;    ///< temporary linked list of peers we will pass back.
diff -u -r -N squid-3.2.0.13/src/ProtoPort.h squid-3.2.0.14/src/ProtoPort.h
--- squid-3.2.0.13/src/ProtoPort.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ProtoPort.h	2011-12-13 00:08:18.000000000 +1300
@@ -72,6 +72,7 @@
     Ssl::SSL_CTX_Pointer staticSslContext; ///< for HTTPS accelerator or static sslBump
     Ssl::X509_Pointer signingCert; ///< x509 certificate for signing generated certificates
     Ssl::EVP_PKEY_Pointer signPkey; ///< private key for sighing generated certificates
+    Ssl::X509_STACK_Pointer certsToChain; ///<  x509 certificates to send with the generated cert
 #endif
 
     CBDATA_CLASS2(http_port_list);
diff -u -r -N squid-3.2.0.13/src/protos.h squid-3.2.0.14/src/protos.h
--- squid-3.2.0.13/src/protos.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/protos.h	2011-12-13 00:08:18.000000000 +1300
@@ -144,14 +144,6 @@
 SQUIDCEXTERN int fdUsageHigh(void);
 SQUIDCEXTERN void fdAdjustReserved(void);
 
-SQUIDCEXTERN fileMap *file_map_create(void);
-SQUIDCEXTERN int file_map_allocate(fileMap *, int);
-SQUIDCEXTERN int file_map_bit_set(fileMap *, int);
-SQUIDCEXTERN int file_map_bit_test(fileMap *, int);
-SQUIDCEXTERN void file_map_bit_reset(fileMap *, int);
-SQUIDCEXTERN void filemapFreeMemory(fileMap *);
-
-
 SQUIDCEXTERN void fqdncache_nbgethostbyaddr(const Ip::Address &, FQDNH *, void *);
 
 SQUIDCEXTERN const char *fqdncache_gethostbyaddr(const Ip::Address &, int flags);
@@ -214,26 +206,11 @@
         StoreEntry * entry,
         MemBuf * mb,
         http_state_flags);
-SQUIDCEXTERN void httpAnonInitModule(void);
-SQUIDCEXTERN int httpAnonHdrAllowed(http_hdr_type hdr_id);
-SQUIDCEXTERN int httpAnonHdrDenied(http_hdr_type hdr_id);
 SQUIDCEXTERN const char *httpMakeVaryMark(HttpRequest * request, HttpReply const * reply);
 
 #include "HttpStatusCode.h"
 SQUIDCEXTERN const char *httpStatusString(http_status status);
 
-/* Http Body */
-/* init/clean */
-SQUIDCEXTERN void httpBodyInit(HttpBody * body);
-SQUIDCEXTERN void httpBodyClean(HttpBody * body);
-/* get body ptr (always use this) */
-SQUIDCEXTERN const char *httpBodyPtr(const HttpBody * body);
-/* set body, does not clone mb so you should not reuse it */
-SQUIDCEXTERN void httpBodySet(HttpBody * body, MemBuf * mb);
-
-/* pack */
-SQUIDCEXTERN void httpBodyPackInto(const HttpBody * body, Packer * p);
-
 /* Http Cache Control Header Field */
 SQUIDCEXTERN void httpHdrCcInitModule(void);
 SQUIDCEXTERN void httpHdrCcCleanModule(void);
@@ -272,7 +249,6 @@
 SQUIDCEXTERN PF snmpHandleUdp;
 SQUIDCEXTERN void snmpInit(void);
 SQUIDCEXTERN void snmpConnectionOpen(void);
-SQUIDCEXTERN void snmpConnectionShutdown(void);
 SQUIDCEXTERN void snmpConnectionClose(void);
 SQUIDCEXTERN const char * snmpDebugOid(oid * Name, snint Len, MemBuf &outbuf);
 
@@ -591,6 +567,7 @@
 SQUIDCEXTERN void dumpMallocStats(void);
 
 #if USE_UNLINKD
+SQUIDCEXTERN bool unlinkdNeeded(void);
 SQUIDCEXTERN void unlinkdInit(void);
 SQUIDCEXTERN void unlinkdClose(void);
 SQUIDCEXTERN void unlinkdUnlink(const char *);
diff -u -r -N squid-3.2.0.13/src/recv-announce.cc squid-3.2.0.14/src/recv-announce.cc
--- squid-3.2.0.13/src/recv-announce.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/recv-announce.cc	2011-12-13 00:08:18.000000000 +1300
@@ -86,7 +86,7 @@
     socklen_t len;
 
     struct hostent *hp = NULL;
-    char logfile[BUFSIZ];
+    const char *logfile;
     char ip[4];
 
     for (len = 0; len < 32; len++) {
@@ -95,9 +95,9 @@
 
 
     if (argc > 1)
-        strcpy(logfile, argv[1]);
+        logfile = argv[1];
     else
-        strcpy(logfile, "/tmp/recv-announce.log");
+        logfile = "/tmp/recv-announce.log";
 
     close(1);
 
diff -u -r -N squid-3.2.0.13/src/Server.cc squid-3.2.0.14/src/Server.cc
--- squid-3.2.0.13/src/Server.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/Server.cc	2011-12-13 00:08:18.000000000 +1300
@@ -50,6 +50,7 @@
 #include "adaptation/AccessCheck.h"
 #include "adaptation/Answer.h"
 #include "adaptation/Iterator.h"
+#include "base/AsyncCall.h"
 #endif
 
 // implemented in client_side_reply.cc until sides have a common parent
@@ -63,7 +64,9 @@
         adaptationAccessCheckPending(false),
         startedAdaptation(false),
 #endif
-        receivedWholeRequestBody(false)
+        receivedWholeRequestBody(false),
+        theVirginReply(NULL),
+        theFinalReply(NULL)
 {
     fwd = theFwdState;
     entry = fwd->entry;
@@ -211,29 +214,17 @@
 #endif
 
     completeForwarding();
-    quitIfAllDone();
 }
 
-// When we are done talking to the primary server, we may be still talking
-// to the ICAP service. And vice versa. Here, we quit only if we are done
-// talking to both.
-void ServerStateData::quitIfAllDone()
+bool ServerStateData::doneAll() const
 {
+    return  doneWithServer() &&
 #if USE_ADAPTATION
-    if (!doneWithAdaptation()) {
-        debugs(11,5, HERE << "transaction not done: still talking to ICAP");
-        return;
-    }
+            doneWithAdaptation() &&
+            Adaptation::Initiator::doneAll() &&
+            BodyProducer::doneAll() &&
 #endif
-
-    if (!doneWithServer()) {
-        debugs(11,5, HERE << "transaction not done: still talking to server");
-        return;
-    }
-
-    debugs(11,3, HERE << "transaction done");
-
-    deleteThis("ServerStateData::quitIfAllDone");
+            BodyConsumer::doneAll();
 }
 
 // FTP side overloads this to work around multiple calls to fwd->complete
@@ -285,7 +276,8 @@
         return;
     }
 #endif
-    handleMoreRequestBodyAvailable();
+    if (requestBodySource == bp)
+        handleMoreRequestBodyAvailable();
 }
 
 // the entire request or adapted response body was provided, successfully
@@ -298,7 +290,8 @@
         return;
     }
 #endif
-    handleRequestBodyProductionEnded();
+    if (requestBodySource == bp)
+        handleRequestBodyProductionEnded();
 }
 
 // premature end of the request or adapted response body production
@@ -311,7 +304,8 @@
         return;
     }
 #endif
-    handleRequestBodyProducerAborted();
+    if (requestBodySource == bp)
+        handleRequestBodyProducerAborted();
 }
 
 
@@ -386,7 +380,7 @@
     if (io.flag) {
         debugs(11, 1, "sentRequestBody error: FD " << io.fd << ": " << xstrerr(io.xerrno));
         ErrorState *err;
-        err = errorCon(ERR_WRITE_ERROR, HTTP_BAD_GATEWAY, fwd->request);
+        err = new ErrorState(ERR_WRITE_ERROR, HTTP_BAD_GATEWAY, fwd->request);
         err->xerrno = io.xerrno;
         fwd->fail(err);
         abortTransaction("I/O error while sending request body");
@@ -710,22 +704,67 @@
     }
 }
 
-// more adapted response body is available
 void
-ServerStateData::handleMoreAdaptedBodyAvailable()
+ServerStateData::resumeBodyStorage()
 {
-    const size_t contentSize = adaptedBodySource->buf().contentSize();
+    if (abortOnBadEntry("store entry aborted while kick producer callback"))
+        return;
 
-    debugs(11,5, HERE << "consuming " << contentSize << " bytes of adapted " <<
-           "response body at offset " << adaptedBodySource->consumedSize());
+    if (!adaptedBodySource)
+        return;
+
+    handleMoreAdaptedBodyAvailable();
 
+    if (adaptedBodySource != NULL && adaptedBodySource->exhausted())
+        endAdaptedBodyConsumption();
+}
+
+// more adapted response body is available
+void
+ServerStateData::handleMoreAdaptedBodyAvailable()
+{
     if (abortOnBadEntry("entry refuses adapted body"))
         return;
 
     assert(entry);
+
+    size_t contentSize = adaptedBodySource->buf().contentSize();
+
+    if (!contentSize)
+        return; // XXX: bytesWanted asserts on zero-size ranges
+
+    // XXX: entry->bytesWanted returns contentSize-1 if entry can accept data.
+    // We have to add 1 to avoid suspending forever.
+    const size_t bytesWanted = entry->bytesWanted(Range<size_t>(0, contentSize));
+    const size_t spaceAvailable = bytesWanted >  0 ? (bytesWanted + 1) : 0;
+
+    if (spaceAvailable < contentSize ) {
+        // No or partial body data consuming
+        typedef NullaryMemFunT<ServerStateData> Dialer;
+        AsyncCall::Pointer call = asyncCall(93, 5, "ServerStateData::resumeBodyStorage",
+                                            Dialer(this, &ServerStateData::resumeBodyStorage));
+        entry->deferProducer(call);
+    }
+
+    // XXX: bytesWanted API does not allow us to write just one byte!
+    if (!spaceAvailable && contentSize > 1)  {
+        debugs(11, 5, HERE << "NOT storing " << contentSize << " bytes of adapted " <<
+               "response body at offset " << adaptedBodySource->consumedSize());
+        return;
+    }
+
+    if (spaceAvailable < contentSize ) {
+        debugs(11, 5, HERE << "postponing storage of " <<
+               (contentSize - spaceAvailable) << " body bytes");
+        contentSize = spaceAvailable;
+    }
+
+    debugs(11,5, HERE << "storing " << contentSize << " bytes of adapted " <<
+           "response body at offset " << adaptedBodySource->consumedSize());
+
     BodyPipeCheckout bpc(*adaptedBodySource);
-    const StoreIOBuffer ioBuf(&bpc.buf, currentOffset);
-    currentOffset += bpc.buf.size;
+    const StoreIOBuffer ioBuf(&bpc.buf, currentOffset, contentSize);
+    currentOffset += ioBuf.length;
     entry->write(ioBuf);
     bpc.buf.consume(contentSize);
     bpc.checkIn();
@@ -735,11 +774,19 @@
 void
 ServerStateData::handleAdaptedBodyProductionEnded()
 {
-    stopConsumingFrom(adaptedBodySource);
-
     if (abortOnBadEntry("entry went bad while waiting for adapted body eof"))
         return;
 
+    // end consumption if we consumed everything
+    if (adaptedBodySource != NULL && adaptedBodySource->exhausted())
+        endAdaptedBodyConsumption();
+    // else resumeBodyStorage() will eventually consume the rest
+}
+
+void
+ServerStateData::endAdaptedBodyConsumption()
+{
+    stopConsumingFrom(adaptedBodySource);
     handleAdaptationCompleted();
 }
 
@@ -766,7 +813,6 @@
     }
 
     completeForwarding();
-    quitIfAllDone();
 }
 
 
@@ -784,7 +830,7 @@
 
     if (entry->isEmpty()) {
         debugs(11,9, HERE << "creating ICAP error entry after ICAP failure");
-        ErrorState *err = errorCon(ERR_ICAP_FAILURE, HTTP_INTERNAL_SERVER_ERROR, request);
+        ErrorState *err = new ErrorState(ERR_ICAP_FAILURE, HTTP_INTERNAL_SERVER_ERROR, request);
         err->xerrno = ERR_DETAIL_ICAP_RESPMOD_EARLY;
         fwd->fail(err);
         fwd->dontRetry(true);
@@ -818,7 +864,7 @@
     if (page_id == ERR_NONE)
         page_id = ERR_ACCESS_DENIED;
 
-    ErrorState *err = errorCon(page_id, HTTP_FORBIDDEN, request);
+    ErrorState *err = new ErrorState(page_id, HTTP_FORBIDDEN, request);
     err->xerrno = ERR_DETAIL_RESPMOD_BLOCK_EARLY;
     fwd->fail(err);
     fwd->dontRetry(true);
@@ -827,7 +873,7 @@
 }
 
 void
-ServerStateData::adaptationAclCheckDone(Adaptation::ServiceGroupPointer group)
+ServerStateData::noteAdaptationAclCheckDone(Adaptation::ServiceGroupPointer group)
 {
     adaptationAccessCheckPending = false;
 
@@ -852,19 +898,12 @@
     startAdaptation(group, originalRequest());
     processReplyBody();
 }
-
-void
-ServerStateData::adaptationAclCheckDoneWrapper(Adaptation::ServiceGroupPointer group, void *data)
-{
-    ServerStateData *state = (ServerStateData *)data;
-    state->adaptationAclCheckDone(group);
-}
 #endif
 
 void
 ServerStateData::sendBodyIsTooLargeError()
 {
-    ErrorState *err = errorCon(ERR_TOO_BIG, HTTP_FORBIDDEN, request);
+    ErrorState *err = new ErrorState(ERR_TOO_BIG, HTTP_FORBIDDEN, request);
     err->xerrno = errno;
     fwd->fail(err);
     fwd->dontRetry(true);
@@ -881,7 +920,7 @@
     // The callback can be called with a NULL service if adaptation is off.
     adaptationAccessCheckPending = Adaptation::AccessCheck::Start(
                                        Adaptation::methodRespmod, Adaptation::pointPreCache,
-                                       originalRequest(), virginReply(), adaptationAclCheckDoneWrapper, this);
+                                       originalRequest(), virginReply(), this);
     debugs(11,5, HERE << "adaptationAccessCheckPending=" << adaptationAccessCheckPending);
     if (adaptationAccessCheckPending)
         return;
diff -u -r -N squid-3.2.0.13/src/Server.h squid-3.2.0.14/src/Server.h
--- squid-3.2.0.13/src/Server.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/Server.h	2011-12-13 00:08:18.000000000 +1300
@@ -87,11 +87,9 @@
     virtual  HttpRequest *originalRequest();
 
 #if USE_ADAPTATION
-    void adaptationAclCheckDone(Adaptation::ServiceGroupPointer group);
-    static void adaptationAclCheckDoneWrapper(Adaptation::ServiceGroupPointer group, void *data);
-
-    // ICAPInitiator: start an ICAP transaction and receive adapted headers.
+    // Adaptation::Initiator API: start an ICAP transaction and receive adapted headers.
     virtual void noteAdaptationAnswer(const Adaptation::Answer &answer);
+    virtual void noteAdaptationAclCheckDone(Adaptation::ServiceGroupPointer group);
 
     // BodyProducer: provide virgin response body to ICAP.
     virtual void noteMoreBodySpaceAvailable(BodyPipe::Pointer );
@@ -102,14 +100,7 @@
 
 //AsyncJob virtual methods
     virtual void swanSong();
-    virtual bool doneAll() const {
-        return
-#if USE_ADAPTATION
-            Adaptation::Initiator::doneAll() &&
-            BodyProducer::doneAll() &&
-#endif
-            BodyConsumer::doneAll() && false;
-    }
+    virtual bool doneAll() const;
 
 public: // should be protected
     void serverComplete();     /**< call when no server communication is expected */
@@ -156,6 +147,11 @@
     void handleAdaptationCompleted();
     void handleAdaptationBlocked(const Adaptation::Answer &answer);
     void handleAdaptationAborted(bool bypassable = false);
+
+    /// called by StoreEntry when it has more buffer space available
+    void resumeBodyStorage();
+    /// called when the entire adapted response body is consumed
+    void endAdaptedBodyConsumption();
 #endif
 
 protected:
@@ -198,7 +194,6 @@
     bool receivedWholeRequestBody; ///< handleRequestBodyProductionEnded called
 
 private:
-    void quitIfAllDone();            /**< successful termination */
     void sendBodyIsTooLargeError();
     void maybePurgeOthers();
 
diff -u -r -N squid-3.2.0.13/src/snmp_core.cc squid-3.2.0.14/src/snmp_core.cc
--- squid-3.2.0.13/src/snmp_core.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/snmp_core.cc	2011-12-13 00:08:18.000000000 +1300
@@ -92,7 +92,6 @@
  * The functions used during startup:
  * snmpInit
  * snmpConnectionOpen
- * snmpConnectionShutdown
  * snmpConnectionClose
  */
 
@@ -357,35 +356,19 @@
 }
 
 void
-snmpConnectionShutdown(void)
-{
-    if (!Comm::IsConnOpen(snmpIncomingConn))
-        return;
-
-    // Perform lazy closure. So as not to step on outgoing connection when sharing.
-    debugs(49, DBG_IMPORTANT, "Closing SNMP receiving port " << snmpIncomingConn->local);
-    snmpIncomingConn = NULL;
-
-    /*
-     * Normally we only write to the outgoing SNMP socket, but we
-     * also have a read handler there to catch messages sent to that
-     * specific interface.  During shutdown, we must disable reading
-     * on the outgoing socket.
-     */
-    assert(Comm::IsConnOpen(snmpOutgoingConn));
-
-    Comm::SetSelect(snmpOutgoingConn->fd, COMM_SELECT_READ, NULL, NULL, 0);
-}
-
-void
 snmpConnectionClose(void)
 {
-    snmpConnectionShutdown();
-
-    if (!Comm::IsConnOpen(snmpOutgoingConn))
-        return;
+    if (Comm::IsConnOpen(snmpIncomingConn)) {
+        debugs(49, DBG_IMPORTANT, "Closing SNMP receiving port " << snmpIncomingConn->local);
+        snmpIncomingConn->close();
+    }
+    snmpIncomingConn = NULL;
 
-    debugs(49, DBG_IMPORTANT, "Closing SNMP sending port " << snmpOutgoingConn->local);
+    if (Comm::IsConnOpen(snmpOutgoingConn) && snmpIncomingConn != snmpOutgoingConn) {
+        // Perform OUT port closure so as not to step on IN port when sharing a conn.
+        debugs(49, DBG_IMPORTANT, "Closing SNMP sending port " << snmpOutgoingConn->local);
+        snmpOutgoingConn->close();
+    }
     snmpOutgoingConn = NULL;
 }
 
diff -u -r -N squid-3.2.0.13/src/squid.8.in squid-3.2.0.14/src/squid.8.in
--- squid-3.2.0.13/src/squid.8.in	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/squid.8.in	2011-12-13 00:08:18.000000000 +1300
@@ -265,7 +265,7 @@
 .if !'po4a'hide' .B pam_auth "(8), "
 .if !'po4a'hide' .B squid_ldap_auth "(8), "
 .if !'po4a'hide' .B squid_ldap_group "(8), "
-.if !'po4a'hide' .B squid_session "(8), "
+.if !'po4a'hide' .B ext_session_acl "(8), "
 .if !'po4a'hide' .B squid_unix_group "(8), "
 .br
 The Squid FAQ wiki
diff -u -r -N squid-3.2.0.13/src/squid.h squid-3.2.0.14/src/squid.h
--- squid-3.2.0.13/src/squid.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/squid.h	2011-12-13 00:08:18.000000000 +1300
@@ -149,7 +149,7 @@
 #define LOCAL_ARRAY(type,name,size) static type name[size]
 #endif
 
-#if defined(_SQUID_NEXT_) && !defined(S_ISDIR)
+#if _SQUID_NEXT_ && !defined(S_ISDIR)
 #define S_ISDIR(mode) (((mode) & (_S_IFMT)) == (_S_IFDIR))
 #endif
 
diff -u -r -N squid-3.2.0.13/src/ssl/ErrorDetail.cc squid-3.2.0.14/src/ssl/ErrorDetail.cc
--- squid-3.2.0.13/src/ssl/ErrorDetail.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ssl/ErrorDetail.cc	2011-12-13 00:08:18.000000000 +1300
@@ -10,14 +10,16 @@
     const char *name;
 };
 
-static const char *SslErrorDetailDefaultStr = "SSL certificate validation error (%err_name): %ssl_subject";
+static const char *SslErrorDetailDefaultStr = "SSL handshake error (%err_name)";
 //Use std::map to optimize search
 typedef std::map<Ssl::ssl_error_t, const SslErrorEntry *> SslErrors;
 SslErrors TheSslErrors;
 
 static SslErrorEntry TheSslErrorArray[] = {
+    {SQUID_ERR_SSL_HANDSHAKE,
+        "SQUID_ERR_SSL_HANDSHAKE"},
     {SQUID_X509_V_ERR_DOMAIN_MISMATCH,
-        "SQUID_X509_V_ERR_DOMAIN_MISMATCH"},
+     "SQUID_X509_V_ERR_DOMAIN_MISMATCH"},
     {X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT,
      "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT"},
     {X509_V_ERR_UNABLE_TO_GET_CRL,
@@ -149,6 +151,7 @@
     {"ssl_notafter", &Ssl::ErrorDetail::notafter},
     {"err_name", &Ssl::ErrorDetail::err_code},
     {"ssl_error_descr", &Ssl::ErrorDetail::err_descr},
+    {"ssl_lib_error", &Ssl::ErrorDetail::err_lib_error},
     {NULL,NULL}
 };
 
@@ -267,16 +270,25 @@
     return "[Not available]";
 }
 
+const char *Ssl::ErrorDetail::err_lib_error() const
+{
+    if (lib_error_no != SSL_ERROR_NONE)
+        return ERR_error_string(lib_error_no, NULL);
+    else
+        return "[No Error]";
+}
+
 /**
  * It converts the code to a string value. Currently the following
  * formating codes are supported:
- * %err_name: The name of the SSL error
+ * %err_name: The name of a high-level SSL error (e.g., X509_V_ERR_*)
  * %ssl_error_descr: A short description of the SSL error
  * %ssl_cn: The comma-separated list of common and alternate names
  * %ssl_subject: The certificate subject
  * %ssl_ca_name: The certificate issuer name
  * %ssl_notbefore: The certificate "not before" field
  * %ssl_notafter: The certificate "not after" field
+ * %ssl_lib_error: human-readable low-level error string by ERR_error_string(3SSL)
  \retval  the length of the code (the number of characters will be replaced by value)
 */
 int Ssl::ErrorDetail::convert(const char *code, const char **value) const
@@ -337,9 +349,11 @@
    CRYPTO_add(&(cert->references),1,CRYPTO_LOCK_X509);
    peer_cert.reset(cert);
 */
-Ssl::ErrorDetail::ErrorDetail( Ssl::ssl_error_t err_no, X509 *cert): error_no (err_no)
+Ssl::ErrorDetail::ErrorDetail( Ssl::ssl_error_t err_no, X509 *cert): error_no (err_no), lib_error_no(SSL_ERROR_NONE)
 {
-    peer_cert.reset(X509_dup(cert));
+    if (cert)
+        peer_cert.reset(X509_dup(cert));
+
     detailEntry.error_no = SSL_ERROR_NONE;
 }
 
@@ -353,4 +367,6 @@
     }
 
     detailEntry = anErrDetail.detailEntry;
+
+    lib_error_no = anErrDetail.lib_error_no;
 }
diff -u -r -N squid-3.2.0.13/src/ssl/ErrorDetail.h squid-3.2.0.14/src/ssl/ErrorDetail.h
--- squid-3.2.0.13/src/ssl/ErrorDetail.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ssl/ErrorDetail.h	2011-12-13 00:08:18.000000000 +1300
@@ -49,9 +49,13 @@
     ErrorDetail(ssl_error_t err_no, X509 *cert);
     ErrorDetail(ErrorDetail const &);
     const String &toString() const;  ///< An error detail string to embed in squid error pages
-    void useRequest(HttpRequest *aRequest) { if (request != NULL) request = aRequest;}
+    void useRequest(HttpRequest *aRequest) { if (aRequest != NULL) request = aRequest;}
     /// The error name to embed in squid error pages
     const char *errorName() const {return err_code();}
+    /// The error no
+    ssl_error_t errorNo() const {return error_no;}
+    ///Sets the low-level error returned by OpenSSL ERR_get_error()
+    void setLibError(unsigned long lib_err_no) {lib_error_no = lib_err_no;}
 
 private:
     typedef const char * (ErrorDetail::*fmt_action_t)() const;
@@ -73,12 +77,14 @@
     const char *notafter() const;
     const char *err_code() const;
     const char *err_descr() const;
+    const char *err_lib_error() const;
 
     int convert(const char *code, const char **value) const;
     void buildDetail() const;
 
     mutable String errDetailStr; ///< Caches the error detail message
     ssl_error_t error_no;   ///< The error code
+    unsigned long lib_error_no; ///< low-level error returned by OpenSSL ERR_get_error(3SSL)
     X509_Pointer peer_cert; ///< A pointer to the peer certificate
     mutable ErrorDetailEntry detailEntry;
     HttpRequest::Pointer request;
diff -u -r -N squid-3.2.0.13/src/ssl/gadgets.cc squid-3.2.0.14/src/ssl/gadgets.cc
--- squid-3.2.0.13/src/ssl/gadgets.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ssl/gadgets.cc	2011-12-13 00:08:18.000000000 +1300
@@ -4,6 +4,9 @@
 
 #include "config.h"
 #include "ssl/gadgets.h"
+#if HAVE_OPENSSL_X509V3_H
+#include <openssl/x509v3.h>
+#endif
 
 /**
  \ingroup ServerProtocolSSLInternal
@@ -11,16 +14,18 @@
  */
 static bool addCnToRequest(Ssl::X509_REQ_Pointer & request, char const * cn)
 {
-    Ssl::X509_NAME_Pointer name(X509_REQ_get_subject_name(request.get()));
+    // not an Ssl::X509_NAME_Pointer because X509_REQ_get_subject_name()
+    // returns a pointer to the existing subject name. Nothing to clean here.
+    X509_NAME *name = X509_REQ_get_subject_name(request.get());
     if (!name)
         return false;
 
     // The second argument of the X509_NAME_add_entry_by_txt declared as
     // "char *" on some OS. Use cn_name to avoid compile warnings.
     static char cn_name[3] = "CN";
-    if (!X509_NAME_add_entry_by_txt(name.get(), cn_name, MBSTRING_ASC, (unsigned char *)cn, -1, -1, 0))
+    if (!X509_NAME_add_entry_by_txt(name, cn_name, MBSTRING_ASC, (unsigned char *)cn, -1, -1, 0))
         return false;
-    name.release();
+
     return true;
 }
 
@@ -231,11 +236,7 @@
     return certificate;
 }
 
-/**
- \ingroup ServerProtocolSSLInternal
- * Read private key from file. Make sure that this is not encrypted file.
- */
-static EVP_PKEY * readSslPrivateKey(char const * keyFilename)
+EVP_PKEY * Ssl::readSslPrivateKey(char const * keyFilename)
 {
     if (!keyFilename)
         return NULL;
diff -u -r -N squid-3.2.0.13/src/ssl/gadgets.h squid-3.2.0.14/src/ssl/gadgets.h
--- squid-3.2.0.13/src/ssl/gadgets.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ssl/gadgets.h	2011-12-13 00:08:18.000000000 +1300
@@ -39,6 +39,9 @@
 CtoCpp1(X509_free, X509 *)
 typedef TidyPointer<X509, X509_free_cpp> X509_Pointer;
 
+CtoCpp1(sk_X509_free, STACK_OF(X509) *)
+typedef TidyPointer<STACK_OF(X509), sk_X509_free_cpp> X509_STACK_Pointer;
+
 CtoCpp1(EVP_PKEY_free, EVP_PKEY *)
 typedef TidyPointer<EVP_PKEY, EVP_PKEY_free_cpp> EVP_PKEY_Pointer;
 
@@ -118,6 +121,12 @@
 
 /**
  \ingroup SslCrtdSslAPI
+ * Read private key from file. Make sure that this is not encrypted file.
+ */
+EVP_PKEY * readSslPrivateKey(char const * keyFilename);
+
+/**
+ \ingroup SslCrtdSslAPI
  *  Read certificate and private key from files.
  * \param certFilename name of file with certificate.
  * \param keyFilename name of file with private key.
diff -u -r -N squid-3.2.0.13/src/ssl/ssl_crtd.8 squid-3.2.0.14/src/ssl/ssl_crtd.8
--- squid-3.2.0.13/src/ssl/ssl_crtd.8	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ssl/ssl_crtd.8	2011-12-13 00:08:18.000000000 +1300
@@ -88,6 +88,16 @@
 .
 .SH KNOWN ISSUES
 .PP
+.B SSL errors after changing the CA
+.
+.PP
+Certificates are stored in this database in signed form.
+After any change to the signing CA in squid.conf be sure to erase and re-initialize the certificate database.
+.
+.PP
+.B Certificate chaining
+.
+.PP
 The version 1.0 of this helper will not add chained intermediate CA certificates.
 The client must have a full chain of trust from the root CA all the way
 down to the end certificate generated by this program.
@@ -109,6 +119,10 @@
 .if !'po4a'hide' .RE
 .
 .PP
+Certificates are stored in this database in signed form.
+After any change to the signing CA in squid.conf be sure to erase and re-initialize the certificate database.
+.
+.PP
 For simple configuration the helper defaults can be used.
 Only HTTP listening port options are required to enable generation and set the signign CA certificate.
 For Example:
diff -u -r -N squid-3.2.0.13/src/ssl/support.cc squid-3.2.0.14/src/ssl/support.cc
--- squid-3.2.0.13/src/ssl/support.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ssl/support.cc	2011-12-13 00:08:18.000000000 +1300
@@ -252,7 +252,18 @@
     if (!dont_verify_domain && server) {}
 
     if (!ok && !SSL_get_ex_data(ssl, ssl_ex_index_ssl_error_detail) ) {
-        Ssl::ErrorDetail *errDetail = new Ssl::ErrorDetail(error_no, peer_cert);
+
+        // Find the broken certificate. It may be intermediate.
+        X509 *broken_cert = peer_cert; // reasonable default if search fails
+        // Our SQUID_X509_V_ERR_DOMAIN_MISMATCH implies peer_cert is at fault.
+        if (error_no != SQUID_X509_V_ERR_DOMAIN_MISMATCH) {
+            if (X509 *last_used_cert = X509_STORE_CTX_get_current_cert(ctx))
+                broken_cert = last_used_cert;
+        }
+
+        Ssl::ErrorDetail *errDetail =
+            new Ssl::ErrorDetail(error_no, broken_cert);
+
         if (!SSL_set_ex_data(ssl, ssl_ex_index_ssl_error_detail,  errDetail)) {
             debugs(83, 2, "Failed to set Ssl::ErrorDetail in ssl_verify_cb: Certificate " << buffer);
             delete errDetail;
@@ -1008,10 +1019,8 @@
 }
 
 void
-ssl_shutdown_method(int fd)
+ssl_shutdown_method(SSL *ssl)
 {
-    SSL *ssl = fd_table[fd].ssl;
-
     SSL_shutdown(ssl);
 }
 
@@ -1248,4 +1257,73 @@
 #endif
 }
 
+void Ssl::addChainToSslContext(SSL_CTX *sslContext, STACK_OF(X509) *chain)
+{
+    if (!chain)
+        return;
+
+    for (int i = 0; i < sk_X509_num(chain); i++) {
+        X509 *cert = sk_X509_value(chain, i);
+        if (SSL_CTX_add_extra_chain_cert(sslContext, cert)) {
+            // increase the certificate lock
+            CRYPTO_add(&(cert->references),1,CRYPTO_LOCK_X509);
+        } else {
+            const int ssl_error = ERR_get_error();
+            debugs(83, DBG_IMPORTANT, "WARNING: can not add certificate to SSL context chain: " << ERR_error_string(ssl_error, NULL));
+        }
+    }
+}
+
+/**
+ \ingroup ServerProtocolSSLInternal
+ * Read certificate from file.
+ * See also: static readSslX509Certificate function, gadgets.cc file
+ */
+static X509 * readSslX509CertificatesChain(char const * certFilename,  STACK_OF(X509)* chain)
+{
+    if (!certFilename)
+        return NULL;
+    Ssl::BIO_Pointer bio(BIO_new(BIO_s_file_internal()));
+    if (!bio)
+        return NULL;
+    if (!BIO_read_filename(bio.get(), certFilename))
+        return NULL;
+    X509 *certificate = PEM_read_bio_X509(bio.get(), NULL, NULL, NULL);
+
+    if (certificate && chain) {
+
+        if (X509_check_issued(certificate, certificate) == X509_V_OK)
+            debugs(83, 5, "Certificate is self-signed, will not be chained");
+        else {
+            if (sk_X509_push(chain, certificate))
+                CRYPTO_add(&(certificate->references), 1, CRYPTO_LOCK_X509);
+            else
+                debugs(83, DBG_IMPORTANT, "WARNING: unable to add signing certificate to cert chain");
+            // and add to the chain any certificate loaded from the file
+            while (X509 *ca = PEM_read_bio_X509(bio.get(), NULL, NULL, NULL)) {
+                if (!sk_X509_push(chain, ca))
+                    debugs(83, DBG_IMPORTANT, "WARNING: unable to add CA certificate to cert chain");
+            }
+        }
+    }
+
+    return certificate;
+}
+
+void Ssl::readCertChainAndPrivateKeyFromFiles(X509_Pointer & cert, EVP_PKEY_Pointer & pkey, X509_STACK_Pointer & chain, char const * certFilename, char const * keyFilename)
+{
+    if (keyFilename == NULL)
+        keyFilename = certFilename;
+    if (!chain)
+        chain.reset(sk_X509_new_null());
+    if (!chain)
+        debugs(83, DBG_IMPORTANT, "WARNING: unable to allocate memory for cert chain");
+    pkey.reset(readSslPrivateKey(keyFilename));
+    cert.reset(readSslX509CertificatesChain(certFilename, chain.get()));
+    if (!pkey || !cert || !X509_check_private_key(cert.get(), pkey.get())) {
+        pkey.reset(NULL);
+        cert.reset(NULL);
+    }
+}
+
 #endif /* USE_SSL */
diff -u -r -N squid-3.2.0.13/src/ssl/support.h squid-3.2.0.14/src/ssl/support.h
--- squid-3.2.0.13/src/ssl/support.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/ssl/support.h	2011-12-13 00:08:18.000000000 +1300
@@ -56,9 +56,10 @@
  */
 
 // Custom SSL errors; assumes all official errors are positive
+#define SQUID_ERR_SSL_HANDSHAKE -2
 #define SQUID_X509_V_ERR_DOMAIN_MISMATCH -1
 // All SSL errors range: from smallest (negative) custom to largest SSL error
-#define SQUID_SSL_ERROR_MIN SQUID_X509_V_ERR_DOMAIN_MISMATCH
+#define SQUID_SSL_ERROR_MIN SQUID_ERR_SSL_HANDSHAKE
 #define SQUID_SSL_ERROR_MAX INT_MAX
 
 namespace Ssl
@@ -80,7 +81,7 @@
 int ssl_write_method(int, const char *, int);
 
 /// \ingroup ServerProtocolSSLAPI
-void ssl_shutdown_method(int);
+void ssl_shutdown_method(SSL *ssl);
 
 
 /// \ingroup ServerProtocolSSLAPI
@@ -124,6 +125,21 @@
 SSL_CTX * generateSslContextUsingPkeyAndCertFromMemory(const char * data);
 
 /**
+  \ingroup ServerProtocolSSLAPI
+  * Adds the certificates in certList to the certificate chain of the SSL context
+ */
+void addChainToSslContext(SSL_CTX *sslContext, STACK_OF(X509) *certList);
+
+/**
+ \ingroup ServerProtocolSSLAPI
+ *  Read certificate, private key and any certificates which must be chained from files.
+ * See also: Ssl::readCertAndPrivateKeyFromFiles function,  defined in gadgets.h
+ * \param certFilename name of file with certificate and certificates which must be chainned.
+ * \param keyFilename name of file with private key.
+ */
+void readCertChainAndPrivateKeyFromFiles(X509_Pointer & cert, EVP_PKEY_Pointer & pkey, X509_STACK_Pointer & chain, char const * certFilename, char const * keyFilename);
+
+/**
    \ingroup ServerProtocolSSLAPI
    * Iterates over the X509 common and alternate names and to see if  matches with given data
    * using the check_func.
diff -u -r -N squid-3.2.0.13/src/stat.cc squid-3.2.0.14/src/stat.cc
--- squid-3.2.0.13/src/stat.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/stat.cc	2011-12-13 00:08:18.000000000 +1300
@@ -34,7 +34,7 @@
 
 #include "squid.h"
 #include "event.h"
-#include "format/Tokens.h"
+#include "format/Token.h"
 #include "StoreClient.h"
 #if USE_AUTH
 #include "auth/UserRequest.h"
@@ -548,16 +548,7 @@
     stats.request_hit_disk_ratio5 = statRequestHitDiskRatio(5);
     stats.request_hit_disk_ratio60 = statRequestHitDiskRatio(60);
 
-    stats.store_swap_size = Store::Root().currentSize() / 1024.0;
-    stats.store_swap_max_size = Store::Root().maxSize();
-
-    stats.store_mem_size = mem_node::StoreMemSize();
-    stats.store_pages_max = store_pages_max;
-    stats.store_mem_used = mem_node::InUseCount();
-
-    stats.n_disk_objects = Store::Root().currentCount();
-    stats.objects_size = stats.n_disk_objects > 0 ?
-                         stats.store_swap_size / stats.n_disk_objects : 0.0;
+    Store::Root().getStats(stats.store);
 
     stats.unlink_requests = statCounter.unlink.requests;
 
@@ -665,11 +656,6 @@
     stats.opening_fd = Opening_FD;
     stats.num_fd_free = fdNFree();
     stats.reserved_fd = RESERVED_FD;
-    stats.store_open_disk_fd = store_open_disk_fd;
-
-    stats.store_entries = StoreEntry::inUseCount();
-    stats.store_mem_entries = MemObject::inUseCount();
-    stats.hot_obj_count = hot_obj_count;
 }
 
 void
@@ -752,22 +738,21 @@
                       stats.request_hit_disk_ratio60 / fct);
 
     storeAppendPrintf(sentry, "\tStorage Swap size:\t%.0f KB\n",
-                      stats.store_swap_size);
+                      stats.store.swap.size / 1024);
 
     storeAppendPrintf(sentry, "\tStorage Swap capacity:\t%4.1f%% used, %4.1f%% free\n",
-                      Math::doublePercent(stats.store_swap_size, stats.store_swap_max_size),
-                      Math::doublePercent(stats.store_swap_max_size - stats.store_swap_size, stats.store_swap_max_size));
+                      Math::doublePercent(stats.store.swap.size, stats.store.swap.capacity),
+                      Math::doublePercent(stats.store.swap.available(), stats.store.swap.capacity));
 
     storeAppendPrintf(sentry, "\tStorage Mem size:\t%.0f KB\n",
-                      stats.store_mem_size / 1024);
+                      stats.store.mem.size / 1024);
 
-    const double mFree = max(0.0, stats.store_pages_max-stats.store_mem_used);
     storeAppendPrintf(sentry, "\tStorage Mem capacity:\t%4.1f%% used, %4.1f%% free\n",
-                      Math::doublePercent(stats.store_mem_used, stats.store_pages_max),
-                      Math::doublePercent(mFree, stats.store_pages_max));
+                      Math::doublePercent(stats.store.mem.size, stats.store.mem.capacity),
+                      Math::doublePercent(stats.store.mem.available(), stats.store.mem.capacity));
 
     storeAppendPrintf(sentry, "\tMean Object Size:\t%0.2f KB\n",
-                      stats.objects_size / fct);
+                      stats.store.swap.meanObjectSize() / 1024);
 
     storeAppendPrintf(sentry, "\tRequests given to unlinkd:\t%.0f\n",
                       stats.unlink_requests);
@@ -949,17 +934,17 @@
     storeAppendPrintf(sentry, "\tReserved number of file descriptors:  %4.0f\n",
                       stats.reserved_fd);
     storeAppendPrintf(sentry, "\tStore Disk files open:                %4.0f\n",
-                      stats.store_open_disk_fd);
+                      stats.store.swap.open_disk_fd);
 
     storeAppendPrintf(sentry, "Internal Data Structures:\n");
     storeAppendPrintf(sentry, "\t%6.0f StoreEntries\n",
-                      stats.store_entries);
+                      stats.store.store_entry_count);
     storeAppendPrintf(sentry, "\t%6.0f StoreEntries with MemObjects\n",
-                      stats.store_mem_entries);
+                      stats.store.mem_object_count);
     storeAppendPrintf(sentry, "\t%6.0f Hot Object Cache Items\n",
-                      stats.hot_obj_count);
+                      stats.store.mem.count);
     storeAppendPrintf(sentry, "\t%6.0f on-disk objects\n",
-                      stats.n_disk_objects);
+                      stats.store.swap.count);
 }
 
 void
diff -u -r -N squid-3.2.0.13/src/store.cc squid-3.2.0.14/src/store.cc
--- squid-3.2.0.13/src/store.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/store.cc	2011-12-13 00:08:18.000000000 +1300
@@ -316,7 +316,7 @@
      * offset 0 in the memory object is the HTTP headers.
      */
 
-    if (mem_status == IN_MEMORY && UsingSmp()) {
+    if (mem_status == IN_MEMORY && Config.memShared && IamWorkerProcess()) {
         // clients of an object cached in shared memory are memory clients
         return STORE_MEM_CLIENT;
     }
@@ -410,6 +410,27 @@
     delete hidden_mem_obj;
 }
 
+#if USE_ADAPTATION
+void
+StoreEntry::deferProducer(const AsyncCall::Pointer &producer)
+{
+    if (!deferredProducer)
+        deferredProducer = producer;
+    else
+        debugs(20, 5, HERE << "Deferred producer call is allready set to: " <<
+               *deferredProducer << ", requested call: " << *producer);
+}
+
+void
+StoreEntry::kickProducer()
+{
+    if (deferredProducer != NULL) {
+        ScheduleCallHere(deferredProducer);
+        deferredProducer = NULL;
+    }
+}
+#endif
+
 void
 StoreEntry::destroyMemObject()
 {
@@ -856,20 +877,6 @@
     PROF_start(StoreEntry_write);
     assert(store_status == STORE_PENDING);
 
-    if (!writeBuffer.length) {
-        /* the headers are received already, but we have not received
-         * any body data. There are BROKEN abuses of HTTP which require
-         * the headers to be passed along before any body data - see
-         * http://developer.apple.com/documentation/QuickTime/QTSS/Concepts/chapter_2_section_14.html
-         * for an example of such bad behaviour. To accomodate this, if
-         * we have a empty write arrive, we flush to our clients.
-         * -RBC 20060903
-         */
-        PROF_stop(StoreEntry_write);
-        invokeHandlers();
-        return;
-    }
-
     debugs(20, 5, "storeWrite: writing " << writeBuffer.length << " bytes for '" << getMD5Text() << "'");
     PROF_stop(StoreEntry_write);
     storeGetMemSpace(writeBuffer.length);
@@ -1170,7 +1177,7 @@
 
     last_check = squid_curtime;
 
-    pages_needed = (size / SM_PAGE_SIZE) + 1;
+    pages_needed = (size + SM_PAGE_SIZE-1) / SM_PAGE_SIZE;
 
     if (mem_node::InUseCount() + pages_needed < store_pages_max) {
         PROF_stop(storeGetMemSpace);
@@ -1444,7 +1451,7 @@
     if (!Config.onoff.memory_cache_first && swap_status == SWAPOUT_DONE && refcount == 1)
         return 0;
 
-    if (UsingSmp()) {
+    if (Config.memShared && IamWorkerProcess()) {
         const int64_t expectedSize = mem_obj->expectedReplySize();
         // objects of unknown size are not allowed into memory cache, for now
         if (expectedSize < 0 ||
@@ -1627,7 +1634,8 @@
     if (new_status == mem_status)
         return;
 
-    if (UsingSmp()) {
+    // are we using a shared memory cache?
+    if (Config.memShared && IamWorkerProcess()) {
         assert(new_status != IN_MEMORY); // we do not call this otherwise
         // This method was designed to update replacement policy, not to
         // actually purge something from the memory cache (TODO: rename?).
@@ -1864,7 +1872,7 @@
     rep->packHeadersInto(&p);
     mem_obj->markEndOfReplyHeaders();
 
-    httpBodyPackInto(&rep->body, &p);
+    rep->body.packInto(&p);
 
     packerClean(&p);
 }
diff -u -r -N squid-3.2.0.13/src/store_client.cc squid-3.2.0.14/src/store_client.cc
--- squid-3.2.0.13/src/store_client.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/store_client.cc	2011-12-13 00:08:18.000000000 +1300
@@ -262,6 +262,11 @@
     copying = false;
 
     storeClientCopy2(entry, this);
+
+#if USE_ADAPTATION
+    if (entry)
+        entry->kickProducer();
+#endif
 }
 
 /*
@@ -726,6 +731,10 @@
     else
         mem->kickReads();
 
+#if USE_ADAPTATION
+    e->kickProducer();
+#endif
+
     return 1;
 }
 
diff -u -r -N squid-3.2.0.13/src/store_dir.cc squid-3.2.0.14/src/store_dir.cc
--- squid-3.2.0.13/src/store_dir.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/store_dir.cc	2011-12-13 00:08:18.000000000 +1300
@@ -327,6 +327,26 @@
 }
 
 void
+StoreController::getStats(StoreInfoStats &stats) const
+{
+    if (memStore)
+        memStore->getStats(stats);
+    else {
+        // move this code to a non-shared memory cache class when we have it
+        stats.mem.shared = false;
+        stats.mem.capacity = Config.memMaxSize;
+        stats.mem.size = mem_node::StoreMemSize();
+        stats.mem.count = hot_obj_count;
+    }
+
+    swapDir->getStats(stats);
+
+    // low-level info not specific to memory or disk cache
+    stats.store_entry_count = StoreEntry::inUseCount();
+    stats.mem_object_count = MemObject::inUseCount();
+}
+
+void
 StoreController::stat(StoreEntry &output) const
 {
     storeAppendPrintf(&output, "Store Directory Statistics:\n");
@@ -966,6 +986,22 @@
 }
 
 void
+StoreHashIndex::getStats(StoreInfoStats &stats) const
+{
+    // accumulate per-disk cache stats
+    for (int i = 0; i < Config.cacheSwap.n_configured; i++) {
+        StoreInfoStats dirStats;
+        store(i)->getStats(dirStats);
+        stats += dirStats;
+    }
+
+    // common to all disks
+    stats.swap.open_disk_fd = store_open_disk_fd;
+
+    // memory cache stats are collected in StoreController::getStats(), for now
+}
+
+void
 StoreHashIndex::stat(StoreEntry & output) const
 {
     int i;
diff -u -r -N squid-3.2.0.13/src/Store.h squid-3.2.0.14/src/Store.h
--- squid-3.2.0.13/src/Store.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/Store.h	2011-12-13 00:08:18.000000000 +1300
@@ -45,6 +45,7 @@
 #include "comm/forward.h"
 #include "Packer.h"
 #include "RemovalPolicy.h"
+#include "StoreStats.h"
 
 #if USE_SQUID_ESI
 #include "esi/Element.h"
@@ -61,16 +62,6 @@
 class StoreSearch;
 class SwapDir;
 
-typedef struct {
-
-    struct {
-        int calls;
-        int select_fail;
-        int create_fail;
-        int success;
-    } create;
-} StoreIoStats;
-
 extern StoreIoStats store_io_stats;
 
 /// maximum number of entries per cache_dir
@@ -210,9 +201,21 @@
     virtual void lock();
     virtual void release();
 
+#if USE_ADAPTATION
+    /// call back producer when more buffer space is available
+    void deferProducer(const AsyncCall::Pointer &producer);
+    /// calls back producer registered with deferProducer
+    void kickProducer();
+#endif
+
 private:
     static MemAllocator *pool;
 
+#if USE_ADAPTATION
+    /// producer callback registered with deferProducer
+    AsyncCall::Pointer deferredProducer;
+#endif
+
     bool validLength() const;
     bool hasOneOfEtags(const String &reqETags, const bool allowWeakMatch) const;
 };
@@ -315,6 +318,9 @@
     /** the maximum object size that can be stored, -1 if unlimited */
     virtual int64_t maxObjectSize() const = 0;
 
+    /// collect cache storage-related statistics
+    virtual void getStats(StoreInfoStats &stats) const = 0;
+
     /**
      * Output stats to the provided store entry.
      \todo make these calls asynchronous
diff -u -r -N squid-3.2.0.13/src/StoreHashIndex.h squid-3.2.0.14/src/StoreHashIndex.h
--- squid-3.2.0.13/src/StoreHashIndex.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/StoreHashIndex.h	2011-12-13 00:08:18.000000000 +1300
@@ -73,6 +73,7 @@
 
     virtual int64_t maxObjectSize() const;
 
+    virtual void getStats(StoreInfoStats &stats) const;
     virtual void stat(StoreEntry&) const;
 
     virtual void reference(StoreEntry&);
diff -u -r -N squid-3.2.0.13/src/StoreIOBuffer.h squid-3.2.0.14/src/StoreIOBuffer.h
--- squid-3.2.0.13/src/StoreIOBuffer.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/StoreIOBuffer.h	2011-12-13 00:08:18.000000000 +1300
@@ -59,6 +59,13 @@
         flags.error = 0;
     }
 
+    StoreIOBuffer(MemBuf *aMemBuf, int64_t anOffset, size_t anLength) :
+            length(anLength),
+            offset (anOffset),
+            data(aMemBuf->content()) {
+        flags.error = 0;
+    }
+
     Range<int64_t> range() const {
         return Range<int64_t>(offset, offset + length);
     }
diff -u -r -N squid-3.2.0.13/src/store_log.cc squid-3.2.0.14/src/store_log.cc
--- squid-3.2.0.13/src/store_log.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/store_log.cc	2011-12-13 00:08:18.000000000 +1300
@@ -33,7 +33,7 @@
  */
 
 #include "squid.h"
-#include "format/Tokens.h"
+#include "format/Token.h"
 #include "HttpReply.h"
 #include "log/File.h"
 #include "MemObject.h"
diff -u -r -N squid-3.2.0.13/src/StoreStats.cc squid-3.2.0.14/src/StoreStats.cc
--- squid-3.2.0.13/src/StoreStats.cc	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/StoreStats.cc	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,62 @@
+/*
+ * $Id$
+ *
+ * DEBUG: section 20    Storage Manager Statistics
+ *
+ */
+
+#include "config.h"
+#include "protos.h" /* for xmemset only */
+#include "StoreStats.h"
+
+
+/* StoreInfoStats */
+
+StoreInfoStats::StoreInfoStats()
+{
+    xmemset(this, 0, sizeof(*this));
+}
+
+StoreInfoStats &
+StoreInfoStats::operator +=(const StoreInfoStats &stats)
+{
+    swap.size += stats.swap.size;
+    swap.capacity += stats.swap.capacity;
+    swap.count += stats.swap.count;
+    swap.open_disk_fd += stats.swap.open_disk_fd;
+
+    // Assume that either all workers use shared memory cache or none do.
+    // It is possible but difficult to report correct stats for an arbitrary
+    // mix, and only rather unusual deployments can benefit from mixing.
+
+    // If workers share memory, we will get shared stats from those workers
+    // and non-shared stats from other processes. Ignore order and also
+    // ignore other processes stats because they are zero in most setups.
+    if (stats.mem.shared) { // workers share memory
+        // use the latest reported stats, they all should be about the same
+        mem.shared = true;
+        mem.size = stats.mem.size;
+        mem.capacity = stats.mem.capacity;
+        mem.count = stats.mem.count;
+    } else if (!mem.shared) { // do not corrupt shared stats, if any
+        // workers do not share so we must add everything up
+        mem.size += stats.mem.size;
+        mem.capacity += stats.mem.capacity;
+        mem.count += stats.mem.count;
+    }
+
+    store_entry_count += stats.store_entry_count;
+    mem_object_count += stats.mem_object_count;
+
+    return *this;
+}
+
+
+
+/* StoreIoStats */
+
+StoreIoStats::StoreIoStats()
+{
+    xmemset(this, 0, sizeof(*this));
+}
+
diff -u -r -N squid-3.2.0.13/src/StoreStats.h squid-3.2.0.14/src/StoreStats.h
--- squid-3.2.0.13/src/StoreStats.h	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/StoreStats.h	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,65 @@
+#ifndef SQUID_STORE_STATS_H
+#define SQUID_STORE_STATS_H
+
+/// High-level store statistics used by mgr:info action. Used inside PODs!
+class StoreInfoStats
+{
+public:
+    /// Info common to memory and disk parts of the storage. Used inside PODs!
+    class Part
+    {
+    public:
+        double size; ///< bytes currently in use
+        double count; ///< number of cached objects
+        double capacity; ///< the size limit
+
+        /// mean size of a cached object
+        double meanObjectSize() const { return count > 0 ? size/count : 0.0; }
+
+        /// number of unused bytes
+        double available() const { return capacity - size; }
+    };
+
+    /// disk cache (all cache_dirs) storage stats
+    class Swap: public Part
+    {
+    public:
+        double open_disk_fd; ///< number of opened disk files
+    };
+
+    /// memory cache (cache_mem) storage stats
+    class Mem: public Part
+    {
+    public:
+        bool shared; ///< whether memory cache is shared among workers
+    };
+
+
+    StoreInfoStats();
+    StoreInfoStats &operator +=(const StoreInfoStats &stats);
+
+
+    Swap swap; ///< cache_mem stats
+    Mem mem; ///< all cache_dirs stats
+
+    /* stats that could be shared by memory and disk storage */
+    double store_entry_count; ///< number of StoreEntry objects in existence
+    double mem_object_count; ///< number of MemObject objects in existence
+};
+
+// TODO: this should be adjusted for use in StoreIoActionData, DiskdActionData
+/// Store statistics related to low-level I/O.
+class StoreIoStats
+{
+public:
+    StoreIoStats();
+
+    struct {
+        int calls;
+        int select_fail;
+        int create_fail;
+        int success;
+    } create; ///< cache_dir selection and disk entry creation stats
+};
+
+#endif /* SQUID_STORE_STATS_H */
diff -u -r -N squid-3.2.0.13/src/structs.h squid-3.2.0.14/src/structs.h
--- squid-3.2.0.13/src/structs.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/structs.h	2011-12-13 00:08:18.000000000 +1300
@@ -207,8 +207,8 @@
         time_t forward;
         time_t peer_connect;
         time_t request;
-        time_t persistent_request;
-        time_t pconn;
+        time_t clientIdlePconn;
+        time_t serverIdlePconn;
         time_t siteSelect;
         time_t deadPeer;
         int icp_query;		/* msec */
@@ -696,34 +696,6 @@
     off_t offset;
 };
 
-struct _fileMap {
-    int max_n_files;
-    int n_files_in_map;
-    int toggle;
-    int nwords;
-    unsigned long *file_map;
-};
-
-/*
- * Note: HttpBody is used only for messages with a small content that is
- * known a priory (e.g., error messages).
- */
-
-class MemBuf;
-
-struct _HttpBody {
-    /* private */
-    MemBuf *mb;
-};
-
-#include "SquidString.h"
-/* http header extention field */
-
-class HttpHdrExtField
-{
-    String name;		/* field-name  from HTTP/1.1 (no column after name) */
-    String value;		/* field-value from HTTP/1.1 */
-};
 
 /* per field statistics */
 
@@ -741,6 +713,7 @@
 };
 
 /* compiled version of HttpHeaderFieldAttrs plus stats */
+#include "SquidString.h"
 
 class HttpHeaderFieldInfo
 {
diff -u -r -N squid-3.2.0.13/src/SwapDir.cc squid-3.2.0.14/src/SwapDir.cc
--- squid-3.2.0.13/src/SwapDir.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/SwapDir.cc	2011-12-13 00:08:18.000000000 +1300
@@ -69,6 +69,17 @@
 SwapDir::unlink(StoreEntry &) {}
 
 void
+SwapDir::getStats(StoreInfoStats &stats) const
+{
+    if (!doReportStat())
+        return;
+
+    stats.swap.size = currentSize();
+    stats.swap.capacity = maxSize();
+    stats.swap.count = currentCount();
+}
+
+void
 SwapDir::stat(StoreEntry &output) const
 {
     if (!doReportStat())
diff -u -r -N squid-3.2.0.13/src/SwapDir.h squid-3.2.0.14/src/SwapDir.h
--- squid-3.2.0.13/src/SwapDir.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/SwapDir.h	2011-12-13 00:08:18.000000000 +1300
@@ -75,6 +75,7 @@
 
     virtual int64_t maxObjectSize() const;
 
+    virtual void getStats(StoreInfoStats &stats) const;
     virtual void stat(StoreEntry &) const;
 
     virtual void sync();	/* Sync the store prior to shutdown */
@@ -132,6 +133,8 @@
     virtual bool active() const; ///< may be used in this strand
     /// whether stat should be reported by this SwapDir
     virtual bool doReportStat() const { return active(); }
+    /// whether SwapDir may benefit from unlinkd
+    virtual bool unlinkdUseful() const = 0;
 
     /* official Store interface functions */
     virtual void diskFull();
@@ -146,6 +149,7 @@
 
     virtual int64_t maxObjectSize() const { return max_objsize; }
 
+    virtual void getStats(StoreInfoStats &stats) const;
     virtual void stat (StoreEntry &anEntry) const;
     virtual StoreSearch *search(String const url, HttpRequest *) = 0;
 
diff -u -r -N squid-3.2.0.13/src/tests/stub_MemObject.cc squid-3.2.0.14/src/tests/stub_MemObject.cc
--- squid-3.2.0.13/src/tests/stub_MemObject.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/tests/stub_MemObject.cc	2011-12-13 00:08:18.000000000 +1300
@@ -199,3 +199,10 @@
 {
     fatal ("MemObject.cc required.");
 }
+
+size_t
+MemObject::inUseCount()
+{
+    fatal ("MemObject.cc required.");
+    return 0;
+}
diff -u -r -N squid-3.2.0.13/src/tests/stub_MemStore.cc squid-3.2.0.14/src/tests/stub_MemStore.cc
--- squid-3.2.0.13/src/tests/stub_MemStore.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/tests/stub_MemStore.cc	2011-12-13 00:08:18.000000000 +1300
@@ -19,6 +19,7 @@
 void MemStore::cleanReadable(const sfileno) STUB
 void MemStore::get(String const, STOREGETCLIENT, void *) STUB
 void MemStore::init() STUB
+void MemStore::getStats(StoreInfoStats&) const STUB
 void MemStore::stat(StoreEntry &) const STUB
 int MemStore::callback() STUB_RETVAL(0)
 StoreEntry *MemStore::get(const cache_key *) STUB_RETVAL(NULL)
diff -u -r -N squid-3.2.0.13/src/tests/stub_store_rebuild.cc squid-3.2.0.14/src/tests/stub_store_rebuild.cc
--- squid-3.2.0.13/src/tests/stub_store_rebuild.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/tests/stub_store_rebuild.cc	2011-12-13 00:08:18.000000000 +1300
@@ -36,9 +36,7 @@
 
 void
 storeRebuildProgress(int sd_index, int total, int sofar)
-{
-    fatal ("Not implemented");
-}
+{}
 
 void
 
diff -u -r -N squid-3.2.0.13/src/tests/stub_store_stats.cc squid-3.2.0.14/src/tests/stub_store_stats.cc
--- squid-3.2.0.13/src/tests/stub_store_stats.cc	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/tests/stub_store_stats.cc	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,19 @@
+#include "squid.h"
+
+#define STUB_API "StoreStats.cc"
+#include "tests/STUB.h"
+
+#include "StoreStats.h"
+#include <cstring>
+
+StoreInfoStats::StoreInfoStats() STUB
+
+StoreInfoStats &
+StoreInfoStats::operator +=(const StoreInfoStats &stats) STUB_RETVAL(*this)
+
+StoreIoStats::StoreIoStats()
+{
+    // we have to implement this one because tests/stub_store.cc
+    // has a StoreIoStats global
+    memset(this, 0, sizeof(*this));
+}
diff -u -r -N squid-3.2.0.13/src/tests/stub_tools.cc squid-3.2.0.14/src/tests/stub_tools.cc
--- squid-3.2.0.13/src/tests/stub_tools.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/tests/stub_tools.cc	2011-12-13 00:08:18.000000000 +1300
@@ -72,7 +72,10 @@
 IamMasterProcess()
 {
     fprintf(stderr, "Not implemented");
-    return false;
+    // Since most tests run as a single process, this is the best default.
+    // TODO: If some test case uses multiple processes and cares about
+    // its role, we may need to parameterize or remove this stub.
+    return true;
 }
 
 bool
diff -u -r -N squid-3.2.0.13/src/tests/testConfigParser.cc squid-3.2.0.14/src/tests/testConfigParser.cc
--- squid-3.2.0.13/src/tests/testConfigParser.cc	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/tests/testConfigParser.cc	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,85 @@
+#define SQUID_UNIT_TEST 1
+#include "config.h"
+
+#include "testConfigParser.h"
+#include "SquidString.h"
+#include "Mem.h"
+#include "event.h"
+#include "ConfigParser.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( testConfigParser);
+
+/* let this test link sanely */
+void
+eventAdd(const char *name, EVH * func, void *arg, double when, int, bool cbdata)
+{}
+
+void testConfigParser::setUp()
+{
+}
+
+bool testConfigParser::doParseQuotedTest(const char *s, const char *expectInterp)
+{
+    char cfgline[2048];
+    char cfgparam[2048];
+    snprintf(cfgline, 2048, "Config %s", s);
+
+    // Points to the start of quoted string
+    const char *tmp = strchr(cfgline, ' ');
+
+    if (tmp == NULL) {
+        fprintf(stderr, "Invalid config line: %s\n", s);
+        return false;
+    }
+    // Keep the initial value on cfgparam. The ConfigParser  methods will write on cfgline
+    strcpy(cfgparam, tmp+1);
+
+    // Initialize parser to point to the start of quoted string
+    strtok(cfgline, w_space);
+    String unEscaped;
+    ConfigParser::ParseQuotedString(&unEscaped);
+
+    const bool interpOk = (unEscaped.cmp(expectInterp) == 0);
+    if (!interpOk) {
+        printf("%25s: %s\n%25s: %s\n%25s: %s\n",
+               "Raw configuration", cfgparam,
+               "Expected interpretation", expectInterp,
+               "Actual interpretation", unEscaped.termedBuf());
+    }
+
+    const char *quoted = ConfigParser::QuoteString(unEscaped);
+    bool quotedOk = (strcmp(cfgparam, quoted)==0);
+    if (!quotedOk) {
+        printf("%25s: %s\n%25s: %s\n%25s: %s\n",
+               "Raw configuration", cfgparam,
+               "Parsed and quoted", quoted,
+               "parsed value was", unEscaped.termedBuf());
+    }
+
+    return quotedOk && interpOk ;
+}
+
+void testConfigParser::testParseQuoted()
+{
+    // SingleToken
+    CPPUNIT_ASSERT(doParseQuotedTest("SingleToken", "SingleToken"));
+
+    // This is a quoted "string" by me
+    CPPUNIT_ASSERT(doParseQuotedTest("\"This is a quoted \\\"string\\\" by me\"",
+                                     "This is a quoted \"string\" by me"));
+
+    // escape sequence test: \\"\"\\"
+    CPPUNIT_ASSERT(doParseQuotedTest("\"escape sequence test: \\\\\\\\\\\"\\\\\\\"\\\\\\\\\\\"\"",
+                                     "escape sequence test: \\\\\"\\\"\\\\\""));
+
+    // \beginning and end test"
+    CPPUNIT_ASSERT(doParseQuotedTest("\"\\\\beginning and end test\\\"\"",
+                                     "\\beginning and end test\""));
+
+    // "
+    CPPUNIT_ASSERT(doParseQuotedTest("\"\\\"\"", "\""));
+
+    /* \ */
+    CPPUNIT_ASSERT(doParseQuotedTest("\"\\\\\"", "\\"));
+}
+
diff -u -r -N squid-3.2.0.13/src/tests/testConfigParser.h squid-3.2.0.14/src/tests/testConfigParser.h
--- squid-3.2.0.13/src/tests/testConfigParser.h	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/tests/testConfigParser.h	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,24 @@
+#ifndef SQUID_SRC_TEST_CONFIG_PARSER_H
+#define SQUID_SRC_TEST_CONFIG_PARSER_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+/*
+ * test the ConfigParser framework
+ */
+
+class testConfigParser : public CPPUNIT_NS::TestFixture
+{
+    CPPUNIT_TEST_SUITE( testConfigParser );
+    CPPUNIT_TEST( testParseQuoted );
+    CPPUNIT_TEST_SUITE_END();
+
+public:
+    void setUp();
+
+protected:
+    bool doParseQuotedTest(const char *, const char *);
+    void testParseQuoted();
+};
+
+#endif
diff -u -r -N squid-3.2.0.13/src/tests/testRock.cc squid-3.2.0.14/src/tests/testRock.cc
--- squid-3.2.0.13/src/tests/testRock.cc	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/tests/testRock.cc	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,291 @@
+#define SQUID_UNIT_TEST 1
+#include "config.h"
+
+#include "DiskIO/DiskIOModule.h"
+#include "HttpHeader.h"
+#include "HttpReply.h"
+#include "Mem.h"
+#include "MemObject.h"
+#include "Store.h"
+#include "StoreFileSystem.h"
+#include "StoreSearch.h"
+#include "SwapDir.h"
+#include "fs/rock/RockSwapDir.h"
+#include "testRock.h"
+#include "testStoreSupport.h"
+
+#if HAVE_STDEXCEPT
+#include <stdexcept>
+#endif
+
+#define TESTDIR "testRock__testRockSearch"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( testRock );
+
+extern REMOVALPOLICYCREATE createRemovalPolicy_lru;
+
+static void
+addSwapDir(testRock::SwapDirPointer aStore)
+{
+    allocate_new_swapdir(&Config.cacheSwap);
+    Config.cacheSwap.swapDirs[Config.cacheSwap.n_configured] = aStore.getRaw();
+    ++Config.cacheSwap.n_configured;
+}
+
+void
+testRock::setUp()
+{
+    CPPUNIT_NS::TestFixture::setUp();
+
+    if (0 > system ("rm -rf " TESTDIR))
+        throw std::runtime_error("Failed to clean test work directory");
+
+    // use current directory for shared segments (on path-based OSes)
+    Ipc::Mem::Segment::BasePath = "";
+
+    Store::Root(new StoreController);
+
+    store = new Rock::SwapDir();
+
+    addSwapDir(store);
+
+    commonInit();
+
+    char *path=xstrdup(TESTDIR);
+
+    char *config_line=xstrdup("foo 10 max-size=16384");
+
+    strtok(config_line, w_space);
+
+    store->parse(0, path);
+
+    safe_free(path);
+
+    safe_free(config_line);
+
+    /* ok, ready to create */
+    store->create();
+
+    rr = new Rock::SwapDirRr;
+    rr->run(rrAfterConfig);
+}
+
+void
+testRock::tearDown()
+{
+    CPPUNIT_NS::TestFixture::tearDown();
+
+    Store::Root(NULL);
+
+    store = NULL;
+
+    free_cachedir(&Config.cacheSwap);
+
+    delete rr;
+
+    // TODO: do this once, or each time.
+    // safe_free(Config.replPolicy->type);
+    // delete Config.replPolicy;
+
+    if (0 > system ("rm -rf " TESTDIR))
+        throw std::runtime_error("Failed to clean test work directory");
+}
+
+void
+testRock::commonInit()
+{
+    static bool inited = false;
+
+    if (inited)
+        return;
+
+    StoreFileSystem::SetupAllFs();
+
+    Config.Store.avgObjectSize = 1024;
+
+    Config.Store.objectsPerBucket = 20;
+
+    Config.Store.maxObjectSize = 2048;
+
+    Config.store_dir_select_algorithm = xstrdup("round-robin");
+
+    Config.replPolicy = new RemovalPolicySettings;
+
+    Config.replPolicy->type = xstrdup ("lru");
+
+    Config.replPolicy->args = NULL;
+
+    /* garh garh */
+    storeReplAdd("lru", createRemovalPolicy_lru);
+
+    visible_appname_string = xstrdup(APP_FULLNAME);
+
+    Mem::Init();
+
+    comm_init();
+
+    httpHeaderInitModule();	/* must go before any header processing (e.g. the one in errorInitialize) */
+
+    httpReplyInitModule();	/* must go before accepting replies */
+
+    mem_policy = createRemovalPolicy(Config.replPolicy);
+
+    inited = true;
+}
+
+void
+testRock::storeInit()
+{
+    /* ok, ready to use */
+    Store::Root().init();
+
+    /* rebuild is a scheduled event */
+    StockEventLoop loop;
+
+    /* our swapdir must be scheduled to rebuild */
+    CPPUNIT_ASSERT_EQUAL(2, StoreController::store_dirs_rebuilding);
+
+    loop.run();
+
+    /* cannot use loop.run(); as the loop will never idle: the store-dir
+     * clean() scheduled event prevents it
+     */
+
+    /* nothing left to rebuild */
+    CPPUNIT_ASSERT_EQUAL(1, StoreController::store_dirs_rebuilding);
+}
+
+StoreEntry *
+testRock::createEntry(const int i)
+{
+    request_flags flags;
+    flags.cachable = 1;
+    char url[64];
+    snprintf(url, sizeof(url), "dummy url %i", i);
+    url[sizeof(url) - 1] = '\0';
+    StoreEntry *const pe =
+        storeCreateEntry(url, "dummy log url", flags, METHOD_GET);
+    HttpReply *const rep = const_cast<HttpReply *>(pe->getReply());
+    rep->setHeaders(HTTP_OK, "dummy test object", "x-squid-internal/test",
+                    -1, -1, squid_curtime + 100000);
+
+    pe->setPublicKey();
+
+    return pe;
+}
+
+StoreEntry *
+testRock::addEntry(const int i)
+{
+    StoreEntry *const pe = createEntry(i);
+
+    pe->buffer();
+    /* TODO: remove this when the metadata is separated */
+    {
+        Packer p;
+        packerToStoreInit(&p, pe);
+        pe->getReply()->packHeadersInto(&p);
+        packerClean(&p);
+    }
+
+    pe->flush();
+    pe->timestampsSet();
+    pe->complete();
+    pe->swapOut();
+
+    return pe;
+}
+
+StoreEntry *
+testRock::getEntry(const int i)
+{
+    StoreEntry *const pe = createEntry(i);
+    return store->get(reinterpret_cast<const cache_key *>(pe->key));
+}
+
+void
+testRock::testRockCreate()
+{
+    struct stat sb;
+
+    CPPUNIT_ASSERT(::stat(TESTDIR, &sb) == 0);
+
+    /* TODO: check the size */
+
+    /* TODO: test rebuild */
+}
+
+void
+testRock::testRockSwapOut()
+{
+    storeInit();
+
+    // add few entries to prime the database
+    for (int i = 0; i < 5; ++i) {
+        CPPUNIT_ASSERT_EQUAL((uint64_t)i, store->currentCount());
+
+        StoreEntry *const pe = addEntry(i);
+
+        CPPUNIT_ASSERT(pe->swap_status == SWAPOUT_WRITING);
+        CPPUNIT_ASSERT(pe->swap_dirn == 0);
+        CPPUNIT_ASSERT(pe->swap_filen >= 0);
+
+        // Rock::IoState::finishedWriting() schedules an AsyncCall
+        // storeSwapOutFileClosed().  Let it fire.
+        StockEventLoop loop;
+        loop.run();
+
+        CPPUNIT_ASSERT(pe->swap_status == SWAPOUT_DONE);
+
+        pe->unlock();
+    }
+
+    CPPUNIT_ASSERT_EQUAL((uint64_t)5, store->currentCount());
+
+    // try to swap out entry to a used unlocked slot
+    {
+        StoreEntry *const pe = addEntry(4);
+
+        CPPUNIT_ASSERT(pe->swap_status == SWAPOUT_WRITING);
+        CPPUNIT_ASSERT(pe->swap_dirn == 0);
+        CPPUNIT_ASSERT(pe->swap_filen >= 0);
+
+        StockEventLoop loop;
+        loop.run();
+
+        CPPUNIT_ASSERT(pe->swap_status == SWAPOUT_DONE);
+    }
+
+    // try to swap out entry to a used locked slot
+    {
+        StoreEntry *const pe = addEntry(5);
+
+        CPPUNIT_ASSERT(pe->swap_status == SWAPOUT_WRITING);
+        CPPUNIT_ASSERT(pe->swap_dirn == 0);
+        CPPUNIT_ASSERT(pe->swap_filen >= 0);
+
+        // the slot is locked here because the async calls have not run yet
+        StoreEntry *const pe2 = addEntry(5);
+        CPPUNIT_ASSERT(pe2->swap_status == SWAPOUT_NONE);
+        CPPUNIT_ASSERT(pe2->mem_obj->swapout.decision ==
+                       MemObject::SwapOut::swImpossible);
+        CPPUNIT_ASSERT(pe2->swap_dirn == -1);
+        CPPUNIT_ASSERT(pe2->swap_filen == -1);
+
+        StockEventLoop loop;
+        loop.run();
+    }
+
+    CPPUNIT_ASSERT_EQUAL((uint64_t)6, store->currentCount());
+
+    // try to get and unlink entries
+    for (int i = 0; i < 6; ++i) {
+        StoreEntry *const pe = getEntry(i);
+        CPPUNIT_ASSERT(pe != NULL);
+
+        pe->unlink();
+
+        StoreEntry *const pe2 = getEntry(i);
+        CPPUNIT_ASSERT(pe2 == NULL);
+    }
+}
diff -u -r -N squid-3.2.0.13/src/tests/testRock.h squid-3.2.0.14/src/tests/testRock.h
--- squid-3.2.0.13/src/tests/testRock.h	1970-01-01 12:00:00.000000000 +1200
+++ squid-3.2.0.14/src/tests/testRock.h	2011-12-13 00:08:18.000000000 +1300
@@ -0,0 +1,37 @@
+#ifndef SQUID_SRC_TEST_TESTROCK_H
+#define SQUID_SRC_TEST_TESTROCK_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+/*
+ * test the store framework
+ */
+
+class testRock : public CPPUNIT_NS::TestFixture
+{
+    CPPUNIT_TEST_SUITE( testRock );
+    CPPUNIT_TEST( testRockCreate );
+    CPPUNIT_TEST( testRockSwapOut );
+    CPPUNIT_TEST_SUITE_END();
+
+public:
+    virtual void setUp();
+    virtual void tearDown();
+
+    typedef RefCount<Rock::SwapDir> SwapDirPointer;
+
+protected:
+    void commonInit();
+    void storeInit();
+    StoreEntry *createEntry(const int i);
+    StoreEntry *addEntry(const int i);
+    StoreEntry *getEntry(const int i);
+    void testRockCreate();
+    void testRockSwapOut();
+
+private:
+    SwapDirPointer store;
+    Rock::SwapDirRr *rr;
+};
+
+#endif /* SQUID_SRC_TEST_TESTROCK_H */
diff -u -r -N squid-3.2.0.13/src/tests/testStore.cc squid-3.2.0.14/src/tests/testStore.cc
--- squid-3.2.0.13/src/tests/testStore.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/tests/testStore.cc	2011-12-13 00:08:18.000000000 +1300
@@ -58,6 +58,11 @@
 }
 
 void
+TestStore::getStats(StoreInfoStats &) const
+{
+}
+
+void
 TestStore::stat(StoreEntry &) const
 {
     const_cast<TestStore *>(this)->statsCalled = true;
diff -u -r -N squid-3.2.0.13/src/tests/testStore.h squid-3.2.0.14/src/tests/testStore.h
--- squid-3.2.0.13/src/tests/testStore.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/tests/testStore.h	2011-12-13 00:08:18.000000000 +1300
@@ -65,6 +65,8 @@
 
     virtual int64_t maxObjectSize() const;
 
+    virtual void getStats(StoreInfoStats &) const;
+
     virtual void stat(StoreEntry &) const; /* output stats to the provided store entry */
 
     virtual void reference(StoreEntry &) {}	/* Reference this object */
diff -u -r -N squid-3.2.0.13/src/tests/TestSwapDir.cc squid-3.2.0.14/src/tests/TestSwapDir.cc
--- squid-3.2.0.13/src/tests/TestSwapDir.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/tests/TestSwapDir.cc	2011-12-13 00:08:18.000000000 +1300
@@ -36,6 +36,12 @@
 {}
 
 bool
+TestSwapDir::unlinkdUseful() const
+{
+    return false;
+}
+
+bool
 TestSwapDir::canStore(const StoreEntry &, int64_t, int &load) const
 {
     load = 0;
diff -u -r -N squid-3.2.0.13/src/tests/TestSwapDir.h squid-3.2.0.14/src/tests/TestSwapDir.h
--- squid-3.2.0.13/src/tests/TestSwapDir.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/tests/TestSwapDir.h	2011-12-13 00:08:18.000000000 +1300
@@ -20,6 +20,7 @@
 
     virtual void reconfigure();
     virtual void init();
+    virtual bool unlinkdUseful() const;
     virtual bool canStore(const StoreEntry &e, int64_t diskSpaceNeeded, int &load) const;
     virtual StoreIOState::Pointer createStoreIO(StoreEntry &, StoreIOState::STFNCB *, StoreIOState::STIOCB *, void *);
     virtual StoreIOState::Pointer openStoreIO(StoreEntry &, StoreIOState::STFNCB *, StoreIOState::STIOCB *, void *);
diff -u -r -N squid-3.2.0.13/src/test_tools.cc squid-3.2.0.14/src/test_tools.cc
--- squid-3.2.0.13/src/test_tools.cc	2011-10-14 16:48:25.000000000 +1300
+++ squid-3.2.0.14/src/test_tools.cc	1970-01-01 12:00:00.000000000 +1200
@@ -1,137 +0,0 @@
-/*
- * $Id$
- */
-
-// XXX: This file is made of large pieces of src/tools.cc
-// with only a few minor modifications. TODO: redesign or delete.
-
-#include "squid.h"
-
-void
-xassert(const char *msg, const char *file, int line)
-{
-    std::cout << "Assertion failed: (" << msg << ") at " << file << ":" << line << std::endl;
-    exit (1);
-}
-
-void
-fatal_dump(const char *message)
-{
-    fprintf(stderr, "Fatal: %s",message);
-    exit (1);
-}
-
-void
-fatal(const char *message)
-{
-    fprintf(stderr, "Fatal: %s", message);
-    exit (1);
-}
-
-/* used by fatalf */
-static void
-fatalvf(const char *fmt, va_list args)
-{
-    static char fatal_str[BUFSIZ];
-    vsnprintf(fatal_str, sizeof(fatal_str), fmt, args);
-    fatal(fatal_str);
-}
-
-/* printf-style interface for fatal */
-void
-fatalf(const char *fmt,...)
-{
-    va_list args;
-    va_start(args, fmt);
-    fatalvf(fmt, args);
-    va_end(args);
-}
-
-void
-debug_trap(const char *message)
-{
-    fatal(message);
-}
-
-dlink_node *
-dlinkNodeNew()
-{
-    return new dlink_node;
-}
-
-/* the node needs to be unlinked FIRST */
-void
-dlinkNodeDelete(dlink_node * m)
-{
-    if (m == NULL)
-        return;
-
-    delete m;
-}
-
-void
-dlinkAdd(void *data, dlink_node * m, dlink_list * list)
-{
-    m->data = data;
-    m->prev = NULL;
-    m->next = list->head;
-
-    if (list->head)
-        list->head->prev = m;
-
-    list->head = m;
-
-    if (list->tail == NULL)
-        list->tail = m;
-}
-
-void
-dlinkAddAfter(void *data, dlink_node * m, dlink_node * n, dlink_list * list)
-{
-    m->data = data;
-    m->prev = n;
-    m->next = n->next;
-
-    if (n->next)
-        n->next->prev = m;
-    else {
-        assert(list->tail == n);
-        list->tail = m;
-    }
-
-    n->next = m;
-}
-
-void
-dlinkAddTail(void *data, dlink_node * m, dlink_list * list)
-{
-    m->data = data;
-    m->next = NULL;
-    m->prev = list->tail;
-
-    if (list->tail)
-        list->tail->next = m;
-
-    list->tail = m;
-
-    if (list->head == NULL)
-        list->head = m;
-}
-
-void
-dlinkDelete(dlink_node * m, dlink_list * list)
-{
-    if (m->next)
-        m->next->prev = m->prev;
-
-    if (m->prev)
-        m->prev->next = m->next;
-
-    if (m == list->head)
-        list->head = m->next;
-
-    if (m == list->tail)
-        list->tail = m->prev;
-
-    m->next = m->prev = NULL;
-}
diff -u -r -N squid-3.2.0.13/src/tools.cc squid-3.2.0.14/src/tools.cc
--- squid-3.2.0.13/src/tools.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/tools.cc	2011-12-13 00:08:18.000000000 +1300
@@ -271,18 +271,9 @@
 
 rusage_maxrss(struct rusage *r)
 {
-#if defined(_SQUID_SGI_) && _ABIAPI
+#if _SQUID_SGI_ && _ABIAPI
     return r->ru_pad[0];
-#elif defined(_SQUID_SGI_)
-
-    return r->ru_maxrss;
-#elif defined(_SQUID_OSF_)
-
-    return r->ru_maxrss;
-#elif defined(_SQUID_AIX_)
-
-    return r->ru_maxrss;
-#elif defined(BSD4_4)
+#elif _SQUID_SGI_|| _SQUID_OSF_ || _SQUID_AIX_ || defined(BSD4_4)
 
     return r->ru_maxrss;
 #elif defined(HAVE_GETPAGESIZE) && HAVE_GETPAGESIZE != 0
@@ -301,7 +292,7 @@
 
 rusage_pagefaults(struct rusage *r)
 {
-#if defined(_SQUID_SGI_) && _ABIAPI
+#if _SQUID_SGI_ && _ABIAPI
     return r->ru_pad[5];
 #else
 
@@ -347,7 +338,7 @@
     }
 
 #endif /* _SQUID_HPUX_ */
-#if defined(_SQUID_SOLARIS_) && HAVE_LIBOPCOM_STACK
+#if _SQUID_SOLARIS_ && HAVE_LIBOPCOM_STACK
     {				/* get ftp://opcom.sun.ca/pub/tars/opcom_stack.tar.gz and */
         extern void opcom_stack_trace(void);	/* link with -lopcom_stack */
         fflush(debug_log);
@@ -368,7 +359,7 @@
 #endif
 #endif /* PRINT_STACK_TRACE */
 
-#if SA_RESETHAND == 0 && !defined(_SQUID_MSWIN_)
+#if SA_RESETHAND == 0 && !_SQUID_MSWIN_
     signal(SIGSEGV, SIG_DFL);
 
     signal(SIGBUS, SIG_DFL);
@@ -1383,7 +1374,7 @@
         }
         cap_free(caps);
     }
-#elif defined(_SQUID_LINUX_)
+#elif _SQUID_LINUX_
     Ip::Interceptor.StopTransparency("Missing needed capability support.");
 #endif /* HAVE_SYS_CAPABILITY_H */
 }
diff -u -r -N squid-3.2.0.13/src/tunnel.cc squid-3.2.0.14/src/tunnel.cc
--- squid-3.2.0.13/src/tunnel.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/tunnel.cc	2011-12-13 00:08:18.000000000 +1300
@@ -124,8 +124,8 @@
 
 static CNCB tunnelConnectDone;
 static ERCB tunnelErrorComplete;
-static PF tunnelServerClosed;
-static PF tunnelClientClosed;
+static CLCB tunnelServerClosed;
+static CLCB tunnelClientClosed;
 static CTCB tunnelTimeout;
 static PSC tunnelPeerSelectComplete;
 static void tunnelStateFree(TunnelStateData * tunnelState);
@@ -133,10 +133,10 @@
 static void tunnelRelayConnectRequest(const Comm::ConnectionPointer &server, void *);
 
 static void
-tunnelServerClosed(int fd, void *data)
+tunnelServerClosed(const CommCloseCbParams &params)
 {
-    TunnelStateData *tunnelState = (TunnelStateData *)data;
-    debugs(26, 3, HERE << "FD " << fd);
+    TunnelStateData *tunnelState = (TunnelStateData *)params.data;
+    debugs(26, 3, HERE << tunnelState->server.conn);
     tunnelState->server.conn = NULL;
 
     if (tunnelState->noConnections()) {
@@ -151,10 +151,10 @@
 }
 
 static void
-tunnelClientClosed(int fd, void *data)
+tunnelClientClosed(const CommCloseCbParams &params)
 {
-    TunnelStateData *tunnelState = (TunnelStateData *)data;
-    debugs(26, 3, HERE << "FD " << fd);
+    TunnelStateData *tunnelState = (TunnelStateData *)params.data;
+    debugs(26, 3, HERE << tunnelState->client.conn);
     tunnelState->client.conn = NULL;
 
     if (tunnelState->noConnections()) {
@@ -556,7 +556,7 @@
             AsyncJob::Start(cs);
         } else {
             debugs(26, 4, HERE << "terminate with error.");
-            ErrorState *err = errorCon(ERR_CONNECT_FAIL, HTTP_SERVICE_UNAVAILABLE, tunnelState->request);
+            ErrorState *err = new ErrorState(ERR_CONNECT_FAIL, HTTP_SERVICE_UNAVAILABLE, tunnelState->request);
             *tunnelState->status_ptr = HTTP_SERVICE_UNAVAILABLE;
             err->xerrno = xerrno;
             // on timeout is this still:    err->xerrno = ETIMEDOUT;
@@ -629,7 +629,7 @@
         ch.my_addr = request->my_addr;
         if (ch.fastCheck() == ACCESS_DENIED) {
             debugs(26, 4, HERE << "MISS access forbidden.");
-            err = errorCon(ERR_FORWARDING_DENIED, HTTP_FORBIDDEN, request);
+            err = new ErrorState(ERR_FORWARDING_DENIED, HTTP_FORBIDDEN, request);
             *status_ptr = HTTP_FORBIDDEN;
             errorSend(http->getConn()->clientConnection, err);
             return;
@@ -697,20 +697,23 @@
 }
 
 static void
-tunnelPeerSelectComplete(Comm::ConnectionList *peer_paths, void *data)
+tunnelPeerSelectComplete(Comm::ConnectionList *peer_paths, ErrorState *err, void *data)
 {
     TunnelStateData *tunnelState = (TunnelStateData *)data;
 
     if (peer_paths == NULL || peer_paths->size() < 1) {
         debugs(26, 3, HERE << "No paths found. Aborting CONNECT");
-        ErrorState *err;
-        err = errorCon(ERR_CANNOT_FORWARD, HTTP_SERVICE_UNAVAILABLE, tunnelState->request);
-        *tunnelState->status_ptr = HTTP_SERVICE_UNAVAILABLE;
+        if (!err) {
+            err = new ErrorState(ERR_CANNOT_FORWARD, HTTP_SERVICE_UNAVAILABLE, tunnelState->request);
+        }
+        *tunnelState->status_ptr = err->httpStatus;
         err->callback = tunnelErrorComplete;
         err->callback_data = tunnelState;
         errorSend(tunnelState->client.conn, err);
         return;
     }
+    delete err;
+
     debugs(26, 3, HERE << "paths=" << peer_paths->size() << ", p[0]={" << (*peer_paths)[0] << "}, serverDest[0]={" <<
            tunnelState->serverDestinations[0] << "}");
 
diff -u -r -N squid-3.2.0.13/src/typedefs.h squid-3.2.0.14/src/typedefs.h
--- squid-3.2.0.13/src/typedefs.h	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/typedefs.h	2011-12-13 00:08:18.000000000 +1300
@@ -56,22 +56,14 @@
 
 typedef struct _dwrite_q dwrite_q;
 
-typedef struct _fileMap fileMap;
-
 typedef struct _HttpHeaderFieldAttrs HttpHeaderFieldAttrs;
 
 typedef struct _HttpHeaderStat HttpHeaderStat;
 
-typedef struct _HttpBody HttpBody;
-
-typedef struct _ConnCloseHelperData ConnCloseHelperData;
-
 typedef struct _domain_ping domain_ping;
 
 typedef struct _domain_type domain_type;
 
-typedef struct _DynPool DynPool;
-
 typedef struct _DigestFetchState DigestFetchState;
 
 typedef struct _net_db_name net_db_name;
@@ -82,16 +74,12 @@
 
 typedef struct _icp_common_t icp_common_t;
 
-typedef struct _Meta_data Meta_data;
-
 typedef struct _iostats iostats;
 
 typedef struct _http_state_flags http_state_flags;
 
 typedef struct _header_mangler header_mangler;
 
-typedef struct _body_size body_size;
-
 typedef struct _cachemgr_passwd cachemgr_passwd;
 
 typedef struct _refresh_t refresh_t;
diff -u -r -N squid-3.2.0.13/src/unlinkd.cc squid-3.2.0.14/src/unlinkd.cc
--- squid-3.2.0.13/src/unlinkd.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/unlinkd.cc	2011-12-13 00:08:18.000000000 +1300
@@ -35,6 +35,7 @@
 
 #include "squid.h"
 #include "SquidTime.h"
+#include "SwapDir.h"
 #include "fde.h"
 #include "xusleep.h"
 
@@ -156,8 +157,7 @@
         unlinkd_wfd = -1;
 
         unlinkd_rfd = -1;
-    } else
-        debugs(2, 0, "unlinkdClose: WARNING: unlinkd_wfd is " << unlinkd_wfd);
+    }
 
     if (hIpc) {
         if (WaitForSingleObject(hIpc, 5000) != WAIT_OBJECT_0) {
@@ -188,9 +188,25 @@
 
 #endif
 
+bool
+unlinkdNeeded(void)
+{
+    // we should start unlinkd if there are any cache_dirs using it
+    for (int i = 0; i < Config.cacheSwap.n_configured; ++i) {
+        const RefCount<SwapDir> sd = Config.cacheSwap.swapDirs[i];
+        if (sd->unlinkdUseful())
+            return true;
+    }
+
+    return false;
+}
+
 void
 unlinkdInit(void)
 {
+    if (unlinkd_wfd >= 0)
+        return; // unlinkd already started
+
     const char *args[2];
     Ip::Address localhost;
 
@@ -199,10 +215,10 @@
     localhost.SetLocalhost();
 
     pid = ipcCreate(
-#if USE_POLL && defined(_SQUID_OSF_)
+#if USE_POLL && _SQUID_OSF_
               /* pipes and poll() don't get along on DUNIX -DW */
               IPC_STREAM,
-#elif defined(_SQUID_MSWIN_)
+#elif _SQUID_MSWIN_
               /* select() will fail on a pipe */
               IPC_TCP_SOCKET,
 #else
diff -u -r -N squid-3.2.0.13/src/url.cc squid-3.2.0.14/src/url.cc
--- squid-3.2.0.13/src/url.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/url.cc	2011-12-13 00:08:18.000000000 +1300
@@ -250,8 +250,7 @@
         *dst = '\0';
 
         /* Then its :// */
-        /* (XXX yah, I'm not checking we've got enough data left before checking the array..) */
-        if (*src != ':' || *(src + 1) != '/' || *(src + 2) != '/')
+        if ((i+3) > l || *src != ':' || *(src + 1) != '/' || *(src + 2) != '/')
             return NULL;
         i += 3;
         src += 3;
@@ -328,7 +327,7 @@
 
         // Bug 3183 sanity check: If scheme is present, host must be too.
         if (protocol != AnyP::PROTO_NONE && (host == NULL || *host == '\0')) {
-            debugs(23, DBG_IMPORTANT, "SECURITY WARNING: Missing hostname in URL '" << url << "'. see access.log for details.");
+            debugs(23, DBG_IMPORTANT, "SECURITY ALERT: Missing hostname in URL '" << url << "'. see access.log for details.");
             return NULL;
         }
 
diff -u -r -N squid-3.2.0.13/src/urn.cc squid-3.2.0.14/src/urn.cc
--- squid-3.2.0.13/src/urn.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/urn.cc	2011-12-13 00:08:18.000000000 +1300
@@ -221,7 +221,7 @@
 
     if (urlres_r == NULL) {
         debugs(52, 3, "urnStart: Bad uri-res URL " << urlres);
-        ErrorState *err = errorCon(ERR_URN_RESOLVE, HTTP_NOT_FOUND, r);
+        ErrorState *err = new ErrorState(ERR_URN_RESOLVE, HTTP_NOT_FOUND, r);
         err->url = urlres;
         urlres = NULL;
         errorAppendEntry(entry, err);
@@ -373,7 +373,7 @@
 
     if (rep->sline.status != HTTP_OK) {
         debugs(52, 3, "urnHandleReply: failed.");
-        err = errorCon(ERR_URN_RESOLVE, HTTP_NOT_FOUND, urnState->request);
+        err = new ErrorState(ERR_URN_RESOLVE, HTTP_NOT_FOUND, urnState->request);
         err->url = xstrdup(e->url());
         errorAppendEntry(e, err);
         delete rep;
@@ -395,7 +395,7 @@
 
     if (urls == NULL) {		/* unkown URN error */
         debugs(52, 3, "urnTranslateDone: unknown URN " << e->url()  );
-        err = errorCon(ERR_URN_RESOLVE, HTTP_NOT_FOUND, urnState->request);
+        err = new ErrorState(ERR_URN_RESOLVE, HTTP_NOT_FOUND, urnState->request);
         err->url = xstrdup(e->url());
         errorAppendEntry(e, err);
         urnHandleReplyError(urnState, urlres_e);
@@ -444,7 +444,7 @@
         rep->header.putStr(HDR_LOCATION, min_u->url);
     }
 
-    httpBodySet(&rep->body, mb);
+    rep->body.setMb(mb);
     /* don't clean or delete mb; rep->body owns it now */
     e->replaceHttpReply(rep);
     e->complete();
diff -u -r -N squid-3.2.0.13/src/whois.cc squid-3.2.0.14/src/whois.cc
--- squid-3.2.0.13/src/whois.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/whois.cc	2011-12-13 00:08:18.000000000 +1300
@@ -59,7 +59,7 @@
     bool dataWritten;
 };
 
-static PF whoisClose;
+static CLCB whoisClose;
 static CTCB whoisTimeout;
 static IOCB whoisReadReply;
 
@@ -157,8 +157,7 @@
                                                  CommIoCbPtrFun(whoisReadReply, this));
             comm_read(conn, aBuffer, BUFSIZ, call);
         } else {
-            ErrorState *err;
-            err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR, fwd->request);
+            ErrorState *err = new ErrorState(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR, fwd->request);
             err->xerrno = errno;
             fwd->fail(err);
             conn->close();
@@ -197,10 +196,10 @@
 }
 
 static void
-whoisClose(int fd, void *data)
+whoisClose(const CommCloseCbParams &params)
 {
-    WhoisState *p = (WhoisState *)data;
-    debugs(75, 3, "whoisClose: FD " << fd);
+    WhoisState *p = (WhoisState *)params.data;
+    debugs(75, 3, "whoisClose: FD " << params.fd);
     p->entry->unlock();
     cbdataFree(p);
 }
diff -u -r -N squid-3.2.0.13/src/WinSvc.cc squid-3.2.0.14/src/WinSvc.cc
--- squid-3.2.0.13/src/WinSvc.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/src/WinSvc.cc	2011-12-13 00:08:18.000000000 +1300
@@ -57,7 +57,7 @@
 #endif
 extern "C" void WINAPI SquidWinSvcMain(DWORD, char **);
 
-#if defined(_SQUID_MSWIN_)
+#if _SQUID_MSWIN_
 #if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
 void Squid_Win32InvalidParameterHandler(const wchar_t*, const wchar_t*, const wchar_t*, unsigned int, uintptr_t);
 #endif
@@ -978,7 +978,7 @@
 
 #endif /* USE_WIN32_SERVICE */
 
-#if defined(_SQUID_MSWIN_)
+#if _SQUID_MSWIN_
 static int Win32SockInit(void)
 {
     int iVersionRequested;
diff -u -r -N squid-3.2.0.13/test-suite/mem_hdr_test.cc squid-3.2.0.14/test-suite/mem_hdr_test.cc
--- squid-3.2.0.13/test-suite/mem_hdr_test.cc	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/test-suite/mem_hdr_test.cc	2011-12-13 00:08:18.000000000 +1300
@@ -57,7 +57,7 @@
     assert (aHeader.lowestOffset() == 0);
     assert (aHeader.write (StoreIOBuffer()));
     assert (aHeader.lowestOffset() == 0);
-    assert (aHeader.write (StoreIOBuffer(0, 1, NULL)));
+    assert (aHeader.write (StoreIOBuffer(0, 1, (char *)NULL)));
     assert (aHeader.lowestOffset() == 0);
     char * sampleData = xstrdup ("A");
     assert (aHeader.write (StoreIOBuffer(1, 100, sampleData)));
diff -u -r -N squid-3.2.0.13/test-suite/tcp-banger2.c squid-3.2.0.14/test-suite/tcp-banger2.c
--- squid-3.2.0.13/test-suite/tcp-banger2.c	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/test-suite/tcp-banger2.c	2011-12-13 00:08:18.000000000 +1300
@@ -11,7 +11,7 @@
 #define CHANGE_FD_SETSIZE 1
 
 /* Cannot increase FD_SETSIZE on Linux */
-#if defined(_SQUID_LINUX_)
+#if _SQUID_LINUX_
 #undef CHANGE_FD_SETSIZE
 #define CHANGE_FD_SETSIZE 0
 #endif
@@ -20,7 +20,7 @@
  * to return EINVAL. */
 /* Marian Durkovic <marian@svf.stuba.sk> */
 /* Peter Wemm <peter@spinner.DIALix.COM> */
-#if defined(_SQUID_FREEBSD_)
+#if _SQUID_FREEBSD_
 #include <osreldate.h>
 #if __FreeBSD_version < 220000
 #undef CHANGE_FD_SETSIZE
diff -u -r -N squid-3.2.0.13/tools/purge/conffile.hh squid-3.2.0.14/tools/purge/conffile.hh
--- squid-3.2.0.13/tools/purge/conffile.hh	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/tools/purge/conffile.hh	2011-12-13 00:08:18.000000000 +1300
@@ -55,9 +55,9 @@
 #endif /* __cplusplus */
 
 
-#ifndef DEFAULT_SQUID_CONF
+#if !defined(DEFAULT_SQUID_CONF)
 #define DEFAULT_SQUID_CONF "/usr/local/squid/etc/squid.conf"
-#endif // DEFAULT_SQUID_CONF
+#endif
 
 #include <stdio.h>      // FILE*
 #include <vector>	// minimum STL container
diff -u -r -N squid-3.2.0.13/tools/purge/squid-tlv.hh squid-3.2.0.14/tools/purge/squid-tlv.hh
--- squid-3.2.0.13/tools/purge/squid-tlv.hh	2011-10-14 14:42:56.000000000 +1300
+++ squid-3.2.0.14/tools/purge/squid-tlv.hh	2011-12-13 00:08:18.000000000 +1300
@@ -34,8 +34,8 @@
 // Revision 1.1  1999/06/15 21:10:16  voeckler
 // Initial revision
 //
-#ifndef _SQUID_TLV_HH
-#define _SQUID_TLV_HH
+#ifndef SQUID_TLV_HH
+#define SQUID_TLV_HH
 
 #if !defined(__cplusplus)
 #if defined(__GNUC__) || defined(__GNUG__)
@@ -117,4 +117,4 @@
   SquidTLV* tail;
 };
 
-#endif // _SQUID_TLV_HH
+#endif // SQUID_TLV_HH
