diff --git a/.gitignore b/.gitignore index b8e6b76..018ba3d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/squid-3.3.8.tar.xz +SOURCES/squid-3.5.20.tar.xz diff --git a/.squid.metadata b/.squid.metadata index 9672be3..d9a1a3e 100644 --- a/.squid.metadata +++ b/.squid.metadata @@ -1 +1 @@ -39472c7f93e14fb55a65d1730d6594407b7de9f6 SOURCES/squid-3.3.8.tar.xz +2bb6d3568e7167c9b99fea092a97287d0e430863 SOURCES/squid-3.5.20.tar.xz diff --git a/SOURCES/active-ftp.patch b/SOURCES/active-ftp.patch deleted file mode 100644 index 2480c49..0000000 --- a/SOURCES/active-ftp.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ./src/ftp.cc 2013-04-30 06:47:06.000000000 +0200 -+++ ./src/ftp.cc 2013-07-04 14:42:06.000000000 +0200 -@@ -2555,7 +2555,7 @@ - /** \par - * Checks for previous EPSV/PASV failures on this server/session. - * Diverts to EPRT immediately if they are not working. */ -- if (!ftpState->flags.pasv_supported) { -+ if (!ftpState->flags.pasv_supported && Config.Ftp.passive) { - ftpSendEPRT(ftpState); - return; - } diff --git a/SOURCES/squid-3.1.0.9-location.patch b/SOURCES/squid-3.1.0.9-location.patch index 91cff9d..0f6369d 100644 --- a/SOURCES/squid-3.1.0.9-location.patch +++ b/SOURCES/squid-3.1.0.9-location.patch @@ -1,7 +1,8 @@ -diff -up squid-3.1.0.9/QUICKSTART.location squid-3.1.0.9/QUICKSTART ---- squid-3.1.0.9/QUICKSTART.location 2009-06-26 12:35:27.000000000 +0200 -+++ squid-3.1.0.9/QUICKSTART 2009-07-17 14:03:10.000000000 +0200 -@@ -10,10 +10,9 @@ After you retrieved, compiled and instal +diff --git a/QUICKSTART b/QUICKSTART +index f0294ba..e7b14ea 100644 +--- a/QUICKSTART ++++ b/QUICKSTART +@@ -10,10 +10,9 @@ After you retrieved, compiled and installed the Squid software (see INSTALL in the same directory), you have to configure the squid.conf file. This is the list of the values you *need* to change, because no sensible defaults could be defined. Do not touch the other variables @@ -14,16 +15,16 @@ diff -up squid-3.1.0.9/QUICKSTART.location squid-3.1.0.9/QUICKSTART ============================================================================== -@@ -54,7 +53,7 @@ cache_effective_user - Some configuration lines which are optional but may be needed. - +@@ -52,7 +51,7 @@ cache_effective_user + as after startup (typically "nobody" and "nogroup"). Do not use + "root", for security reasons. -cache_dir ufs /usr/local/squid/var/cache 100 16 256 +cache_dir ufs /var/spool/squid 100 16 256 Add here (first number, here 100) the amount of hard disk space (in megabytes) to devote to caching. -@@ -82,12 +81,12 @@ After editing squid.conf to your liking, +@@ -80,12 +79,12 @@ After editing squid.conf to your liking, run Squid from the command line TWICE: To create any disk cache_dir configured: diff --git a/SOURCES/squid-3.1.9-ltdl.patch b/SOURCES/squid-3.1.9-ltdl.patch index e0e052c..6c0b0e7 100644 --- a/SOURCES/squid-3.1.9-ltdl.patch +++ b/SOURCES/squid-3.1.9-ltdl.patch @@ -1,8 +1,48 @@ -diff -up squid-3.1.9/aclocal.m4.ltdl squid-3.1.9/aclocal.m4 ---- squid-3.1.9/aclocal.m4.ltdl 2010-10-25 13:34:41.000000000 +0200 -+++ squid-3.1.9/aclocal.m4 2010-11-01 14:14:55.297324980 +0100 -@@ -1217,7 +1217,7 @@ _LT_SET_OPTIONS([$0], [$1]) - LIBTOOL_DEPS="$ltmain" +diff --git a/Makefile.am b/Makefile.am +index c582a62..18ee5bb 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -6,11 +6,8 @@ + ## + + AUTOMAKE_OPTIONS = dist-bzip2 1.5 foreign +-DIST_SUBDIRS = compat lib libltdl scripts icons errors contrib doc helpers src test-suite tools ++DIST_SUBDIRS = compat lib scripts icons errors contrib doc helpers src test-suite tools + SUBDIRS = compat lib +-if ENABLE_LOADABLE_MODULES +-SUBDIRS += libltdl +-endif + SUBDIRS += scripts icons errors doc helpers src tools test-suite + + DISTCLEANFILES = include/stamp-h include/stamp-h[0-9]* +diff --git a/Makefile.in b/Makefile.in +index 09c9304..dad017b 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -87,7 +87,7 @@ PRE_UNINSTALL = : + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ +-@ENABLE_LOADABLE_MODULES_TRUE@am__append_1 = libltdl ++#@ENABLE_LOADABLE_MODULES_TRUE@am__append_1 = libltdl + subdir = . + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/acinclude/ax_with_prog.m4 \ +@@ -493,7 +493,7 @@ top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + AUTOMAKE_OPTIONS = dist-bzip2 1.5 foreign +-DIST_SUBDIRS = compat lib libltdl scripts icons errors contrib doc helpers src test-suite tools ++DIST_SUBDIRS = compat lib scripts icons errors contrib doc helpers src test-suite tools + SUBDIRS = compat lib $(am__append_1) scripts icons errors doc helpers \ + src tools test-suite + DISTCLEANFILES = include/stamp-h include/stamp-h[0-9]* +diff --git a/aclocal.m4 b/aclocal.m4 +index 4dd204a..b66d5aa 100644 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -108,7 +108,7 @@ _LT_SET_OPTIONS([$0], [$1]) + LIBTOOL_DEPS=$ltmain # Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' @@ -10,11 +50,12 @@ diff -up squid-3.1.9/aclocal.m4.ltdl squid-3.1.9/aclocal.m4 AC_SUBST(LIBTOOL)dnl _LT_SETUP -diff -up squid-3.1.9/configure.ltdl squid-3.1.9/configure ---- squid-3.1.9/configure.ltdl 2010-10-25 13:35:32.000000000 +0200 -+++ squid-3.1.9/configure 2010-11-01 14:14:55.320299060 +0100 -@@ -10286,7 +10286,7 @@ fi - LIBTOOL_DEPS="$ltmain" +diff --git a/configure b/configure +index ba4a984..6926f03 100755 +--- a/configure ++++ b/configure +@@ -11551,7 +11551,7 @@ esac + LIBTOOL_DEPS=$ltmain # Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' @@ -22,40 +63,3 @@ diff -up squid-3.1.9/configure.ltdl squid-3.1.9/configure -diff -up squid-3.1.9/Makefile.am.ltdl squid-3.1.9/Makefile.am ---- squid-3.1.9/Makefile.am.ltdl 2010-11-02 08:16:07.165707548 +0100 -+++ squid-3.1.9/Makefile.am 2010-11-02 08:16:52.977565320 +0100 -@@ -2,11 +2,8 @@ - # - - AUTOMAKE_OPTIONS = dist-bzip2 subdir-objects 1.5 foreign --DIST_SUBDIRS = compat lib libltdl snmplib scripts icons errors contrib doc helpers src test-suite tools -+DIST_SUBDIRS = compat lib snmplib scripts icons errors contrib doc helpers src test-suite tools - SUBDIRS = compat lib $(makesnmplib) --if USE_LOADABLE_MODULES --SUBDIRS += libltdl --endif - SUBDIRS += scripts icons errors doc helpers src tools test-suite - - DISTCLEANFILES = include/stamp-h include/stamp-h[0-9]* -diff -up squid-3.1.9/Makefile.in.ltdl squid-3.1.9/Makefile.in ---- squid-3.1.9/Makefile.in.ltdl 2010-11-02 08:16:13.630458557 +0100 -+++ squid-3.1.9/Makefile.in 2010-11-02 08:17:26.543714199 +0100 -@@ -35,7 +35,7 @@ PRE_UNINSTALL = : - POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ --@USE_LOADABLE_MODULES_TRUE@am__append_1 = libltdl -+# @USE_LOADABLE_MODULES_TRUE@am__append_1 = libltdl - subdir = . - DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/configure \ -@@ -325,7 +325,7 @@ top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ - AUTOMAKE_OPTIONS = dist-bzip2 subdir-objects 1.5 foreign --DIST_SUBDIRS = compat lib libltdl snmplib scripts icons errors contrib doc helpers src test-suite tools -+DIST_SUBDIRS = compat lib snmplib scripts icons errors contrib doc helpers src test-suite tools - SUBDIRS = compat lib $(makesnmplib) $(am__append_1) scripts icons \ - errors doc helpers src tools test-suite - DISTCLEANFILES = include/stamp-h include/stamp-h[0-9]* diff --git a/SOURCES/squid-3.2.0.9-fpic.patch b/SOURCES/squid-3.2.0.9-fpic.patch index 40861f6..9a048dc 100644 --- a/SOURCES/squid-3.2.0.9-fpic.patch +++ b/SOURCES/squid-3.2.0.9-fpic.patch @@ -1,36 +1,45 @@ -diff -up squid-3.2.0.9/compat/Makefile.in.fpic squid-3.2.0.9/compat/Makefile.in ---- squid-3.2.0.9/compat/Makefile.in.fpic 2011-07-01 11:38:35.332618191 +0200 -+++ squid-3.2.0.9/compat/Makefile.in 2011-07-01 11:41:07.207345197 +0200 -@@ -321,7 +321,7 @@ target_alias = @target_alias@ +diff --git a/compat/Makefile.in b/compat/Makefile.in +index 55b7ba0..ec58c7d 100644 +--- a/compat/Makefile.in ++++ b/compat/Makefile.in +@@ -698,8 +698,8 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -AM_CFLAGS = $(SQUID_CFLAGS) +-AM_CXXFLAGS = $(SQUID_CXXFLAGS) +AM_CFLAGS = $(SQUID_CFLAGS) -fPIC - AM_CXXFLAGS = $(SQUID_CXXFLAGS) ++AM_CXXFLAGS = $(SQUID_CXXFLAGS) -fPIC CLEANFILES = testHeaders - INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_srcdir)/lib \ -diff -up squid-3.2.0.9/snmplib/Makefile.am.fpic squid-3.2.0.9/snmplib/Makefile.am ---- squid-3.2.0.9/snmplib/Makefile.am.fpic 2011-07-01 11:40:12.557741046 +0200 -+++ squid-3.2.0.9/snmplib/Makefile.am 2011-07-01 11:41:10.201378312 +0200 -@@ -2,7 +2,7 @@ + AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ + -I$(top_srcdir)/lib -I$(top_srcdir)/src \ +diff --git a/lib/snmplib/Makefile.am b/lib/snmplib/Makefile.am +index 52921e8..ad780f6 100644 +--- a/lib/snmplib/Makefile.am ++++ b/lib/snmplib/Makefile.am +@@ -9,8 +9,8 @@ ## ## Makefile for libsnmp. ## -AM_CFLAGS = $(SQUID_CFLAGS) +-AM_CXXFLAGS = $(SQUID_CXXFLAGS) +AM_CFLAGS = $(SQUID_CFLAGS) -fPIC - AM_CXXFLAGS = $(SQUID_CXXFLAGS) - noinst_LIBRARIES = libsnmplib.a - libsnmplib_a_SOURCES = asn1.c parse.c snmp_vars.c \ -diff -up squid-3.2.0.9/snmplib/Makefile.in.fpic squid-3.2.0.9/snmplib/Makefile.in ---- squid-3.2.0.9/snmplib/Makefile.in.fpic 2011-07-01 12:04:44.083181152 +0200 -+++ squid-3.2.0.9/snmplib/Makefile.in 2011-07-01 12:05:06.796437407 +0200 -@@ -290,7 +290,7 @@ target_alias = @target_alias@ ++AM_CXXFLAGS = $(SQUID_CXXFLAGS) -fPIC + AM_CPPFLAGS = \ + -I$(top_srcdir) \ + -I$(top_builddir)/include \ +diff --git a/lib/snmplib/Makefile.in b/lib/snmplib/Makefile.in +index af07cd7..f59f62e 100644 +--- a/lib/snmplib/Makefile.in ++++ b/lib/snmplib/Makefile.in +@@ -454,8 +454,8 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -AM_CFLAGS = $(SQUID_CFLAGS) +-AM_CXXFLAGS = $(SQUID_CXXFLAGS) +AM_CFLAGS = $(SQUID_CFLAGS) -fPIC - AM_CXXFLAGS = $(SQUID_CXXFLAGS) - noinst_LIBRARIES = libsnmplib.a - libsnmplib_a_SOURCES = asn1.c parse.c snmp_vars.c \ ++AM_CXXFLAGS = $(SQUID_CXXFLAGS) -fPIC + AM_CPPFLAGS = \ + -I$(top_srcdir) \ + -I$(top_builddir)/include \ diff --git a/SOURCES/squid-3.3-12677.patch b/SOURCES/squid-3.3-12677.patch deleted file mode 100644 index 5707e42..0000000 --- a/SOURCES/squid-3.3-12677.patch +++ /dev/null @@ -1,200 +0,0 @@ ------------------------------------------------------------- -revno: 12677 -revision-id: squid3@treenet.co.nz-20140309023519-t6wmqou7m816tgnl -parent: squid3@treenet.co.nz-20140309021524-wtxyrfoagz95ezwp -author: Alex Rousskov -committer: Amos Jeffries -branch nick: 3.3 -timestamp: Sat 2014-03-08 19:35:19 -0700 -message: - Avoid assertions on Range requests that trigger Squid-generated errors. - - Added HttpRequest::ignoreRange() to encapsulate range ignoring logic. - Currently the new method only contains the code common among all callers. More - work is needed to check whether further caller homogenization is possible. - - Documented that ClientSocketContext::getNextRangeOffset() may sometimes be - called before it is ready to do its job. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20140309023519-t6wmqou7m816tgnl -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 -# testament_sha1: 0e0335663a55b0dca989893fb98f81d8d9604572 -# timestamp: 2014-03-09 02:37:50 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 -# base_revision_id: squid3@treenet.co.nz-20140309021524-\ -# wtxyrfoagz95ezwp -# -# Begin patch -=== modified file 'src/HttpRequest.cc' ---- src/HttpRequest.cc 2013-09-11 01:03:45 +0000 -+++ src/HttpRequest.cc 2014-03-09 02:35:19 +0000 -@@ -658,6 +658,20 @@ - return rangeOffsetLimit; - } - -+void -+HttpRequest::ignoreRange(const char *reason) -+{ -+ if (range) { -+ debugs(73, 3, static_cast(range) << " for " << reason); -+ delete range; -+ range = NULL; -+ } -+ // Some callers also reset isRanged but it may not be safe for all callers: -+ // isRanged is used to determine whether a weak ETag comparison is allowed, -+ // and that check should not ignore the Range header if it was present. -+ // TODO: Some callers also delete HDR_RANGE, HDR_REQUEST_RANGE. Should we? -+} -+ - bool - HttpRequest::canHandle1xx() const - { - -=== modified file 'src/HttpRequest.h' ---- src/HttpRequest.h 2013-07-26 12:21:20 +0000 -+++ src/HttpRequest.h 2014-03-09 02:35:19 +0000 -@@ -246,6 +246,8 @@ - */ - CbcPointer clientConnectionManager; - -+ /// forgets about the cached Range header (for a reason) -+ void ignoreRange(const char *reason); - int64_t getRangeOffsetLimit(); /* the result of this function gets cached in rangeOffsetLimit */ - - private: - -=== modified file 'src/client_side.cc' ---- src/client_side.cc 2013-09-29 17:28:00 +0000 -+++ src/client_side.cc 2014-03-09 02:35:19 +0000 -@@ -1281,9 +1281,7 @@ - * offset data, but we won't be requesting it. - * So, we can either re-request, or generate an error - */ -- debugs(33, 3, "clientBuildRangeHeader: will not do ranges: " << range_err << "."); -- delete http->request->range; -- http->request->range = NULL; -+ http->request->ignoreRange(range_err); - } else { - /* XXX: TODO: Review, this unconditional set may be wrong. - TODO: review. */ - httpStatusLineSet(&rep->sline, rep->sline.version, -@@ -1662,9 +1660,16 @@ - int64_t - ClientSocketContext::getNextRangeOffset() const - { -+ debugs (33, 5, "range: " << http->request->range << -+ "; http offset " << http->out.offset << -+ "; reply " << reply); -+ -+ // XXX: This method is called from many places, including pullData() which -+ // may be called before prepareReply() [on some Squid-generated errors]. -+ // Hence, we may not even know yet whether we should honor/do ranges. -+ - if (http->request->range) { - /* offset in range specs does not count the prefix of an http msg */ -- debugs (33, 5, "ClientSocketContext::getNextRangeOffset: http offset " << http->out.offset); - /* check: reply was parsed and range iterator was initialized */ - assert(http->range_iter.valid); - /* filter out data according to range specs */ -@@ -1701,7 +1706,7 @@ - void - ClientSocketContext::pullData() - { -- debugs(33, 5, HERE << clientConnection << " attempting to pull upstream data"); -+ debugs(33, 5, reply << " written " << http->out.size << " into " << clientConnection); - - /* More data will be coming from the stream. */ - StoreIOBuffer readBuffer; -@@ -2492,7 +2497,7 @@ - clientReplyContext *repContext = dynamic_cast(node->data.getRaw()); - assert(repContext); - debugs(33, 5, "Responding with delated error for " << http->uri); -- repContext->setReplyToStoreEntry(sslServerBump->entry); -+ repContext->setReplyToStoreEntry(sslServerBump->entry, "delayed SslBump error"); - - // save the original request for logging purposes - if (!context->http->al->request) - -=== modified file 'src/client_side_reply.cc' ---- src/client_side_reply.cc 2013-12-15 05:23:23 +0000 -+++ src/client_side_reply.cc 2014-03-09 02:35:19 +0000 -@@ -134,13 +134,18 @@ - - http->al->http.code = errstate->httpStatus; - -+ if (http->request) -+ http->request->ignoreRange("responding with a Squid-generated error"); -+ - createStoreEntry(method, RequestFlags()); - assert(errstate->callback_data == NULL); - errorAppendEntry(http->storeEntry(), errstate); - /* Now the caller reads to get this */ - } - --void clientReplyContext::setReplyToStoreEntry(StoreEntry *entry) -+// Assumes that the entry contains an error response without Content-Range. -+// To use with regular entries, make HTTP Range header removal conditional. -+void clientReplyContext::setReplyToStoreEntry(StoreEntry *entry, const char *reason) - { - entry->lock(); // removeClientStoreReference() unlocks - sc = storeClientListAdd(entry, this); -@@ -149,6 +154,8 @@ - #endif - reqofs = 0; - reqsize = 0; -+ if (http->request) -+ http->request->ignoreRange(reason); - flags.storelogiccomplete = 1; - http->storeEntry(entry); - } - -=== modified file 'src/client_side_reply.h' ---- src/client_side_reply.h 2012-09-10 12:49:35 +0000 -+++ src/client_side_reply.h 2014-03-09 02:35:19 +0000 -@@ -73,7 +73,7 @@ - int storeOKTransferDone() const; - int storeNotOKTransferDone() const; - /// replaces current response store entry with the given one -- void setReplyToStoreEntry(StoreEntry *e); -+ void setReplyToStoreEntry(StoreEntry *e, const char *reason); - /// builds error using clientBuildError() and calls setReplyToError() below - void setReplyToError(err_type, http_status, const HttpRequestMethod&, char const *, Ip::Address &, HttpRequest *, const char *, - #if USE_AUTH - -=== modified file 'src/client_side_request.cc' ---- src/client_side_request.cc 2014-03-09 02:10:07 +0000 -+++ src/client_side_request.cc 2014-03-09 02:35:19 +0000 -@@ -1131,8 +1131,7 @@ - else { - req_hdr->delById(HDR_RANGE); - req_hdr->delById(HDR_REQUEST_RANGE); -- delete request->range; -- request->range = NULL; -+ request->ignoreRange("neither HEAD nor GET"); - } - - if (req_hdr->has(HDR_AUTHORIZATION)) -@@ -1664,7 +1663,7 @@ - clientStreamNode *node = (clientStreamNode *)client_stream.tail->prev->data; - clientReplyContext *repContext = dynamic_cast(node->data.getRaw()); - assert (repContext); -- repContext->setReplyToStoreEntry(e); -+ repContext->setReplyToStoreEntry(e, "immediate SslBump error"); - errorAppendEntry(e, calloutContext->error); - calloutContext->error = NULL; - if (calloutContext->readNextRequest) - -=== modified file 'src/http.cc' ---- src/http.cc 2013-11-21 21:54:29 +0000 -+++ src/http.cc 2014-03-09 02:35:19 +0000 -@@ -1736,8 +1736,7 @@ - /* don't cache the result */ - request->flags.cachable = 0; - /* pretend it's not a range request */ -- delete request->range; -- request->range = NULL; -+ request->ignoreRange("want to request the whole object"); - request->flags.isRanged=false; - } - - diff --git a/SOURCES/squid-3.3.13-dos.patch b/SOURCES/squid-3.3.13-dos.patch deleted file mode 100644 index eb7499c..0000000 --- a/SOURCES/squid-3.3.13-dos.patch +++ /dev/null @@ -1,54 +0,0 @@ ------------------------------------------------------------- -revno: 12680 -revision-id: squid3@treenet.co.nz-20140827135054-gocmdaazdumj5e2e -parent: squid3@treenet.co.nz-20140520164322-out2c9fak6sb2u4x -committer: Amos Jeffries -branch nick: 3.3 -timestamp: Wed 2014-08-27 07:50:54 -0600 -message: - Ignore Range headers with unidentifiable byte-range values - - If squid is unable to determine the byte value for ranges, treat the - header as invalid. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20140827135054-gocmdaazdumj5e2e -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 -# testament_sha1: 5518d5baca6f4327b40368e98fe8d9c36831fa1a -# timestamp: 2014-08-27 13:53:27 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 -# base_revision_id: squid3@treenet.co.nz-20140520164322-\ -# out2c9fak6sb2u4x -# -# Begin patch -=== modified file 'src/HttpHdrRange.cc' ---- src/HttpHdrRange.cc 2013-01-02 03:44:55 +0000 -+++ src/HttpHdrRange.cc 2014-08-27 13:50:54 +0000 -@@ -92,7 +92,7 @@ - - /* is it a suffix-byte-range-spec ? */ - if (*field == '-') { -- if (!httpHeaderParseOffset(field + 1, &length)) -+ if (!httpHeaderParseOffset(field + 1, &length) || !known_spec(length)) - return false; - } else - /* must have a '-' somewhere in _this_ field */ -@@ -100,7 +100,7 @@ - debugs(64, 2, "invalid (missing '-') range-spec near: '" << field << "'"); - return false; - } else { -- if (!httpHeaderParseOffset(field, &offset)) -+ if (!httpHeaderParseOffset(field, &offset) || !known_spec(offset)) - return false; - - ++p; -@@ -109,7 +109,7 @@ - if (p - field < flen) { - int64_t last_pos; - -- if (!httpHeaderParseOffset(p, &last_pos)) -+ if (!httpHeaderParseOffset(p, &last_pos) || !known_spec(last_pos)) - return false; - - // RFC 2616 s14.35.1 MUST: last-byte-pos >= first-byte-pos - diff --git a/SOURCES/squid-3.3.4-empty-pod2man.patch b/SOURCES/squid-3.3.4-empty-pod2man.patch deleted file mode 100644 index cc5ce63..0000000 --- a/SOURCES/squid-3.3.4-empty-pod2man.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff -up squid-3.3.4/helpers/basic_auth/DB/config.test~ squid-3.3.4/helpers/basic_auth/DB/config.test ---- squid-3.3.4/helpers/basic_auth/DB/config.test~ 2013-04-27 06:34:48.000000000 +0300 -+++ squid-3.3.4/helpers/basic_auth/DB/config.test 2013-05-08 15:24:08.234985038 +0300 -@@ -2,6 +2,6 @@ - - ## Test: do we have perl to build the helper scripts? - ## Test: do we have pod2man to build the manual? --perl --version >/dev/null && echo | pod2man >/dev/null -+perl --version >/dev/null && echo =pod | pod2man >/dev/null - - exit $? -diff -up squid-3.3.4/helpers/external_acl/SQL_session/config.test~ squid-3.3.4/helpers/external_acl/SQL_session/config.test ---- squid-3.3.4/helpers/external_acl/SQL_session/config.test~ 2013-04-27 06:34:48.000000000 +0300 -+++ squid-3.3.4/helpers/external_acl/SQL_session/config.test 2013-05-08 15:23:49.237640257 +0300 -@@ -2,6 +2,6 @@ - - ## Test: do we have perl to build the helper scripts? - ## Test: do we have pod2man to build the manual? --perl --version >/dev/null && echo | pod2man >/dev/null -+perl --version >/dev/null && echo =pod | pod2man >/dev/null - - exit $? -diff -up squid-3.3.4/helpers/log_daemon/DB/config.test~ squid-3.3.4/helpers/log_daemon/DB/config.test ---- squid-3.3.4/helpers/log_daemon/DB/config.test~ 2013-04-27 06:34:48.000000000 +0300 -+++ squid-3.3.4/helpers/log_daemon/DB/config.test 2013-05-08 15:23:26.402225335 +0300 -@@ -2,6 +2,6 @@ - - ## Test: do we have perl to build the helper scripts? - ## Test: do we have pod2man to build the manual? --perl --version >/dev/null && echo | pod2man >/dev/null -+perl --version >/dev/null && echo =pod | pod2man >/dev/null - - exit $? diff --git a/SOURCES/squid-3.3.8-active-ftp-1.patch b/SOURCES/squid-3.3.8-active-ftp-1.patch new file mode 100644 index 0000000..0d4d13e --- /dev/null +++ b/SOURCES/squid-3.3.8-active-ftp-1.patch @@ -0,0 +1,88 @@ +diff --git a/src/clients/FtpGateway.cc b/src/clients/FtpGateway.cc +index 2f09b12..7e13a29 100644 +--- a/src/clients/FtpGateway.cc ++++ b/src/clients/FtpGateway.cc +@@ -136,7 +136,10 @@ public: + + /// create a data channel acceptor and start listening. + void listenForDataChannel(const Comm::ConnectionPointer &conn); +- ++ virtual bool openListenSocket() { ++ ftpOpenListenSocket(this, 0); ++ return Comm::IsConnOpen(data.conn); ++ } + int checkAuth(const HttpHeader * req_hdr); + void checkUrlpath(); + void buildTitleUrl(); +diff --git a/src/clients/FtpGateway.cc b/src/clients/FtpGateway.cc +index 1a7b092..025df84 100644 +--- a/src/clients/FtpGateway.cc ++++ b/src/clients/FtpGateway.cc +@@ -87,6 +87,13 @@ struct GatewayFlags { + class Gateway; + typedef void (StateMethod)(Ftp::Gateway *); + ++} // namespace FTP ++ ++static void ftpOpenListenSocket(Ftp::Gateway * ftpState, int fallback); ++ ++namespace Ftp ++{ ++ + /// FTP Gateway: An FTP client that takes an HTTP request with an ftp:// URI, + /// converts it into one or more FTP commands, and then + /// converts one or more FTP responses into the final HTTP response. +diff --git a/src/clients/FtpClient.cc b/src/clients/FtpClient.cc +index a262eea..0978831 100644 +--- a/src/clients/FtpClient.cc ++++ b/src/clients/FtpClient.cc +@@ -743,7 +743,8 @@ Ftp::Client::connectDataChannel() + bool + Ftp::Client::openListenSocket() + { +- return false; ++ debugs(9, 3, HERE); ++ return false; + } + + /// creates a data channel Comm close callback +diff --git a/src/clients/FtpGateway.cc b/src/clients/FtpGateway.cc +index 025df84..dbc4809 100644 +--- a/src/clients/FtpGateway.cc ++++ b/src/clients/FtpGateway.cc +@@ -144,7 +144,8 @@ public: + /// create a data channel acceptor and start listening. + void listenForDataChannel(const Comm::ConnectionPointer &conn); + virtual bool openListenSocket() { +- ftpOpenListenSocket(this, 0); ++ debugs(9, 3, HERE); ++ ftpOpenListenSocket(this, 0); + return Comm::IsConnOpen(data.conn); + } + int checkAuth(const HttpHeader * req_hdr); +diff --git a/src/clients/FtpClient.h b/src/clients/FtpClient.h +index ef2aa98..10a511e 100644 +--- a/src/clients/FtpClient.h ++++ b/src/clients/FtpClient.h +@@ -115,7 +115,7 @@ public: + bool sendPort(); + bool sendPassive(); + void connectDataChannel(); +- bool openListenSocket(); ++ virtual bool openListenSocket(); + void switchTimeoutToDataChannel(); + + CtrlChannel ctrl; ///< FTP control channel state +diff --git a/src/clients/FtpGateway.cc b/src/clients/FtpGateway.cc +index 8754e62..0ef1171 100644 +--- a/src/clients/FtpGateway.cc ++++ b/src/clients/FtpGateway.cc +@@ -1979,7 +1979,7 @@ ftpReadEPRT(Ftp::Gateway * ftpState) + ftpSendPORT(ftpState); + return; + } +- ++ ftpState->ctrl.message = NULL; + ftpRestOrList(ftpState); + } + diff --git a/SOURCES/squid-3.3.8-active-ftp-2.patch b/SOURCES/squid-3.3.8-active-ftp-2.patch index 268c7f6..deca280 100644 --- a/SOURCES/squid-3.3.8-active-ftp-2.patch +++ b/SOURCES/squid-3.3.8-active-ftp-2.patch @@ -1,26 +1,28 @@ ---- ./src/ftp.cc 2013-07-13 15:22:32.000000000 +0200 -+++ ./src/ftp.cc 2013-12-21 15:39:23.015056228 +0100 -@@ -2816,6 +2816,7 @@ +diff --git a/src/clients/FtpGateway.cc b/src/clients/FtpGateway.cc +index 524eebb..2f09b12 100644 +--- a/src/clients/FtpGateway.cc ++++ b/src/clients/FtpGateway.cc +@@ -1834,6 +1834,7 @@ ftpOpenListenSocket(Ftp::Gateway * ftpState, int fallback) } - ftpState->listenForDataChannel(temp, ftpState->entry->url()); + ftpState->listenForDataChannel(temp); + ftpState->data.listenConn = temp; } - /// \ingroup ServerProtocolFTPInternal -@@ -2851,14 +2852,19 @@ - + static void +@@ -1869,13 +1870,19 @@ ftpSendPORT(Ftp::Gateway * ftpState) // pull out the internal IP address bytes to send in PORT command... // source them from the listen_conn->local -- + +- struct addrinfo *AI = NULL; + struct sockaddr_in addr; + socklen_t addrlen = sizeof(addr); + getsockname(ftpState->data.listenConn->fd, (struct sockaddr *) &addr, &addrlen); + unsigned char port_high = ntohs(addr.sin_port) >> 8; -+ unsigned char port_low = ntohs(addr.sin_port) & 0xff; -+ - struct addrinfo *AI = NULL; - ftpState->data.listenConn->local.GetAddrInfo(AI, AF_INET); ++ unsigned char port_low = ntohs(addr.sin_port) & 0xff; ++ ++ struct addrinfo *AI = NULL; + ftpState->data.listenConn->local.getAddrInfo(AI, AF_INET); unsigned char *addrptr = (unsigned char *) &((struct sockaddr_in*)AI->ai_addr)->sin_addr; - unsigned char *portptr = (unsigned char *) &((struct sockaddr_in*)AI->ai_addr)->sin_port; + // unsigned char *portptr = (unsigned char *) &((struct sockaddr_in*)AI->ai_addr)->sin_port; @@ -29,37 +31,36 @@ - portptr[0], portptr[1]); + port_high, port_low); ftpState->writeCommand(cbuf); - ftpState->state = SENT_PORT; + ftpState->state = Ftp::Client::SENT_PORT; -@@ -2907,15 +2913,25 @@ - ftpFail(ftpState); +@@ -1923,14 +1930,27 @@ ftpSendEPRT(Ftp::Gateway * ftpState) return; } -- + - char buf[MAX_IPSTRLEN]; -- ++ + unsigned int port; + struct sockaddr_storage addr; + socklen_t addrlen = sizeof(addr); + getsockname(ftpState->data.listenConn->fd, (struct sockaddr *) &addr, &addrlen); + if (addr.ss_family == AF_INET) { -+ struct sockaddr_in *addr4 = (struct sockaddr_in*) &addr; -+ port = ntohs( addr4->sin_port ); ++ struct sockaddr_in *addr4 = (struct sockaddr_in*) &addr; ++ port = ntohs( addr4->sin_port ); + } else { -+ struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *) &addr; -+ port = ntohs( addr6->sin6_port ); -+ } -+ -+ char buf[MAX_IPSTRLEN]; ++ struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *) &addr; ++ port = ntohs( addr6->sin6_port ); ++ } ++ ++ char buf[MAX_IPSTRLEN]; + /* RFC 2428 defines EPRT as IPv6 equivalent to IPv4 PORT command. */ /* Which can be used by EITHER protocol. */ - snprintf(cbuf, CTRL_BUFLEN, "EPRT |%d|%s|%d|\r\n", + snprintf(cbuf, CTRL_BUFLEN, "EPRT |%d|%s|%u|\r\n", - ( ftpState->data.listenConn->local.IsIPv6() ? 2 : 1 ), - ftpState->data.listenConn->local.NtoA(buf,MAX_IPSTRLEN), -- ftpState->data.listenConn->local.GetPort() ); + ( ftpState->data.listenConn->local.isIPv6() ? 2 : 1 ), + ftpState->data.listenConn->local.toStr(buf,MAX_IPSTRLEN), +- ftpState->data.listenConn->local.port() ); + port); ftpState->writeCommand(cbuf); - ftpState->state = SENT_EPRT; - + ftpState->state = Ftp::Client::SENT_EPRT; diff --git a/SOURCES/squid-3.3.8-conf-setrlimit.patch b/SOURCES/squid-3.3.8-conf-setrlimit.patch deleted file mode 100644 index 95b79ad..0000000 --- a/SOURCES/squid-3.3.8-conf-setrlimit.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index 1d9df60..76ca114 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -2705,6 +2705,7 @@ AC_ARG_WITH(maxfd,, - case ${withval} in - [[0-9]]*) - squid_filedescriptors_num=$withval -+ AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)]) - ;; - *) - AC_MSG_ERROR(--with-maxfd expects a numeric argument) -@@ -2719,6 +2720,7 @@ AC_ARG_WITH(filedescriptors, - case ${withval} in - [[0-9]]*) - squid_filedescriptors_num=$withval -+ AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)]) - ;; - *) - AC_MSG_ERROR(--with-filedescriptors expects a numeric argument) -@@ -2727,10 +2729,9 @@ AC_ARG_WITH(filedescriptors, - ]) - - SQUID_CHECK_DEFAULT_FD_SETSIZE --if test "x$squid_filedescriptors_num" = "x"; then -- SQUID_CHECK_MAXFD --else -- AC_MSG_NOTICE([forcing use of $squid_filedescriptors_num filedescriptors (user-forced)]) -+SQUID_CHECK_MAXFD -+if test "x$squid_filedescriptors_num" != "x"; then -+ AC_MSG_NOTICE([Default number of fieldescriptors: $squid_filedescriptors_num]) - fi - if test "$squid_filedescriptors_num" -lt 512 ; then - AC_MSG_WARN([$squid_filedescriptors_num may not be enough filedescriptors if your]) ---- a/configure -+++ b/configure -@@ -29326,6 +29326,7 @@ for ac_func in \ - setgroups \ - setpgrp \ - setsid \ -+ setrlimit \ - sigaction \ - snprintf \ - socketpair \ diff --git a/SOURCES/squid-3.3.8-fd-leaks.patch b/SOURCES/squid-3.3.8-fd-leaks.patch deleted file mode 100644 index dc28954..0000000 --- a/SOURCES/squid-3.3.8-fd-leaks.patch +++ /dev/null @@ -1,92 +0,0 @@ -diff -Naurp squid-3.3.8.orig/src/ipc/TypedMsgHdr.cc squid-3.3.8/src/ipc/TypedMsgHdr.cc ---- squid-3.3.8.orig/src/ipc/TypedMsgHdr.cc 2013-07-13 15:25:14.000000000 +0200 -+++ squid-3.3.8/src/ipc/TypedMsgHdr.cc 2015-04-20 14:28:32.971000390 +0200 -@@ -167,10 +167,20 @@ Ipc::TypedMsgHdr::putRaw(const void *raw - } - } - -+bool -+Ipc::TypedMsgHdr::hasFd() const -+{ -+ struct cmsghdr *cmsg = CMSG_FIRSTHDR(this); -+ return cmsg && -+ cmsg->cmsg_level == SOL_SOCKET && -+ cmsg->cmsg_type == SCM_RIGHTS; -+} -+ - void - Ipc::TypedMsgHdr::putFd(int fd) - { - Must(fd >= 0); -+ Must(!hasFd()); - allocControl(); - - const int fdCount = 1; -@@ -183,12 +193,15 @@ Ipc::TypedMsgHdr::putFd(int fd) - int *fdStore = reinterpret_cast(CMSG_DATA(cmsg)); - memcpy(fdStore, &fd, fdCount * sizeof(int)); - msg_controllen = cmsg->cmsg_len; -+ -+ Must(hasFd()); - } - - int - Ipc::TypedMsgHdr::getFd() const - { - Must(msg_control && msg_controllen); -+ Must(hasFd()); - - struct cmsghdr *cmsg = CMSG_FIRSTHDR(this); - Must(cmsg->cmsg_level == SOL_SOCKET); -diff -Naurp squid-3.3.8.orig/src/ipc/TypedMsgHdr.h squid-3.3.8/src/ipc/TypedMsgHdr.h ---- squid-3.3.8.orig/src/ipc/TypedMsgHdr.h 2013-07-13 15:25:14.000000000 +0200 -+++ squid-3.3.8/src/ipc/TypedMsgHdr.h 2015-04-20 14:12:57.509303004 +0200 -@@ -59,8 +59,8 @@ public: - - /* access to a "file" descriptor that can be passed between processes */ - void putFd(int aFd); ///< stores descriptor -- int getFd() const; ///< returns descriptor -- -+ int getFd() const; ///< returns stored descriptor -+ bool hasFd() const; ///< whether the message has a descriptor stored - /* raw, type-independent access for I/O */ - void prepForReading(); ///< reset and provide all buffers - char *raw() { return reinterpret_cast(this); } -diff -Naurp squid-3.3.8.orig/src/snmp/Inquirer.cc squid-3.3.8/src/snmp/Inquirer.cc ---- squid-3.3.8.orig/src/snmp/Inquirer.cc 2013-07-13 15:25:14.000000000 +0200 -+++ squid-3.3.8/src/snmp/Inquirer.cc 2015-04-20 14:15:12.324970907 +0200 -@@ -28,6 +28,10 @@ Snmp::Inquirer::Inquirer(const Request& - closer = asyncCall(49, 5, "Snmp::Inquirer::noteCommClosed", - CommCbMemFunT(this, &Inquirer::noteCommClosed)); - comm_add_close_handler(conn->fd, closer); -+ -+ // forget client FD to avoid sending it to strands that may forget to close -+ if (Request *snmpRequest = dynamic_cast(request.getRaw())) -+ snmpRequest->fd = -1; - } - - /// closes our copy of the client connection socket -diff -Naurp squid-3.3.8.orig/src/snmp/Request.cc squid-3.3.8/src/snmp/Request.cc ---- squid-3.3.8.orig/src/snmp/Request.cc 2013-07-13 15:25:14.000000000 +0200 -+++ squid-3.3.8/src/snmp/Request.cc 2015-04-20 14:21:16.676074181 +0200 -@@ -33,7 +33,8 @@ Snmp::Request::Request(const Ipc::TypedM - session.unpack(msg); - msg.getPod(address); - -- fd = msg.getFd(); -+ // Requests from strands have FDs. Requests from Coordinator do not. -+ fd = msg.hasFd() ? msg.getFd() : -1; - } - - void -@@ -46,7 +47,9 @@ Snmp::Request::pack(Ipc::TypedMsgHdr& ms - session.pack(msg); - msg.putPod(address); - -- msg.putFd(fd); -+ // Requests sent to Coordinator have FDs. Requests sent to strands do not. -+ if (fd >= 0) -+ msg.putFd(fd); - } - - Ipc::Request::Pointer diff --git a/SOURCES/squid-3.3.8-incorrect-cert.patch b/SOURCES/squid-3.3.8-incorrect-cert.patch deleted file mode 100644 index 76dfc9f..0000000 --- a/SOURCES/squid-3.3.8-incorrect-cert.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- a/src/ssl/support.cc -+++ b/src/ssl/support.cc -@@ -208,7 +208,13 @@ static int check_domain( void *check_data, ASN1_STRING *cn_data) - if (cn_data->length > (int)sizeof(cn) - 1) { - return 1; //if does not fit our buffer just ignore - } -- memcpy(cn, cn_data->data, cn_data->length); -+ char *s = reinterpret_cast(cn_data->data); -+ char *d = cn; -+ for (int i = 0; i < cn_data->length; ++i, ++d, ++s){ -+ if (*s == '\0') -+ return 1; // always a domain mismatch. contains 0x00 -+ *d = *s; -+ } - cn[cn_data->length] = '\0'; - debugs(83, 4, "Verifying server domain " << server << " to certificate name/subjectAltName " << cn); - return matchDomainName(server, cn[0] == '*' ? cn + 1 : cn); diff --git a/SOURCES/squid-3.3.8-incorrect-ssl.patch b/SOURCES/squid-3.3.8-incorrect-ssl.patch deleted file mode 100644 index 0fe4463..0000000 --- a/SOURCES/squid-3.3.8-incorrect-ssl.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff -Naurp squid-3.3.8.orig/src/client_side.cc squid-3.3.8/src/client_side.cc ---- squid-3.3.8.orig/src/client_side.cc 2015-03-26 12:46:28.000000000 +0100 -+++ squid-3.3.8/src/client_side.cc 2015-03-26 11:11:17.000000000 +0100 -@@ -3859,8 +3859,18 @@ ConnStateData::getSslContextDone(SSL_CTX - // Try to add generated ssl context to storage. - if (port->generateHostCertificates && isNew) { - -- if (signAlgorithm == Ssl::algSignTrusted) -+ if (signAlgorithm == Ssl::algSignTrusted) { -+ // Add signing certificate to the certificates chain -+ X509 *cert = port->signingCert.get(); -+ 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(33, DBG_IMPORTANT, "WARNING: can not add signing certificate to SSL context chain: " << ERR_error_string(ssl_error, NULL)); -+ } - Ssl::addChainToSslContext(sslContext, port->certsToChain.get()); -+ } - //else it is self-signed or untrusted do not attrach any certificate - - Ssl::LocalContextStorage & ssl_ctx_cache(Ssl::TheGlobalContextStorage.getLocalStorage(port->s)); -diff -Naurp squid-3.3.8.orig/src/ssl/support.cc squid-3.3.8/src/ssl/support.cc ---- squid-3.3.8.orig/src/ssl/support.cc 2013-07-13 15:25:14.000000000 +0200 -+++ squid-3.3.8/src/ssl/support.cc 2015-03-26 12:44:15.104570937 +0100 -@@ -1488,11 +1488,7 @@ static X509 * readSslX509CertificatesCha - 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 -+ // and add to the chain any other certificate exist in 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"); diff --git a/SOURCES/squid-3.3.8-le-looping.patch b/SOURCES/squid-3.3.8-le-looping.patch deleted file mode 100644 index c7eeb96..0000000 --- a/SOURCES/squid-3.3.8-le-looping.patch +++ /dev/null @@ -1,12 +0,0 @@ -=== modified file 'lib/base64.c' ---- lib/base64.c 2015-01-13 09:13:49 +0000 -+++ lib/base64.c 2015-09-21 11:43:00 +0000 -@@ -149,7 +149,7 @@ - int char_count = 0; - int out_cnt = 0; - -- if (!data || !*data || !result || result_size < 1 || data_size < 1) -+ if (!data || !result || result_size < 1 || data_size < 1) - return 0; - - if (!base64_initialized) diff --git a/SOURCES/squid-3.3.8-segfault-reboot.patch b/SOURCES/squid-3.3.8-segfault-reboot.patch deleted file mode 100644 index 8ca47bf..0000000 --- a/SOURCES/squid-3.3.8-segfault-reboot.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/src/comm.cc -+++ b/src/comm.cc -@@ -2001,7 +2001,7 @@ DeferredReadManager::popHead(CbDataListContainer &deferredReads) - // 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 (!fd_table || !Comm::IsConnOpen(read.theRead.conn)) { - if (read.closer != NULL) { - read.closer->cancel("Connection closed before."); - read.closer = NULL; diff --git a/SOURCES/squid-3.3.8-vary-headers.patch b/SOURCES/squid-3.3.8-vary-headers.patch deleted file mode 100644 index fdada52..0000000 --- a/SOURCES/squid-3.3.8-vary-headers.patch +++ /dev/null @@ -1,63 +0,0 @@ -diff -Naurp squid-3.3.8.orig/src/client_side_reply.cc squid-3.3.8/src/client_side_reply.cc ---- squid-3.3.8.orig/src/client_side_reply.cc 2015-04-22 13:38:31.000000000 +0200 -+++ squid-3.3.8/src/client_side_reply.cc 2015-04-22 13:42:29.332950760 +0200 -@@ -506,6 +506,7 @@ clientReplyContext::cacheHit(StoreIOBuff - - if (strcmp(e->mem_obj->url, urlCanonical(r)) != 0) { - debugs(33, DBG_IMPORTANT, "clientProcessHit: URL mismatch, '" << e->mem_obj->url << "' != '" << urlCanonical(r) << "'"); -+ http->logType = LOG_TCP_MISS; // we lack a more precise LOG_*_MISS code - processMiss(); - return; - } -@@ -537,6 +538,7 @@ clientReplyContext::cacheHit(StoreIOBuff - case VARY_CANCEL: - /* varyEvaluateMatch found a object loop. Process as miss */ - debugs(88, DBG_IMPORTANT, "clientProcessHit: Vary object loop!"); -+ http->logType = LOG_TCP_MISS; // we lack a more precise LOG_*_MISS code - processMiss(); - return; - } -diff -Naurp squid-3.3.8.orig/src/MemStore.cc squid-3.3.8/src/MemStore.cc ---- squid-3.3.8.orig/src/MemStore.cc 2013-07-13 15:25:14.000000000 +0200 -+++ squid-3.3.8/src/MemStore.cc 2015-04-22 13:25:35.879901955 +0200 -@@ -310,6 +310,12 @@ MemStore::considerKeeping(StoreEntry &e) - return; - } - -+ if (e.mem_obj->vary_headers) { -+ // XXX: We must store/load SerialisedMetaData to cache Vary in RAM -+ debugs(20, 5, "Vary not yet supported: " << e.mem_obj->vary_headers); -+ return; -+ } -+ - keep(e); // may still fail - } - -diff -Naurp squid-3.3.8.orig/src/store.cc squid-3.3.8/src/store.cc ---- squid-3.3.8.orig/src/store.cc 2013-07-13 15:25:14.000000000 +0200 -+++ squid-3.3.8/src/store.cc 2015-04-22 13:43:44.675657018 +0200 -@@ -761,7 +761,7 @@ StoreEntry::setPublicKey() - StoreEntry *pe = storeCreateEntry(mem_obj->url, mem_obj->log_url, request->flags, request->method); - /* We are allowed to do this typecast */ - HttpReply *rep = new HttpReply; -- rep->setHeaders(HTTP_OK, "Internal marker object", "x-squid-internal/vary", -1, -1, squid_curtime + 100000); -+ rep->setHeaders(HTTP_OK, "Internal marker object", "x-squid-internal/vary", 0, -1, squid_curtime + 100000); - vary = mem_obj->getReply()->header.getList(HDR_VARY); - - if (vary.size()) { -@@ -780,12 +780,13 @@ StoreEntry::setPublicKey() - } - - #endif -- pe->replaceHttpReply(rep); -- -+ pe->replaceHttpReply(rep, false); // no write until key is public - pe->timestampsSet(); - - pe->makePublic(); - -+ pe->startWriting(); // after makePublic() -+ - pe->complete(); - - pe->unlock(); diff --git a/SOURCES/squid-3.3.8.tar.xz.asc b/SOURCES/squid-3.3.8.tar.xz.asc deleted file mode 100644 index 99883eb..0000000 --- a/SOURCES/squid-3.3.8.tar.xz.asc +++ /dev/null @@ -1,20 +0,0 @@ -File: squid-3.3.8.tar.xz -Date: Sat Jul 13 13:51:57 UTC 2013 -Size: 2182240 -MD5 : 6a8fa0075f2fbdd899ac4c9d95fe67cb -SHA1: 39472c7f93e14fb55a65d1730d6594407b7de9f6 -Key : 0xFF5CF463 - fingerprint = EA31 CC5E 9488 E516 8D2D CC5E B268 E706 FF5C F463 - keyring = http://www.squid-cache.org/pgp.asc - keyserver = subkeys.pgp.net ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.12 (GNU/Linux) - -iQEcBAABAgAGBQJR4V+DAAoJELJo5wb/XPRjiQ8H/RYpMtqppi4BeCYNGyDDJ2up -4jQidizhmNaTnfxZi1vnDCQcamWr4yD6dAhUOPR50vaogbpFhYN6C6KjSiYbIdhp -w/nFgPZUQY7n9A7t/sHKLHOSgtPg17Vhtky0FXFfwArvnSC+6U1J+JTC4Dr3mWXU -rhMmEMIWtdTZF93pg7KeM0osZnc6qySmnc04ow6rE1yvBc2Ky4H/ljOZhXO4PzCP -uVjmAQKvzsd+ZMmksxMWHm9cPnkw0YPfhiruk9KG95xAz1cLWcoaE0fAAAsgxN8u -0e5YR4NXLsNvGm50cGsWNG7NVTMlV87wIFTPZMkGrV4Xo2DqCSP38VUe3Wrpfxs= -=gkZw ------END PGP SIGNATURE----- diff --git a/SOURCES/squid-3.5.10-ssl-helper.patch b/SOURCES/squid-3.5.10-ssl-helper.patch new file mode 100644 index 0000000..e20de4c --- /dev/null +++ b/SOURCES/squid-3.5.10-ssl-helper.patch @@ -0,0 +1,73 @@ +diff --git a/configure b/configure +index 752a86d..fa0f0e3 100755 +--- a/configure ++++ b/configure +@@ -40311,7 +40311,7 @@ $as_echo "$as_me: BUILD Tools C++ FLAGS: $BUILDCXXFLAGS" >&6;} + + rm -f core + +-ac_config_files="$ac_config_files Makefile compat/Makefile lib/Makefile lib/ntlmauth/Makefile lib/libTrie/Makefile lib/libTrie/test/Makefile lib/profiler/Makefile lib/rfcnb/Makefile lib/smblib/Makefile lib/snmplib/Makefile scripts/Makefile src/Makefile src/anyp/Makefile src/ftp/Makefile src/base/Makefile src/acl/Makefile src/clients/Makefile src/servers/Makefile src/fs/Makefile src/repl/Makefile src/auth/Makefile src/auth/basic/Makefile src/auth/digest/Makefile src/auth/negotiate/Makefile src/auth/ntlm/Makefile src/adaptation/Makefile src/adaptation/icap/Makefile src/adaptation/ecap/Makefile src/comm/Makefile src/esi/Makefile src/eui/Makefile src/format/Makefile src/helper/Makefile src/http/Makefile src/icmp/Makefile src/ident/Makefile src/ip/Makefile src/log/Makefile src/ipc/Makefile src/ssl/Makefile src/mgr/Makefile src/parser/Makefile src/snmp/Makefile contrib/Makefile icons/Makefile errors/Makefile test-suite/Makefile doc/Makefile doc/manuals/Makefile doc/release-notes/Makefile helpers/Makefile helpers/basic_auth/Makefile helpers/basic_auth/DB/Makefile helpers/basic_auth/fake/Makefile helpers/basic_auth/getpwnam/Makefile helpers/basic_auth/LDAP/Makefile helpers/basic_auth/MSNT-multi-domain/Makefile helpers/basic_auth/NCSA/Makefile helpers/basic_auth/NIS/Makefile helpers/basic_auth/PAM/Makefile helpers/basic_auth/POP3/Makefile helpers/basic_auth/RADIUS/Makefile helpers/basic_auth/SASL/Makefile helpers/basic_auth/SMB/Makefile helpers/basic_auth/SMB_LM/Makefile helpers/basic_auth/SSPI/Makefile helpers/digest_auth/Makefile helpers/digest_auth/eDirectory/Makefile helpers/digest_auth/file/Makefile helpers/digest_auth/LDAP/Makefile helpers/ntlm_auth/Makefile helpers/ntlm_auth/fake/Makefile helpers/ntlm_auth/smb_lm/Makefile helpers/ntlm_auth/SSPI/Makefile helpers/negotiate_auth/Makefile helpers/negotiate_auth/kerberos/Makefile helpers/negotiate_auth/SSPI/Makefile helpers/negotiate_auth/wrapper/Makefile helpers/external_acl/Makefile helpers/external_acl/AD_group/Makefile helpers/external_acl/delayer/Makefile helpers/external_acl/eDirectory_userip/Makefile helpers/external_acl/file_userip/Makefile helpers/external_acl/kerberos_ldap_group/Makefile helpers/external_acl/LDAP_group/Makefile helpers/external_acl/LM_group/Makefile helpers/external_acl/session/Makefile helpers/external_acl/SQL_session/Makefile helpers/external_acl/unix_group/Makefile helpers/external_acl/wbinfo_group/Makefile helpers/external_acl/time_quota/Makefile helpers/log_daemon/Makefile helpers/log_daemon/DB/Makefile helpers/log_daemon/file/Makefile helpers/url_rewrite/Makefile helpers/url_rewrite/fake/Makefile helpers/ssl/Makefile helpers/storeid_rewrite/Makefile helpers/storeid_rewrite/file/Makefile tools/Makefile tools/purge/Makefile tools/squidclient/Makefile tools/systemd/Makefile tools/sysvinit/Makefile" ++ac_config_files="$ac_config_files Makefile compat/Makefile lib/Makefile lib/ntlmauth/Makefile lib/libTrie/Makefile lib/libTrie/test/Makefile lib/profiler/Makefile lib/rfcnb/Makefile lib/smblib/Makefile lib/snmplib/Makefile scripts/Makefile src/Makefile src/anyp/Makefile src/ftp/Makefile src/base/Makefile src/acl/Makefile src/clients/Makefile src/servers/Makefile src/fs/Makefile src/repl/Makefile src/auth/Makefile src/auth/basic/Makefile src/auth/digest/Makefile src/auth/negotiate/Makefile src/auth/ntlm/Makefile src/adaptation/Makefile src/adaptation/icap/Makefile src/adaptation/ecap/Makefile src/comm/Makefile src/esi/Makefile src/eui/Makefile src/format/Makefile src/helper/Makefile src/http/Makefile src/icmp/Makefile src/ident/Makefile src/ip/Makefile src/log/Makefile src/ipc/Makefile src/ssl/Makefile src/mgr/Makefile src/parser/Makefile src/snmp/Makefile contrib/Makefile icons/Makefile errors/Makefile test-suite/Makefile doc/Makefile doc/manuals/Makefile doc/release-notes/Makefile helpers/Makefile helpers/basic_auth/Makefile helpers/basic_auth/DB/Makefile helpers/basic_auth/fake/Makefile helpers/basic_auth/getpwnam/Makefile helpers/basic_auth/LDAP/Makefile helpers/basic_auth/MSNT-multi-domain/Makefile helpers/basic_auth/NCSA/Makefile helpers/basic_auth/NIS/Makefile helpers/basic_auth/PAM/Makefile helpers/basic_auth/POP3/Makefile helpers/basic_auth/RADIUS/Makefile helpers/basic_auth/SASL/Makefile helpers/basic_auth/SMB/Makefile helpers/basic_auth/SMB_LM/Makefile helpers/basic_auth/SSPI/Makefile helpers/digest_auth/Makefile helpers/digest_auth/eDirectory/Makefile helpers/digest_auth/file/Makefile helpers/digest_auth/LDAP/Makefile helpers/ntlm_auth/Makefile helpers/ntlm_auth/fake/Makefile helpers/ntlm_auth/smb_lm/Makefile helpers/ntlm_auth/SSPI/Makefile helpers/negotiate_auth/Makefile helpers/negotiate_auth/kerberos/Makefile helpers/negotiate_auth/SSPI/Makefile helpers/negotiate_auth/wrapper/Makefile helpers/external_acl/Makefile helpers/external_acl/AD_group/Makefile helpers/external_acl/delayer/Makefile helpers/external_acl/eDirectory_userip/Makefile helpers/external_acl/file_userip/Makefile helpers/external_acl/kerberos_ldap_group/Makefile helpers/external_acl/LDAP_group/Makefile helpers/external_acl/LM_group/Makefile helpers/external_acl/session/Makefile helpers/external_acl/SQL_session/Makefile helpers/external_acl/unix_group/Makefile helpers/external_acl/wbinfo_group/Makefile helpers/external_acl/time_quota/Makefile helpers/log_daemon/Makefile helpers/log_daemon/DB/Makefile helpers/log_daemon/file/Makefile helpers/url_rewrite/Makefile helpers/url_rewrite/fake/Makefile helpers/storeid_rewrite/Makefile helpers/storeid_rewrite/file/Makefile tools/Makefile tools/purge/Makefile tools/squidclient/Makefile tools/systemd/Makefile tools/sysvinit/Makefile" + + + # must configure libltdl subdir unconditionally for "make distcheck" to work +@@ -41710,7 +41710,6 @@ do + "helpers/log_daemon/file/Makefile") CONFIG_FILES="$CONFIG_FILES helpers/log_daemon/file/Makefile" ;; + "helpers/url_rewrite/Makefile") CONFIG_FILES="$CONFIG_FILES helpers/url_rewrite/Makefile" ;; + "helpers/url_rewrite/fake/Makefile") CONFIG_FILES="$CONFIG_FILES helpers/url_rewrite/fake/Makefile" ;; +- "helpers/ssl/Makefile") CONFIG_FILES="$CONFIG_FILES helpers/ssl/Makefile" ;; + "helpers/storeid_rewrite/Makefile") CONFIG_FILES="$CONFIG_FILES helpers/storeid_rewrite/Makefile" ;; + "helpers/storeid_rewrite/file/Makefile") CONFIG_FILES="$CONFIG_FILES helpers/storeid_rewrite/file/Makefile" ;; + "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; +diff --git a/configure.ac b/configure.ac +index 6054369..0728672 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3885,7 +3885,6 @@ AC_CONFIG_FILES([ + helpers/log_daemon/file/Makefile + helpers/url_rewrite/Makefile + helpers/url_rewrite/fake/Makefile +- helpers/ssl/Makefile + helpers/storeid_rewrite/Makefile + helpers/storeid_rewrite/file/Makefile + tools/Makefile +diff --git a/helpers/Makefile.am b/helpers/Makefile.am +index 043ec10..d835535 100644 +--- a/helpers/Makefile.am ++++ b/helpers/Makefile.am +@@ -15,7 +15,6 @@ DIST_SUBDIRS = \ + negotiate_auth \ + ntlm_auth \ + url_rewrite \ +- ssl \ + storeid_rewrite + + SUBDIRS = \ +@@ -31,7 +30,4 @@ if ENABLE_AUTH_NTLM + SUBDIRS += ntlm_auth + endif + +-if ENABLE_SSL +-SUBDIRS += ssl +-endif + +diff --git a/helpers/Makefile.in b/helpers/Makefile.in +index cf47dd2..9c53427 100644 +--- a/helpers/Makefile.in ++++ b/helpers/Makefile.in +@@ -88,7 +88,6 @@ POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ + @ENABLE_AUTH_NTLM_TRUE@am__append_1 = ntlm_auth +-@ENABLE_SSL_TRUE@am__append_2 = ssl + subdir = helpers + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/acinclude/ax_with_prog.m4 \ +@@ -473,7 +472,6 @@ DIST_SUBDIRS = \ + negotiate_auth \ + ntlm_auth \ + url_rewrite \ +- ssl \ + storeid_rewrite + + SUBDIRS = basic_auth digest_auth external_acl log_daemon \ diff --git a/SOURCES/squid-3.5.20-conf-casecmp.patch b/SOURCES/squid-3.5.20-conf-casecmp.patch new file mode 100644 index 0000000..42d6c31 --- /dev/null +++ b/SOURCES/squid-3.5.20-conf-casecmp.patch @@ -0,0 +1,583 @@ +diff --git a/src/acl/Ip.cc b/src/acl/Ip.cc +index 4aa2c90..99b0bf9 100644 +--- a/src/acl/Ip.cc ++++ b/src/acl/Ip.cc +@@ -221,7 +221,7 @@ acl_ip_data::FactoryParse(const char *t) + debugs(28, 5, "aclIpParseIpData: " << t); + + /* Special ACL RHS "all" matches entire Internet */ +- if (strcmp(t, "all") == 0) { ++ if (strcasecmp(t, "all") == 0) { + debugs(28, 9, "aclIpParseIpData: magic 'all' found."); + q->addr1.setAnyAddr(); + q->addr2.setEmpty(); +@@ -231,8 +231,8 @@ acl_ip_data::FactoryParse(const char *t) + + /* Detect some old broken strings equivalent to 'all'. + * treat them nicely. But be loud until its fixed. */ +- if (strcmp(t, "0/0") == 0 || strcmp(t, "0.0.0.0/0") == 0 || strcmp(t, "0.0.0.0/0.0.0.0") == 0 || +- strcmp(t, "0.0.0.0-255.255.255.255") == 0 || strcmp(t, "0.0.0.0-0.0.0.0/0") == 0) { ++ if (strcasecmp(t, "0/0") == 0 || strcasecmp(t, "0.0.0.0/0") == 0 || strcasecmp(t, "0.0.0.0/0.0.0.0") == 0 || ++ strcasecmp(t, "0.0.0.0-255.255.255.255") == 0 || strcasecmp(t, "0.0.0.0-0.0.0.0/0") == 0) { + + debugs(28,DBG_CRITICAL, "ERROR: '" << t << "' needs to be replaced by the term 'all'."); + debugs(28,DBG_CRITICAL, "SECURITY NOTICE: Overriding config setting. Using 'all' instead."); +@@ -245,14 +245,14 @@ acl_ip_data::FactoryParse(const char *t) + /* Special ACL RHS "ipv4" matches IPv4 Internet + * A nod to IANA; we include the entire class space in case + * they manage to find a way to recover and use it */ +- if (strcmp(t, "ipv4") == 0) { ++ if (strcasecmp(t, "ipv4") == 0) { + q->mask.setNoAddr(); + q->mask.applyMask(0, AF_INET); + return q; + } + + /* Special ACL RHS "ipv6" matches IPv6-Unicast Internet */ +- if (strcmp(t, "ipv6") == 0) { ++ if (strcasecmp(t, "ipv6") == 0) { + debugs(28, 9, "aclIpParseIpData: magic 'ipv6' found."); + r = q; // save head of the list for result. + +diff --git a/src/adaptation/ServiceConfig.cc b/src/adaptation/ServiceConfig.cc +index cbae4d4..127b591 100644 +--- a/src/adaptation/ServiceConfig.cc ++++ b/src/adaptation/ServiceConfig.cc +@@ -55,10 +55,10 @@ Adaptation::ServiceConfig::parseVectPoint(const char *service_configConfig) cons + if (q) + t = q + 1; + +- if (!strcmp(t, "precache")) ++ if (!strcasecmp(t, "precache")) + return Adaptation::pointPreCache; + +- if (!strcmp(t, "postcache")) ++ if (!strcasecmp(t, "postcache")) + return Adaptation::pointPostCache; + + return Adaptation::pointNone; +diff --git a/src/auth/Config.cc b/src/auth/Config.cc +index d8129c7..a02ccac 100644 +--- a/src/auth/Config.cc ++++ b/src/auth/Config.cc +@@ -73,7 +73,7 @@ Auth::Config::registerWithCacheManager(void) + void + Auth::Config::parse(Auth::Config * scheme, int n_configured, char *param_str) + { +- if (strcmp(param_str, "program") == 0) { ++ if (strcasecmp(param_str, "program") == 0) { + if (authenticateProgram) + wordlistDestroy(&authenticateProgram); + +@@ -81,7 +81,7 @@ Auth::Config::parse(Auth::Config * scheme, int n_configured, char *param_str) + + requirePathnameExists("Authentication helper program", authenticateProgram->key); + +- } else if (strcmp(param_str, "realm") == 0) { ++ } else if (strcasecmp(param_str, "realm") == 0) { + realm.clear(); + + char *token = ConfigParser::NextQuotedOrToEol(); +@@ -97,10 +97,10 @@ Auth::Config::parse(Auth::Config * scheme, int n_configured, char *param_str) + + realm = token; + +- } else if (strcmp(param_str, "children") == 0) { ++ } else if (strcasecmp(param_str, "children") == 0) { + authenticateChildren.parseConfig(); + +- } else if (strcmp(param_str, "key_extras") == 0) { ++ } else if (strcasecmp(param_str, "key_extras") == 0) { + keyExtrasLine = ConfigParser::NextQuotedToken(); + Format::Format *nlf = new ::Format::Format(scheme->type()); + if (!nlf->parse(keyExtrasLine.termedBuf())) { +diff --git a/src/auth/basic/Config.cc b/src/auth/basic/Config.cc +index ae84bed..fb800d3 100644 +--- a/src/auth/basic/Config.cc ++++ b/src/auth/basic/Config.cc +@@ -133,11 +133,11 @@ Auth::Basic::Config::Config() : + void + Auth::Basic::Config::parse(Auth::Config * scheme, int n_configured, char *param_str) + { +- if (strcmp(param_str, "credentialsttl") == 0) { ++ if (strcasecmp(param_str, "credentialsttl") == 0) { + parse_time_t(&credentialsTTL); +- } else if (strcmp(param_str, "casesensitive") == 0) { ++ } else if (strcasecmp(param_str, "casesensitive") == 0) { + parse_onoff(&casesensitive); +- } else if (strcmp(param_str, "utf8") == 0) { ++ } else if (strcasecmp(param_str, "utf8") == 0) { + parse_onoff(&utf8); + } else + Auth::Config::parse(scheme, n_configured, param_str); +diff --git a/src/auth/digest/Config.cc b/src/auth/digest/Config.cc +index 2d24969..a91225b 100644 +--- a/src/auth/digest/Config.cc ++++ b/src/auth/digest/Config.cc +@@ -602,26 +602,26 @@ Auth::Digest::Config::Config() : + void + Auth::Digest::Config::parse(Auth::Config * scheme, int n_configured, char *param_str) + { +- if (strcmp(param_str, "program") == 0) { ++ if (strcasecmp(param_str, "program") == 0) { + if (authenticateProgram) + wordlistDestroy(&authenticateProgram); + + parse_wordlist(&authenticateProgram); + + requirePathnameExists("auth_param digest program", authenticateProgram->key); +- } else if (strcmp(param_str, "nonce_garbage_interval") == 0) { ++ } else if (strcasecmp(param_str, "nonce_garbage_interval") == 0) { + parse_time_t(&nonceGCInterval); +- } else if (strcmp(param_str, "nonce_max_duration") == 0) { ++ } else if (strcasecmp(param_str, "nonce_max_duration") == 0) { + parse_time_t(&noncemaxduration); +- } else if (strcmp(param_str, "nonce_max_count") == 0) { ++ } else if (strcasecmp(param_str, "nonce_max_count") == 0) { + parse_int((int *) &noncemaxuses); +- } else if (strcmp(param_str, "nonce_strictness") == 0) { ++ } else if (strcasecmp(param_str, "nonce_strictness") == 0) { + parse_onoff(&NonceStrictness); +- } else if (strcmp(param_str, "check_nonce_count") == 0) { ++ } else if (strcasecmp(param_str, "check_nonce_count") == 0) { + parse_onoff(&CheckNonceCount); +- } else if (strcmp(param_str, "post_workaround") == 0) { ++ } else if (strcasecmp(param_str, "post_workaround") == 0) { + parse_onoff(&PostWorkaround); +- } else if (strcmp(param_str, "utf8") == 0) { ++ } else if (strcasecmp(param_str, "utf8") == 0) { + parse_onoff(&utf8); + } else + Auth::Config::parse(scheme, n_configured, param_str); +diff --git a/src/auth/negotiate/Config.cc b/src/auth/negotiate/Config.cc +index 0f5b462..e46b98f 100644 +--- a/src/auth/negotiate/Config.cc ++++ b/src/auth/negotiate/Config.cc +@@ -97,14 +97,14 @@ Auth::Negotiate::Config::Config() : keep_alive(1) + void + Auth::Negotiate::Config::parse(Auth::Config * scheme, int n_configured, char *param_str) + { +- if (strcmp(param_str, "program") == 0) { ++ if (strcasecmp(param_str, "program") == 0) { + if (authenticateProgram) + wordlistDestroy(&authenticateProgram); + + parse_wordlist(&authenticateProgram); + + requirePathnameExists("auth_param negotiate program", authenticateProgram->key); +- } else if (strcmp(param_str, "keep_alive") == 0) { ++ } else if (strcasecmp(param_str, "keep_alive") == 0) { + parse_onoff(&keep_alive); + } else + Auth::Config::parse(scheme, n_configured, param_str); +diff --git a/src/auth/ntlm/Config.cc b/src/auth/ntlm/Config.cc +index 135e927..27d7904 100644 +--- a/src/auth/ntlm/Config.cc ++++ b/src/auth/ntlm/Config.cc +@@ -89,14 +89,14 @@ Auth::Ntlm::Config::Config() : keep_alive(1) + void + Auth::Ntlm::Config::parse(Auth::Config * scheme, int n_configured, char *param_str) + { +- if (strcmp(param_str, "program") == 0) { ++ if (strcasecmp(param_str, "program") == 0) { + if (authenticateProgram) + wordlistDestroy(&authenticateProgram); + + parse_wordlist(&authenticateProgram); + + requirePathnameExists("auth_param ntlm program", authenticateProgram->key); +- } else if (strcmp(param_str, "keep_alive") == 0) { ++ } else if (strcasecmp(param_str, "keep_alive") == 0) { + parse_onoff(&keep_alive); + } else + Auth::Config::parse(scheme, n_configured, param_str); +diff --git a/src/cache_cf.cc b/src/cache_cf.cc +index fedabc0..8886b68 100644 +--- a/src/cache_cf.cc ++++ b/src/cache_cf.cc +@@ -2097,27 +2097,27 @@ parse_peer(CachePeer ** head) + p->connection_auth = 2; /* auto */ + + while ((token = ConfigParser::NextToken())) { +- if (!strcmp(token, "proxy-only")) { ++ if (!strcasecmp(token, "proxy-only")) { + p->options.proxy_only = true; +- } else if (!strcmp(token, "no-query")) { ++ } else if (!strcasecmp(token, "no-query")) { + p->options.no_query = true; +- } else if (!strcmp(token, "background-ping")) { ++ } else if (!strcasecmp(token, "background-ping")) { + p->options.background_ping = true; +- } else if (!strcmp(token, "no-digest")) { ++ } else if (!strcasecmp(token, "no-digest")) { + p->options.no_digest = true; +- } else if (!strcmp(token, "no-tproxy")) { ++ } else if (!strcasecmp(token, "no-tproxy")) { + p->options.no_tproxy = true; +- } else if (!strcmp(token, "multicast-responder")) { ++ } else if (!strcasecmp(token, "multicast-responder")) { + p->options.mcast_responder = true; + #if PEER_MULTICAST_SIBLINGS +- } else if (!strcmp(token, "multicast-siblings")) { ++ } else if (!strcasecmp(token, "multicast-siblings")) { + p->options.mcast_siblings = true; + #endif +- } else if (!strncmp(token, "weight=", 7)) { ++ } else if (!strncasecmp(token, "weight=", 7)) { + p->weight = xatoi(token + 7); +- } else if (!strncmp(token, "basetime=", 9)) { ++ } else if (!strncasecmp(token, "basetime=", 9)) { + p->basetime = xatoi(token + 9); +- } else if (!strcmp(token, "closest-only")) { ++ } else if (!strcasecmp(token, "closest-only")) { + p->options.closest_only = true; + } else if (!strncmp(token, "ttl=", 4)) { + p->mcast.ttl = xatoi(token + 4); +@@ -2127,16 +2127,16 @@ parse_peer(CachePeer ** head) + + if (p->mcast.ttl > 128) + p->mcast.ttl = 128; +- } else if (!strcmp(token, "default")) { ++ } else if (!strcasecmp(token, "default")) { + p->options.default_parent = true; +- } else if (!strcmp(token, "round-robin")) { ++ } else if (!strcasecmp(token, "round-robin")) { + p->options.roundrobin = true; +- } else if (!strcmp(token, "weighted-round-robin")) { ++ } else if (!strcasecmp(token, "weighted-round-robin")) { + p->options.weighted_roundrobin = true; + #if USE_HTCP +- } else if (!strcmp(token, "htcp")) { ++ } else if (!strcasecmp(token, "htcp")) { + p->options.htcp = true; +- } else if (!strncmp(token, "htcp=", 5) || !strncmp(token, "htcp-", 5)) { ++ } else if (!strncasecmp(token, "htcp=", 5) || !strncmp(token, "htcp-", 5)) { + /* Note: The htcp- form is deprecated, replaced by htcp= */ + p->options.htcp = true; + char *tmp = xstrdup(token+5); +@@ -2147,19 +2147,19 @@ parse_peer(CachePeer ** head) + *nextmode = '\0'; + ++nextmode; + } +- if (!strcmp(mode, "no-clr")) { ++ if (!strcasecmp(mode, "no-clr")) { + if (p->options.htcp_only_clr) + fatalf("parse_peer: can't set htcp-no-clr and htcp-only-clr simultaneously"); + p->options.htcp_no_clr = true; +- } else if (!strcmp(mode, "no-purge-clr")) { ++ } else if (!strcasecmp(mode, "no-purge-clr")) { + p->options.htcp_no_purge_clr = true; +- } else if (!strcmp(mode, "only-clr")) { ++ } else if (!strcasecmp(mode, "only-clr")) { + if (p->options.htcp_no_clr) + fatalf("parse_peer: can't set htcp no-clr and only-clr simultaneously"); + p->options.htcp_only_clr = true; +- } else if (!strcmp(mode, "forward-clr")) { ++ } else if (!strcasecmp(mode, "forward-clr")) { + p->options.htcp_forward_clr = true; +- } else if (!strcmp(mode, "oldsquid")) { ++ } else if (!strcasecmp(mode, "oldsquid")) { + p->options.htcp_oldsquid = true; + } else { + fatalf("invalid HTCP mode '%s'", mode); +@@ -2167,15 +2167,15 @@ parse_peer(CachePeer ** head) + } + safe_free(tmp); + #endif +- } else if (!strcmp(token, "no-netdb-exchange")) { ++ } else if (!strcasecmp(token, "no-netdb-exchange")) { + p->options.no_netdb_exchange = true; + +- } else if (!strcmp(token, "carp")) { ++ } else if (!strcasecmp(token, "carp")) { + if (p->type != PEER_PARENT) + fatalf("parse_peer: non-parent carp peer %s/%d\n", p->host, p->http_port); + + p->options.carp = true; +- } else if (!strncmp(token, "carp-key=", 9)) { ++ } else if (!strncasecmp(token, "carp-key=", 9)) { + if (p->options.carp != true) + fatalf("parse_peer: carp-key specified on non-carp peer %s/%d\n", p->host, p->http_port); + p->options.carp_key.set = true; +@@ -2183,21 +2183,21 @@ parse_peer(CachePeer ** head) + for (; key; key = nextkey) { + nextkey=strchr(key,','); + if (nextkey) ++nextkey; // skip the comma, any +- if (0==strncmp(key,"scheme",6)) { ++ if (0==strncasecmp(key,"scheme",6)) { + p->options.carp_key.scheme = true; +- } else if (0==strncmp(key,"host",4)) { ++ } else if (0==strncasecmp(key,"host",4)) { + p->options.carp_key.host = true; +- } else if (0==strncmp(key,"port",4)) { ++ } else if (0==strncasecmp(key,"port",4)) { + p->options.carp_key.port = true; +- } else if (0==strncmp(key,"path",4)) { ++ } else if (0==strncasecmp(key,"path",4)) { + p->options.carp_key.path = true; +- } else if (0==strncmp(key,"params",6)) { ++ } else if (0==strncasecmp(key,"params",6)) { + p->options.carp_key.params = true; + } else { + fatalf("invalid carp-key '%s'",key); + } + } +- } else if (!strcmp(token, "userhash")) { ++ } else if (!strcasecmp(token, "userhash")) { + #if USE_AUTH + if (p->type != PEER_PARENT) + fatalf("parse_peer: non-parent userhash peer %s/%d\n", p->host, p->http_port); +@@ -2206,44 +2206,44 @@ parse_peer(CachePeer ** head) + #else + fatalf("parse_peer: userhash requires authentication. peer %s/%d\n", p->host, p->http_port); + #endif +- } else if (!strcmp(token, "sourcehash")) { ++ } else if (!strcasecmp(token, "sourcehash")) { + if (p->type != PEER_PARENT) + fatalf("parse_peer: non-parent sourcehash peer %s/%d\n", p->host, p->http_port); + + p->options.sourcehash = true; + +- } else if (!strcmp(token, "no-delay")) { ++ } else if (!strcasecmp(token, "no-delay")) { + #if USE_DELAY_POOLS + p->options.no_delay = true; + #else + debugs(0, DBG_CRITICAL, "WARNING: cache_peer option 'no-delay' requires --enable-delay-pools"); + #endif +- } else if (!strncmp(token, "login=", 6)) { ++ } else if (!strncasecmp(token, "login=", 6)) { + p->login = xstrdup(token + 6); + rfc1738_unescape(p->login); +- } else if (!strncmp(token, "connect-timeout=", 16)) { ++ } else if (!strncasecmp(token, "connect-timeout=", 16)) { + p->connect_timeout = xatoi(token + 16); +- } else if (!strncmp(token, "connect-fail-limit=", 19)) { ++ } else if (!strncasecmp(token, "connect-fail-limit=", 19)) { + p->connect_fail_limit = xatoi(token + 19); + #if USE_CACHE_DIGESTS +- } else if (!strncmp(token, "digest-url=", 11)) { ++ } else if (!strncasecmp(token, "digest-url=", 11)) { + p->digest_url = xstrdup(token + 11); + #endif + +- } else if (!strcmp(token, "allow-miss")) { ++ } else if (!strcasecmp(token, "allow-miss")) { + p->options.allow_miss = true; +- } else if (!strncmp(token, "max-conn=", 9)) { ++ } else if (!strncasecmp(token, "max-conn=", 9)) { + p->max_conn = xatoi(token + 9); +- } else if (!strncmp(token, "standby=", 8)) { ++ } else if (!strncasecmp(token, "standby=", 8)) { + p->standby.limit = xatoi(token + 8); +- } else if (!strcmp(token, "originserver")) { ++ } else if (!strcasecmp(token, "originserver")) { + p->options.originserver = true; +- } else if (!strncmp(token, "name=", 5)) { ++ } else if (!strncasecmp(token, "name=", 5)) { + safe_free(p->name); + + if (token[5]) + p->name = xstrdup(token + 5); +- } else if (!strncmp(token, "forceddomain=", 13)) { ++ } else if (!strncasecmp(token, "forceddomain=", 13)) { + safe_free(p->domain); + + if (token[13]) +@@ -2601,14 +2601,14 @@ parse_onoff(int *var) + if (token == NULL) + self_destruct(); + +- if (!strcmp(token, "on")) { ++ if (!strcasecmp(token, "on")) { + *var = 1; +- } else if (!strcmp(token, "enable")) { ++ } else if (!strcasecmp(token, "enable")) { + debugs(0, DBG_PARSE_NOTE(DBG_IMPORTANT), "WARNING: 'enable' is deprecated. Please update to use 'on'."); + *var = 1; +- } else if (!strcmp(token, "off")) { ++ } else if (!strcasecmp(token, "off")) { + *var = 0; +- } else if (!strcmp(token, "disable")) { ++ } else if (!strcasecmp(token, "disable")) { + debugs(0, DBG_PARSE_NOTE(DBG_IMPORTANT), "WARNING: 'disable' is deprecated. Please update to use 'off'."); + *var = 0; + } else { +@@ -2642,16 +2642,16 @@ parse_tristate(int *var) + if (token == NULL) + self_destruct(); + +- if (!strcmp(token, "on")) { ++ if (!strcasecmp(token, "on")) { + *var = 1; +- } else if (!strcmp(token, "enable")) { ++ } else if (!strcasecmp(token, "enable")) { + debugs(0, DBG_PARSE_NOTE(DBG_IMPORTANT), "WARNING: 'enable' is deprecated. Please update to use value 'on'."); + *var = 1; +- } else if (!strcmp(token, "warn")) { ++ } else if (!strcasecmp(token, "warn")) { + *var = -1; +- } else if (!strcmp(token, "off")) { ++ } else if (!strcasecmp(token, "off")) { + *var = 0; +- } else if (!strcmp(token, "disable")) { ++ } else if (!strcasecmp(token, "disable")) { + debugs(0, DBG_PARSE_NOTE(DBG_IMPORTANT), "WARNING: 'disable' is deprecated. Please update to use value 'off'."); + *var = 0; + } else { +@@ -3249,15 +3249,15 @@ parse_uri_whitespace(int *var) + if (token == NULL) + self_destruct(); + +- if (!strcmp(token, "strip")) ++ if (!strcasecmp(token, "strip")) + *var = URI_WHITESPACE_STRIP; +- else if (!strcmp(token, "deny")) ++ else if (!strcasecmp(token, "deny")) + *var = URI_WHITESPACE_DENY; +- else if (!strcmp(token, "allow")) ++ else if (!strcasecmp(token, "allow")) + *var = URI_WHITESPACE_ALLOW; +- else if (!strcmp(token, "encode")) ++ else if (!strcasecmp(token, "encode")) + *var = URI_WHITESPACE_ENCODE; +- else if (!strcmp(token, "chop")) ++ else if (!strcasecmp(token, "chop")) + *var = URI_WHITESPACE_CHOP; + else { + debugs(0, DBG_PARSE_NOTE(2), "ERROR: Invalid option '" << token << "': 'uri_whitespace' accepts 'strip', 'deny', 'allow', 'encode', and 'chop'."); +@@ -3399,19 +3399,19 @@ dump_memcachemode(StoreEntry * entry, const char *name, SquidConfig &config) + peer_t + parseNeighborType(const char *s) + { +- if (!strcmp(s, "parent")) ++ if (!strcasecmp(s, "parent")) + return PEER_PARENT; + +- if (!strcmp(s, "neighbor")) ++ if (!strcasecmp(s, "neighbor")) + return PEER_SIBLING; + +- if (!strcmp(s, "neighbour")) ++ if (!strcasecmp(s, "neighbour")) + return PEER_SIBLING; + +- if (!strcmp(s, "sibling")) ++ if (!strcasecmp(s, "sibling")) + return PEER_SIBLING; + +- if (!strcmp(s, "multicast")) ++ if (!strcasecmp(s, "multicast")) + return PEER_MULTICAST; + + debugs(15, DBG_CRITICAL, "WARNING: Unknown neighbor type: " << s); +@@ -3689,11 +3689,11 @@ parse_port_option(AnyP::PortCfgPointer &s, char *token) + } else if (strcmp(token, "connection-auth=on") == 0) { + s->connection_auth_disabled = false; + } else if (strncmp(token, "disable-pmtu-discovery=", 23) == 0) { +- if (!strcmp(token + 23, "off")) ++ if (!strcasecmp(token + 23, "off")) + s->disable_pmtu_discovery = DISABLE_PMTU_OFF; +- else if (!strcmp(token + 23, "transparent")) ++ else if (!strcasecmp(token + 23, "transparent")) + s->disable_pmtu_discovery = DISABLE_PMTU_TRANSPARENT; +- else if (!strcmp(token + 23, "always")) ++ else if (!strcasecmp(token + 23, "always")) + s->disable_pmtu_discovery = DISABLE_PMTU_ALWAYS; + else + self_destruct(); +@@ -3719,7 +3719,7 @@ parse_port_option(AnyP::PortCfgPointer &s, char *token) + s->tcp_keepalive.timeout = xatoui(t); + } + #if USE_OPENSSL +- } else if (strcmp(token, "sslBump") == 0) { ++ } else if (strcasecmp(token, "sslBump") == 0) { + debugs(3, DBG_CRITICAL, "WARNING: '" << token << "' is deprecated " << + "in " << cfg_directive << ". Use 'ssl-bump' instead."); + s->flags.tunnelSslBumping = true; +diff --git a/src/dns_internal.cc b/src/dns_internal.cc +index 699301e..ef0644d 100644 +--- a/src/dns_internal.cc ++++ b/src/dns_internal.cc +@@ -396,7 +396,7 @@ idnsParseResolvConf(void) + + if (NULL == t) { + continue; +- } else if (strcmp(t, "nameserver") == 0) { ++ } else if (strcasecmp(t, "nameserver") == 0) { + t = strtok(NULL, w_space); + + if (NULL == t) +@@ -406,7 +406,7 @@ idnsParseResolvConf(void) + + idnsAddNameserver(t); + result = true; +- } else if (strcmp(t, "domain") == 0) { ++ } else if (strcasecmp(t, "domain") == 0) { + idnsFreeSearchpath(); + t = strtok(NULL, w_space); + +@@ -416,7 +416,7 @@ idnsParseResolvConf(void) + debugs(78, DBG_IMPORTANT, "Adding domain " << t << " from " << _PATH_RESCONF); + + idnsAddPathComponent(t); +- } else if (strcmp(t, "search") == 0) { ++ } else if (strcasecmp(t, "search") == 0) { + idnsFreeSearchpath(); + while (NULL != t) { + t = strtok(NULL, w_space); +@@ -428,7 +428,7 @@ idnsParseResolvConf(void) + + idnsAddPathComponent(t); + } +- } else if (strcmp(t, "options") == 0) { ++ } else if (strcasecmp(t, "options") == 0) { + while (NULL != t) { + t = strtok(NULL, w_space); + +diff --git a/tools/cachemgr.cc b/tools/cachemgr.cc +index 8c7729e..1ec4e15 100644 +--- a/tools/cachemgr.cc ++++ b/tools/cachemgr.cc +@@ -1018,23 +1018,23 @@ read_request(void) + + rfc1738_unescape(q); + +- if (0 == strcmp(t, "server") && strlen(q)) ++ if (0 == strcasecmp(t, "server") && strlen(q)) + req->server = xstrdup(q); +- else if (0 == strcmp(t, "host") && strlen(q)) ++ else if (0 == strcasecmp(t, "host") && strlen(q)) + req->hostname = xstrdup(q); +- else if (0 == strcmp(t, "port") && strlen(q)) ++ else if (0 == strcasecmp(t, "port") && strlen(q)) + req->port = atoi(q); +- else if (0 == strcmp(t, "user_name") && strlen(q)) ++ else if (0 == strcasecmp(t, "user_name") && strlen(q)) + req->user_name = xstrdup(q); +- else if (0 == strcmp(t, "passwd") && strlen(q)) ++ else if (0 == strcasecmp(t, "passwd") && strlen(q)) + req->passwd = xstrdup(q); +- else if (0 == strcmp(t, "auth") && strlen(q)) ++ else if (0 == strcasecmp(t, "auth") && strlen(q)) + req->pub_auth = xstrdup(q), decode_pub_auth(req); +- else if (0 == strcmp(t, "operation")) ++ else if (0 == strcasecmp(t, "operation")) + req->action = xstrdup(q); +- else if (0 == strcmp(t, "workers") && strlen(q)) ++ else if (0 == strcasecmp(t, "workers") && strlen(q)) + req->workers = xstrdup(q); +- else if (0 == strcmp(t, "processes") && strlen(q)) ++ else if (0 == strcasecmp(t, "processes") && strlen(q)) + req->processes = xstrdup(q); + } + safe_free(t); +@@ -1254,7 +1254,7 @@ check_target_acl(const char *hostname, int port) + if (strcmp(token, "*") == 0) + + ; /* Wildcard port specification */ +- else if (strcmp(token, "any") == 0) ++ else if (strcasecmp(token, "any") == 0) + + ; /* Wildcard port specification */ + else if (sscanf(token, "%d", &i) != 1) diff --git a/SOURCES/squid-3.5.20.tar.xz.asc b/SOURCES/squid-3.5.20.tar.xz.asc new file mode 100644 index 0000000..0854c49 --- /dev/null +++ b/SOURCES/squid-3.5.20.tar.xz.asc @@ -0,0 +1,20 @@ +File: squid-3.5.20.tar.xz +Date: Fri Jul 1 13:49:42 UTC 2016 +Size: 2319780 +MD5 : 48fb18679a30606de98882528beab3a7 +SHA1: 2bb6d3568e7167c9b99fea092a97287d0e430863 +Key : 0xFF5CF463 + fingerprint = EA31 CC5E 9488 E516 8D2D CC5E B268 E706 FF5C F463 + keyring = http://www.squid-cache.org/pgp.asc + keyserver = subkeys.pgp.net +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQEcBAABAgAGBQJXdnW5AAoJELJo5wb/XPRjqzsH+wXT0yt47aqoGWI8D1YpRaW5 +KPYvJdos0zPfgIPFWXxngH+ZpJcSPD21QuiEPS8BqISxm+/+By+0QIljITnHWFOV +/wo1nwL/IMissmD+9bksyBede+BsZdz1PSwl9V1MzvuGL4vwOC0UZD9RT9RYvMwj +Exfw80v/01bAVpV8U3tsBodk4Rz3AWIHhH2Tf9O2EZ/pIAtEHtDbkdLk81rSwNED +tL6yV/n+BoWgAPg/+YPVGRK/h5nD4tBkTD6YBCnxp5PJmybhvAjLr/J96PtPpHdC +or7Vx1lVpKvkXwZjn936+v4pqv19lsvKs5zLtGKBG2wMmoSIo2bf/bGhhT5kBDc= +=znHp +-----END PGP SIGNATURE----- diff --git a/SOURCES/squid-CVE-2016-4051.patch b/SOURCES/squid-CVE-2016-4051.patch deleted file mode 100644 index cb6e6de..0000000 --- a/SOURCES/squid-CVE-2016-4051.patch +++ /dev/null @@ -1,1700 +0,0 @@ ------------------------------------------------------------- -revno: 12695 -revision-id: squid3@treenet.co.nz-20160420064259-k9dn77q0xna1doax -parent: squid3@treenet.co.nz-20160330141606-19rqzzip0grq9a77 -committer: Amos Jeffries -branch nick: 3.3 -timestamp: Wed 2016-04-20 18:42:59 +1200 -message: - cachemgr.cgi: use dynamic MemBuf for internal content generation - - Using a fixed size buffer limits how big content lines can be. Modern - HTTP is fast reaching the point where such limits are problematic. - Also fixes incorrect uses of snprintf() by removing them. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20160420064259-k9dn77q0xna1doax -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 -# testament_sha1: 0c7cd2d0ababe794c0fd5b1dc94c647c064c122d -# timestamp: 2016-04-20 06:50:48 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 -# base_revision_id: squid3@treenet.co.nz-20160330141606-\ -# 19rqzzip0grq9a77 -# -# Begin patch -=== modified file 'src/tests/Stub.list' ---- src/tests/Stub.list 2014-10-08 15:31:39 +0000 -+++ src/tests/Stub.list 2016-04-20 06:42:59 +0000 -@@ -3,6 +3,7 @@ - tests/stub_acl.cc \ - tests/stub_cache_cf.cc \ - tests/stub_cache_manager.cc \ -+ tests/stub_cbdata.cc \ - tests/stub_client_db.cc \ - tests/stub_client_side_request.cc \ - tests/stub_comm.cc \ - -=== added file 'src/tests/stub_cbdata.cc' ---- src/tests/stub_cbdata.cc 1970-01-01 00:00:00 +0000 -+++ src/tests/stub_cbdata.cc 2016-04-20 06:42:59 +0000 -@@ -0,0 +1,30 @@ -+#include "squid.h" -+#include "cbdata.h" -+ -+#define STUB_API "cbdata.cc" -+#include "tests/STUB.h" -+ -+void cbdataRegisterWithCacheManager(void) STUB -+void *cbdataInternalAlloc(cbdata_type type, const char *, int sz) { -+ return xcalloc(1, sz); -+} -+void *cbdataInternalFree(void *p, const char *, int) { -+ xfree(p); -+ return nullptr; -+} -+#if USE_CBDATA_DEBUG -+void *cbdataInternalAllocDbg(cbdata_type type, const char *, int) STUB_RETVAL(NULL) -+void *cbdataInternalFreeDbg(void *p, const char *, int) STUB_RETVAL(NULL) -+void cbdataInternalLockDbg(const void *p, const char *, int) STUB -+void cbdataInternalUnlockDbg(const void *p, const char *, int) STUB -+int cbdataInternalReferenceDoneValidDbg(void **p, void **tp, const char *, int) STUB_RETVAL(0) -+#else -+void *cbdataInternalAlloc(cbdata_type type) STUB_RETVAL(NULL) -+void *cbdataInternalFree(void *p) STUB_RETVAL(NULL) -+void cbdataInternalLock(const void *p) STUB -+void cbdataInternalUnlock(const void *p) STUB -+int cbdataInternalReferenceDoneValid(void **p, void **tp) STUB_RETVAL(0) -+#endif -+ -+int cbdataReferenceValid(const void *p) STUB_RETVAL(0) -+cbdata_type cbdataInternalAddType(cbdata_type type, const char *label, int size, FREE * free_func) STUB_RETVAL(CBDATA_UNKNOWN) - -=== modified file 'src/tests/stub_mem.cc' ---- src/tests/stub_mem.cc 2012-08-29 07:29:35 +0000 -+++ src/tests/stub_mem.cc 2016-04-20 06:42:59 +0000 -@@ -5,7 +5,7 @@ - #include "squid.h" - - #define STUB_API "stub_mem.cc" --#include "STUB.h" -+#include "tests/STUB.h" - #include "Mem.h" - - void - -=== modified file 'tools/Makefile.am' ---- tools/Makefile.am 2010-12-06 14:06:06 +0000 -+++ tools/Makefile.am 2016-04-20 06:42:59 +0000 -@@ -34,15 +34,24 @@ - stub_debug.cc: $(top_srcdir)/src/tests/stub_debug.cc - cp $(top_srcdir)/src/tests/stub_debug.cc . - -+MemBuf.cc: $(top_srcdir)/src/MemBuf.cc -+ cp $(top_srcdir)/src/MemBuf.cc $@ -+ - time.cc: $(top_srcdir)/src/time.cc - cp $(top_srcdir)/src/time.cc . - -+stub_cbdata.cc: $(top_srcdir)/src/tests/stub_cbdata.cc -+ cp $(top_srcdir)/src/tests/stub_cbdata.cc $@ -+ -+stub_mem.cc: $(top_srcdir)/src/tests/stub_mem.cc -+ cp $(top_srcdir)/src/tests/stub_mem.cc $@ -+ - # stock tools for unit tests - library independent versions of dlink_list - # etc. - # globals.cc is needed by test_tools.cc. - # Neither of these should be disted from here. - TESTSOURCES= test_tools.cc --CLEANFILES += test_tools.cc stub_debug.cc time.cc -+CLEANFILES += test_tools.cc MemBuf.cc stub_debug.cc time.cc stub_cbdata.cc stub_mem.cc - - ## ##### helper-mux ##### - -@@ -73,7 +82,10 @@ - libexec_PROGRAMS = cachemgr$(CGIEXT) - - cachemgr__CGIEXT__SOURCES = cachemgr.cc \ -+ MemBuf.cc \ -+ stub_cbdata.cc \ - stub_debug.cc \ -+ stub_mem.cc \ - test_tools.cc \ - time.cc - - -=== modified file 'tools/cachemgr.cc' ---- tools/cachemgr.cc 2013-09-09 07:17:19 +0000 -+++ tools/cachemgr.cc 2016-04-20 06:42:59 +0000 -@@ -35,6 +35,7 @@ - #include "getfullhostname.h" - #include "html_quote.h" - #include "ip/Address.h" -+#include "MemBuf.h" - #include "rfc1123.h" - #include "rfc1738.h" - #include "util.h" -@@ -460,8 +461,8 @@ - return url; - } - --static const char * --munge_menu_line(const char *buf, cachemgr_request * req) -+static void -+munge_menu_line(MemBuf &out, const char *buf, cachemgr_request * req) - { - char *x; - const char *a; -@@ -469,15 +470,14 @@ - const char *p; - char *a_url; - char *buf_copy; -- static char html[2 * 1024]; -- -- if (strlen(buf) < 1) -- return buf; -- -- if (*buf != ' ') -- return buf; -- -- buf_copy = x = xstrdup(buf); -+ -+ const char bufLen = strlen(buf); -+ if (bufLen < 1 || *buf != ' ') { -+ out.append(buf, bufLen); -+ return; -+ } -+ -+ buf_copy = x = xstrndup(buf, bufLen); - - a = xstrtok(&x, '\t'); - -@@ -489,59 +489,56 @@ - - /* no reason to give a url for a disabled action */ - if (!strcmp(p, "disabled")) -- snprintf(html, sizeof(html), "
  • %s (disabled).\n", d, a_url); -+ out.Printf("
  • %s (disabled).\n", d, a_url); - else - /* disable a hidden action (requires a password, but password is not in squid.conf) */ - if (!strcmp(p, "hidden")) -- snprintf(html, sizeof(html), "
  • %s (hidden).\n", d, a_url); -+ out.Printf("
  • %s (hidden).\n", d, a_url); - else - /* disable link if authentication is required and we have no password */ - if (!strcmp(p, "protected") && !req->passwd) -- snprintf(html, sizeof(html), "
  • %s (requires authentication).\n", -- d, menu_url(req, "authenticate"), a_url); -+ out.Printf("
  • %s (requires authentication).\n", -+ d, menu_url(req, "authenticate"), a_url); - else - /* highlight protected but probably available entries */ - if (!strcmp(p, "protected")) -- snprintf(html, sizeof(html), "
  • %s\n", -- a_url, d); -+ out.Printf("
  • %s\n", -+ a_url, d); - - /* public entry or unknown type of protection */ - else -- snprintf(html, sizeof(html), "
  • %s\n", a_url, d); -+ out.Printf("
  • %s\n", a_url, d); - - xfree(a_url); - - xfree(buf_copy); -- -- return html; - } - --static const char * --munge_other_line(const char *buf, cachemgr_request * req) -+static void -+munge_other_line(MemBuf &out, const char *buf, cachemgr_request *) - { - static const char *ttags[] = {"td", "th"}; - -- static char html[4096]; - static int table_line_num = 0; - static int next_is_header = 0; - int is_header = 0; - const char *ttag; - char *buf_copy; - char *x, *p; -- int l = 0; - /* does it look like a table? */ - - if (!strchr(buf, '\t') || *buf == '\t') { - /* nope, just text */ -- snprintf(html, sizeof(html), "%s%s", -- table_line_num ? "\n
    " : "", html_quote(buf));
    -+        if (table_line_num)
    -+            out.append("\n
    ", 14);
    -+        out.Printf("%s", html_quote(buf));
    -         table_line_num = 0;
    --        return html;
    -+        return;
    -     }
    - 
    -     /* start html table */
    -     if (!table_line_num) {
    --        l += snprintf(html + l, sizeof(html) - l, "
    \n"); -+ out.append("
    \n", 46); - next_is_header = 0; - } - -@@ -551,7 +548,7 @@ - ttag = ttags[is_header]; - - /* record starts */ -- l += snprintf(html + l, sizeof(html) - l, ""); -+ out.append("", 4); - - /* substitute '\t' */ - buf_copy = x = xstrdup(buf); -@@ -568,18 +565,17 @@ - ++x; - } - -- l += snprintf(html + l, sizeof(html) - l, "<%s colspan=\"%d\" align=\"%s\">%s", -- ttag, column_span, -- is_header ? "center" : is_number(cell) ? "right" : "left", -- html_quote(cell), ttag); -+ out.Printf("<%s colspan=\"%d\" align=\"%s\">%s", -+ ttag, column_span, -+ is_header ? "center" : is_number(cell) ? "right" : "left", -+ html_quote(cell), ttag); - } - - xfree(buf_copy); - /* record ends */ -- snprintf(html + l, sizeof(html) - l, "\n"); -+ out.append("\n", 6); - next_is_header = is_header && strstr(buf, "\t\t"); - ++table_line_num; -- return html; - } - - static const char * -@@ -736,14 +732,18 @@ - /* yes, fall through, we do not want to loose the first line */ - - case isBody: -+ { - /* interpret [and reformat] cache response */ -- -+ MemBuf out; -+ out.init(); - if (parse_menu) -- fputs(munge_menu_line(buf, req), stdout); -+ munge_menu_line(out, buf, req); - else -- fputs(munge_other_line(buf, req), stdout); -+ munge_other_line(out, buf, req); - -- break; -+ fputs(out.buf, stdout); -+ } -+ break; - - case isForward: - /* forward: no modifications allowed */ - ------------------------------------------------------------- -revno: 12696 -revision-id: squid3@treenet.co.nz-20160420101500-nm50i4u3iftemzs6 -parent: squid3@treenet.co.nz-20160420064259-k9dn77q0xna1doax -committer: Amos Jeffries -branch nick: 3.3 -timestamp: Wed 2016-04-20 22:15:00 +1200 -message: - nullptr is a C++11 feature ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20160420101500-nm50i4u3iftemzs6 -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 -# testament_sha1: 091f2aa4b835390972c0f42e67128484d653c2ee -# timestamp: 2016-04-20 10:50:54 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 -# base_revision_id: squid3@treenet.co.nz-20160420064259-\ -# k9dn77q0xna1doax -# -# Begin patch -=== modified file 'src/tests/stub_cbdata.cc' ---- src/tests/stub_cbdata.cc 2016-04-20 06:42:59 +0000 -+++ src/tests/stub_cbdata.cc 2016-04-20 10:15:00 +0000 -@@ -10,7 +10,7 @@ - } - void *cbdataInternalFree(void *p, const char *, int) { - xfree(p); -- return nullptr; -+ return NULL; - } - #if USE_CBDATA_DEBUG - void *cbdataInternalAllocDbg(cbdata_type type, const char *, int) STUB_RETVAL(NULL) -diff --git tools/Makefile.in tools/Makefile.in -index 7380540..1c951fc 100644 ---- tools/Makefile.in -+++ tools/Makefile.in -@@ -1,9 +1,8 @@ --# Makefile.in generated by automake 1.11.1 from Makefile.am. -+# Makefile.in generated by automake 1.15 from Makefile.am. - # @configure_input@ - --# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, --# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, --# Inc. -+# Copyright (C) 1994-2014 Free Software Foundation, Inc. -+ - # This Makefile.in is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. -@@ -23,6 +22,61 @@ - - - VPATH = @srcdir@ -+am__is_gnu_make = { \ -+ if test -z '$(MAKELEVEL)'; then \ -+ false; \ -+ elif test -n '$(MAKE_HOST)'; then \ -+ true; \ -+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ -+ true; \ -+ else \ -+ false; \ -+ fi; \ -+} -+am__make_running_with_option = \ -+ case $${target_option-} in \ -+ ?) ;; \ -+ *) echo "am__make_running_with_option: internal error: invalid" \ -+ "target option '$${target_option-}' specified" >&2; \ -+ exit 1;; \ -+ esac; \ -+ has_opt=no; \ -+ sane_makeflags=$$MAKEFLAGS; \ -+ if $(am__is_gnu_make); then \ -+ sane_makeflags=$$MFLAGS; \ -+ else \ -+ case $$MAKEFLAGS in \ -+ *\\[\ \ ]*) \ -+ bs=\\; \ -+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ -+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ -+ esac; \ -+ fi; \ -+ skip_next=no; \ -+ strip_trailopt () \ -+ { \ -+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ -+ }; \ -+ for flg in $$sane_makeflags; do \ -+ test $$skip_next = yes && { skip_next=no; continue; }; \ -+ case $$flg in \ -+ *=*|--*) continue;; \ -+ -*I) strip_trailopt 'I'; skip_next=yes;; \ -+ -*I?*) strip_trailopt 'I';; \ -+ -*O) strip_trailopt 'O'; skip_next=yes;; \ -+ -*O?*) strip_trailopt 'O';; \ -+ -*l) strip_trailopt 'l'; skip_next=yes;; \ -+ -*l?*) strip_trailopt 'l';; \ -+ -[dEDm]) skip_next=yes;; \ -+ -[JT]) skip_next=yes;; \ -+ esac; \ -+ case $$flg in \ -+ *$$target_option*) has_opt=yes; break;; \ -+ esac; \ -+ done; \ -+ test $$has_opt = yes -+am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -+am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) - pkgdatadir = $(datadir)/@PACKAGE@ - pkgincludedir = $(includedir)/@PACKAGE@ - pkglibdir = $(libdir)/@PACKAGE@ -@@ -41,9 +95,6 @@ PRE_UNINSTALL = : - POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ -- $(top_srcdir)/doc/manuals/Substitute.am \ -- $(top_srcdir)/src/Common.am - check_PROGRAMS = - TESTS = - @USE_LOADABLE_MODULES_TRUE@am__append_1 = $(INCLTDL) -@@ -63,6 +114,7 @@ am__aclocal_m4_deps = $(top_srcdir)/acinclude/init.m4 \ - $(top_srcdir)/configure.ac - am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) - mkinstalldirs = $(install_sh) -d - CONFIG_HEADER = $(top_builddir)/include/autoconf.h - CONFIG_CLEAN_FILES = -@@ -72,7 +124,10 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" \ - "$(DESTDIR)$(man8dir)" - PROGRAMS = $(bin_PROGRAMS) $(libexec_PROGRAMS) - am_cachemgr__CGIEXT__OBJECTS = cachemgr__CGIEXT_-cachemgr.$(OBJEXT) \ -+ cachemgr__CGIEXT_-MemBuf.$(OBJEXT) \ -+ cachemgr__CGIEXT_-stub_cbdata.$(OBJEXT) \ - cachemgr__CGIEXT_-stub_debug.$(OBJEXT) \ -+ cachemgr__CGIEXT_-stub_mem.$(OBJEXT) \ - cachemgr__CGIEXT_-test_tools.$(OBJEXT) \ - cachemgr__CGIEXT_-time.$(OBJEXT) - cachemgr__CGIEXT__OBJECTS = $(am_cachemgr__CGIEXT__OBJECTS) -@@ -84,8 +139,12 @@ cachemgr__CGIEXT__DEPENDENCIES = $(top_builddir)/src/ip/libip.la \ - $(top_builddir)/lib/libmiscencoding.la \ - $(top_builddir)/lib/libmiscutil.la $(am__DEPENDENCIES_2) \ - $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) --cachemgr__CGIEXT__LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ -- $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ -+AM_V_lt = $(am__v_lt_@AM_V@) -+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -+am__v_lt_0 = --silent -+am__v_lt_1 = -+cachemgr__CGIEXT__LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ -+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ - $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - am_squidclient_OBJECTS = squidclient.$(OBJEXT) stub_debug.$(OBJEXT) \ -@@ -117,43 +176,272 @@ am__nobase_list = $(am__nobase_strip_setup); \ - am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -+am__uninstall_files_from_dir = { \ -+ test -z "$$files" \ -+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ -+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ -+ $(am__cd) "$$dir" && rm -f $$files; }; \ -+ } - SCRIPTS = $(libexec_SCRIPTS) -+AM_V_P = $(am__v_P_@AM_V@) -+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -+am__v_P_0 = false -+am__v_P_1 = : -+AM_V_GEN = $(am__v_GEN_@AM_V@) -+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -+am__v_GEN_0 = @echo " GEN " $@; -+am__v_GEN_1 = -+AM_V_at = $(am__v_at_@AM_V@) -+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -+am__v_at_0 = @ -+am__v_at_1 = - DEFAULT_INCLUDES = - depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp - am__depfiles_maybe = depfiles - am__mv = mv -f - CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) --LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ -- --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ -- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ -+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ -+ $(AM_CXXFLAGS) $(CXXFLAGS) -+AM_V_CXX = $(am__v_CXX_@AM_V@) -+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -+am__v_CXX_0 = @echo " CXX " $@; -+am__v_CXX_1 = - CXXLD = $(CXX) --CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ -- --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ -- $(LDFLAGS) -o $@ -+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ -+ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -+am__v_CXXLD_0 = @echo " CXXLD " $@; -+am__v_CXXLD_1 = - SOURCES = $(cachemgr__CGIEXT__SOURCES) $(squidclient_SOURCES) - DIST_SOURCES = $(cachemgr__CGIEXT__SOURCES) $(squidclient_SOURCES) --RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ -- html-recursive info-recursive install-data-recursive \ -- install-dvi-recursive install-exec-recursive \ -- install-html-recursive install-info-recursive \ -- install-pdf-recursive install-ps-recursive install-recursive \ -- installcheck-recursive installdirs-recursive pdf-recursive \ -- ps-recursive uninstall-recursive -+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ -+ ctags-recursive dvi-recursive html-recursive info-recursive \ -+ install-data-recursive install-dvi-recursive \ -+ install-exec-recursive install-html-recursive \ -+ install-info-recursive install-pdf-recursive \ -+ install-ps-recursive install-recursive installcheck-recursive \ -+ installdirs-recursive pdf-recursive ps-recursive \ -+ tags-recursive uninstall-recursive -+am__can_run_installinfo = \ -+ case $$AM_UPDATE_INFO_DIR in \ -+ n|no|NO) false;; \ -+ *) (install-info --version) >/dev/null 2>&1;; \ -+ esac - man1dir = $(mandir)/man1 - man8dir = $(mandir)/man8 - NROFF = nroff - MANS = $(man_MANS) - RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive --AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ -- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ -- distdir -+am__recursive_targets = \ -+ $(RECURSIVE_TARGETS) \ -+ $(RECURSIVE_CLEAN_TARGETS) \ -+ $(am__extra_recursive_targets) -+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ -+ check recheck distdir -+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -+# Read a list of newline-separated strings from the standard input, -+# and print each of them once, without duplicates. Input order is -+# *not* preserved. -+am__uniquify_input = $(AWK) '\ -+ BEGIN { nonempty = 0; } \ -+ { items[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in items) print i; }; } \ -+' -+# Make sure the list of sources is unique. This is necessary because, -+# e.g., the same source file might be shared among _SOURCES variables -+# for different programs/libraries. -+am__define_uniq_tagged_files = \ -+ list='$(am__tagged_files)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | $(am__uniquify_input)` - ETAGS = etags - CTAGS = ctags --am__tty_colors = \ --red=; grn=; lgn=; blu=; std= -+am__tty_colors_dummy = \ -+ mgn= red= grn= lgn= blu= brg= std=; \ -+ am__color_tests=no -+am__tty_colors = { \ -+ $(am__tty_colors_dummy); \ -+ if test "X$(AM_COLOR_TESTS)" = Xno; then \ -+ am__color_tests=no; \ -+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ -+ am__color_tests=yes; \ -+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ -+ am__color_tests=yes; \ -+ fi; \ -+ if test $$am__color_tests = yes; then \ -+ red=''; \ -+ grn=''; \ -+ lgn=''; \ -+ blu=''; \ -+ mgn=''; \ -+ brg=''; \ -+ std=''; \ -+ fi; \ -+} -+am__recheck_rx = ^[ ]*:recheck:[ ]* -+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* -+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* -+# A command that, given a newline-separated list of test names on the -+# standard input, print the name of the tests that are to be re-run -+# upon "make recheck". -+am__list_recheck_tests = $(AWK) '{ \ -+ recheck = 1; \ -+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ -+ { \ -+ if (rc < 0) \ -+ { \ -+ if ((getline line2 < ($$0 ".log")) < 0) \ -+ recheck = 0; \ -+ break; \ -+ } \ -+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ -+ { \ -+ recheck = 0; \ -+ break; \ -+ } \ -+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ -+ { \ -+ break; \ -+ } \ -+ }; \ -+ if (recheck) \ -+ print $$0; \ -+ close ($$0 ".trs"); \ -+ close ($$0 ".log"); \ -+}' -+# A command that, given a newline-separated list of test names on the -+# standard input, create the global log from their .trs and .log files. -+am__create_global_log = $(AWK) ' \ -+function fatal(msg) \ -+{ \ -+ print "fatal: making $@: " msg | "cat >&2"; \ -+ exit 1; \ -+} \ -+function rst_section(header) \ -+{ \ -+ print header; \ -+ len = length(header); \ -+ for (i = 1; i <= len; i = i + 1) \ -+ printf "="; \ -+ printf "\n\n"; \ -+} \ -+{ \ -+ copy_in_global_log = 1; \ -+ global_test_result = "RUN"; \ -+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ -+ { \ -+ if (rc < 0) \ -+ fatal("failed to read from " $$0 ".trs"); \ -+ if (line ~ /$(am__global_test_result_rx)/) \ -+ { \ -+ sub("$(am__global_test_result_rx)", "", line); \ -+ sub("[ ]*$$", "", line); \ -+ global_test_result = line; \ -+ } \ -+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ -+ copy_in_global_log = 0; \ -+ }; \ -+ if (copy_in_global_log) \ -+ { \ -+ rst_section(global_test_result ": " $$0); \ -+ while ((rc = (getline line < ($$0 ".log"))) != 0) \ -+ { \ -+ if (rc < 0) \ -+ fatal("failed to read from " $$0 ".log"); \ -+ print line; \ -+ }; \ -+ printf "\n"; \ -+ }; \ -+ close ($$0 ".trs"); \ -+ close ($$0 ".log"); \ -+}' -+# Restructured Text title. -+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } -+# Solaris 10 'make', and several other traditional 'make' implementations, -+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it -+# by disabling -e (using the XSI extension "set +e") if it's set. -+am__sh_e_setup = case $$- in *e*) set +e;; esac -+# Default flags passed to test drivers. -+am__common_driver_flags = \ -+ --color-tests "$$am__color_tests" \ -+ --enable-hard-errors "$$am__enable_hard_errors" \ -+ --expect-failure "$$am__expect_failure" -+# To be inserted before the command running the test. Creates the -+# directory for the log if needed. Stores in $dir the directory -+# containing $f, in $tst the test, in $log the log. Executes the -+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and -+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that -+# will run the test scripts (or their associated LOG_COMPILER, if -+# thy have one). -+am__check_pre = \ -+$(am__sh_e_setup); \ -+$(am__vpath_adj_setup) $(am__vpath_adj) \ -+$(am__tty_colors); \ -+srcdir=$(srcdir); export srcdir; \ -+case "$@" in \ -+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ -+ *) am__odir=.;; \ -+esac; \ -+test "x$$am__odir" = x"." || test -d "$$am__odir" \ -+ || $(MKDIR_P) "$$am__odir" || exit $$?; \ -+if test -f "./$$f"; then dir=./; \ -+elif test -f "$$f"; then dir=; \ -+else dir="$(srcdir)/"; fi; \ -+tst=$$dir$$f; log='$@'; \ -+if test -n '$(DISABLE_HARD_ERRORS)'; then \ -+ am__enable_hard_errors=no; \ -+else \ -+ am__enable_hard_errors=yes; \ -+fi; \ -+case " $(XFAIL_TESTS) " in \ -+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ -+ am__expect_failure=yes;; \ -+ *) \ -+ am__expect_failure=no;; \ -+esac; \ -+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) -+# A shell command to get the names of the tests scripts with any registered -+# extension removed (i.e., equivalently, the names of the test logs, with -+# the '.log' extension removed). The result is saved in the shell variable -+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, -+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", -+# since that might cause problem with VPATH rewrites for suffix-less tests. -+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. -+am__set_TESTS_bases = \ -+ bases='$(TEST_LOGS)'; \ -+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ -+ bases=`echo $$bases` -+RECHECK_LOGS = $(TEST_LOGS) -+TEST_SUITE_LOG = test-suite.log -+TEST_EXTENSIONS = @EXEEXT@ .test -+am__test_logs1 = $(TESTS:=.log) -+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) -+TEST_LOGS = $(am__test_logs2:.test.log=.log) -+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/cfgaux/test-driver -+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ -+ $(TEST_LOG_FLAGS) -+am__set_b = \ -+ case '$@' in \ -+ */*) \ -+ case '$*' in \ -+ */*) b='$*';; \ -+ *) b=`echo '$@' | sed 's/\.log$$//'`; \ -+ esac;; \ -+ *) \ -+ b='$*';; \ -+ esac - DIST_SUBDIRS = $(SUBDIRS) -+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/cfgaux/depcomp \ -+ $(top_srcdir)/cfgaux/test-driver \ -+ $(top_srcdir)/doc/manuals/Substitute.am \ -+ $(top_srcdir)/src/Common.am - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - am__relativize = \ - dir0=`pwd`; \ -@@ -184,8 +472,8 @@ ACLOCAL = @ACLOCAL@ - ADAPTATION_LIBS = @ADAPTATION_LIBS@ - ALLOCA = @ALLOCA@ - AMTAR = @AMTAR@ -+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ - AR = @AR@ --ARGZ_H = @ARGZ_H@ - AR_R = @AR_R@ - AUTH_LIBS_TO_BUILD = @AUTH_LIBS_TO_BUILD@ - AUTH_MODULES = @AUTH_MODULES@ -@@ -222,6 +510,7 @@ DISK_LINKOBJS = @DISK_LINKOBJS@ - DISK_MODULES = @DISK_MODULES@ - DISK_OS_LIBS = @DISK_OS_LIBS@ - DISK_PROGRAMS = @DISK_PROGRAMS@ -+DLLTOOL = @DLLTOOL@ - DSYMUTIL = @DSYMUTIL@ - DUMPBIN = @DUMPBIN@ - ECAP_LIBS = @ECAP_LIBS@ -@@ -271,11 +560,14 @@ LTDLDEPS = @LTDLDEPS@ - LTDLINCL = @LTDLINCL@ - LTDLOPEN = @LTDLOPEN@ - LTLIBOBJS = @LTLIBOBJS@ -+LT_ARGZ_H = @LT_ARGZ_H@ - LT_CONFIG_H = @LT_CONFIG_H@ - LT_DLLOADERS = @LT_DLLOADERS@ - LT_DLPREOPEN = @LT_DLPREOPEN@ -+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ - MAINT = @MAINT@ - MAKEINFO = @MAKEINFO@ -+MANIFEST_TOOL = @MANIFEST_TOOL@ - MINGW_LIBS = @MINGW_LIBS@ - MKDIR = @MKDIR@ - MKDIR_P = @MKDIR_P@ -@@ -336,6 +628,7 @@ abs_builddir = @abs_builddir@ - abs_srcdir = @abs_srcdir@ - abs_top_builddir = @abs_top_builddir@ - abs_top_srcdir = @abs_top_srcdir@ -+ac_ct_AR = @ac_ct_AR@ - ac_ct_CC = @ac_ct_CC@ - ac_ct_CXX = @ac_ct_CXX@ - ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -@@ -392,7 +685,8 @@ top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ - AM_CFLAGS = $(SQUID_CFLAGS) - AM_CXXFLAGS = $(SQUID_CXXFLAGS) --CLEANFILES = test_tools.cc stub_debug.cc time.cc cachemgr.cgi.8 -+CLEANFILES = test_tools.cc MemBuf.cc stub_debug.cc time.cc \ -+ stub_cbdata.cc stub_mem.cc cachemgr.cgi.8 - INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_srcdir)/lib \ - -I$(top_srcdir)/src -I$(top_builddir)/include \ - $(SQUID_CPPUNIT_INC) $(KRB5INCS) $(am__append_1) -I$(srcdir) -@@ -436,7 +730,10 @@ squidclient_SOURCES = squidclient.cc \ - - DEFAULT_CACHEMGR_CONFIG = $(sysconfdir)/cachemgr.conf - cachemgr__CGIEXT__SOURCES = cachemgr.cc \ -+ MemBuf.cc \ -+ stub_cbdata.cc \ - stub_debug.cc \ -+ stub_mem.cc \ - test_tools.cc \ - time.cc - -@@ -444,7 +741,7 @@ cachemgr__CGIEXT__CXXFLAGS = -DDEFAULT_CACHEMGR_CONFIG=\"$(DEFAULT_CACHEMGR_CONF - all: all-recursive - - .SUFFIXES: --.SUFFIXES: .cc .lo .o .obj -+.SUFFIXES: .cc .lo .log .o .obj .test .test$(EXEEXT) .trs - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/src/Common.am $(top_srcdir)/doc/manuals/Substitute.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ -@@ -454,10 +751,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir - exit 1;; \ - esac; \ - done; \ -- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \ - $(am__cd) $(top_srcdir) && \ -- $(AUTOMAKE) --foreign tools/Makefile --.PRECIOUS: Makefile -+ $(AUTOMAKE) --gnu tools/Makefile - Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ -@@ -466,6 +762,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; -+$(top_srcdir)/src/Common.am $(top_srcdir)/doc/manuals/Substitute.am $(am__empty): - - $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -@@ -477,14 +774,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__aclocal_m4_deps): - install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) -- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ -+ if test -n "$$list"; then \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ -+ fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ -- while read p p1; do if test -f $$p || test -f $$p1; \ -- then echo "$$p"; echo "$$p"; else :; fi; \ -+ while read p p1; do if test -f $$p \ -+ || test -f $$p1 \ -+ ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ -- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -+ sed -e 'p;s,.*/,,;n;h' \ -+ -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ -@@ -505,7 +807,8 @@ uninstall-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -- -e 's/$$/$(EXEEXT)/' `; \ -+ -e 's/$$/$(EXEEXT)/' \ -+ `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files -@@ -529,14 +832,19 @@ clean-checkPROGRAMS: - rm -f $$list - install-libexecPROGRAMS: $(libexec_PROGRAMS) - @$(NORMAL_INSTALL) -- test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)" - @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ -+ if test -n "$$list"; then \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ -+ fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ -- while read p p1; do if test -f $$p || test -f $$p1; \ -- then echo "$$p"; echo "$$p"; else :; fi; \ -+ while read p p1; do if test -f $$p \ -+ || test -f $$p1 \ -+ ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ -- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -+ sed -e 'p;s,.*/,,;n;h' \ -+ -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ -@@ -557,7 +865,8 @@ uninstall-libexecPROGRAMS: - @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -- -e 's/$$/$(EXEEXT)/' `; \ -+ -e 's/$$/$(EXEEXT)/' \ -+ `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(libexecdir)" && rm -f $$files -@@ -570,16 +879,21 @@ clean-libexecPROGRAMS: - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list --cachemgr$(CGIEXT)$(EXEEXT): $(cachemgr__CGIEXT__OBJECTS) $(cachemgr__CGIEXT__DEPENDENCIES) -+ -+cachemgr$(CGIEXT)$(EXEEXT): $(cachemgr__CGIEXT__OBJECTS) $(cachemgr__CGIEXT__DEPENDENCIES) $(EXTRA_cachemgr__CGIEXT__DEPENDENCIES) - @rm -f cachemgr$(CGIEXT)$(EXEEXT) -- $(cachemgr__CGIEXT__LINK) $(cachemgr__CGIEXT__OBJECTS) $(cachemgr__CGIEXT__LDADD) $(LIBS) --squidclient$(EXEEXT): $(squidclient_OBJECTS) $(squidclient_DEPENDENCIES) -+ $(AM_V_CXXLD)$(cachemgr__CGIEXT__LINK) $(cachemgr__CGIEXT__OBJECTS) $(cachemgr__CGIEXT__LDADD) $(LIBS) -+ -+squidclient$(EXEEXT): $(squidclient_OBJECTS) $(squidclient_DEPENDENCIES) $(EXTRA_squidclient_DEPENDENCIES) - @rm -f squidclient$(EXEEXT) -- $(CXXLINK) $(squidclient_OBJECTS) $(squidclient_LDADD) $(LIBS) -+ $(AM_V_CXXLD)$(CXXLINK) $(squidclient_OBJECTS) $(squidclient_LDADD) $(LIBS) - install-libexecSCRIPTS: $(libexec_SCRIPTS) - @$(NORMAL_INSTALL) -- test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)" - @list='$(libexec_SCRIPTS)'; test -n "$(libexecdir)" || list=; \ -+ if test -n "$$list"; then \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ -+ fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ -@@ -607,9 +921,7 @@ uninstall-libexecSCRIPTS: - @list='$(libexec_SCRIPTS)'; test -n "$(libexecdir)" || exit 0; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 's,.*/,,;$(transform)'`; \ -- test -n "$$list" || exit 0; \ -- echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ -- cd "$(DESTDIR)$(libexecdir)" && rm -f $$files -+ dir='$(DESTDIR)$(libexecdir)'; $(am__uninstall_files_from_dir) - - mostlyclean-compile: - -rm -f *.$(OBJEXT) -@@ -617,8 +929,11 @@ mostlyclean-compile: - distclean-compile: - -rm -f *.tab.c - -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-time.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/squidclient.Po@am__quote@ -@@ -627,84 +942,126 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@ - - .cc.o: --@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ - @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ - @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po --@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ - @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ --@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< - - .cc.obj: --@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ - @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ - @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po --@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ - @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ --@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - - .cc.lo: --@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ - @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ - @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo --@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ - @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ --@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< - - cachemgr__CGIEXT_-cachemgr.o: cachemgr.cc --@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-cachemgr.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo -c -o cachemgr__CGIEXT_-cachemgr.o `test -f 'cachemgr.cc' || echo '$(srcdir)/'`cachemgr.cc --@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po --@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='cachemgr.cc' object='cachemgr__CGIEXT_-cachemgr.o' libtool=no @AMDEPBACKSLASH@ -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-cachemgr.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo -c -o cachemgr__CGIEXT_-cachemgr.o `test -f 'cachemgr.cc' || echo '$(srcdir)/'`cachemgr.cc -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cachemgr.cc' object='cachemgr__CGIEXT_-cachemgr.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) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-cachemgr.o `test -f 'cachemgr.cc' || echo '$(srcdir)/'`cachemgr.cc -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-cachemgr.o `test -f 'cachemgr.cc' || echo '$(srcdir)/'`cachemgr.cc - - cachemgr__CGIEXT_-cachemgr.obj: cachemgr.cc --@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-cachemgr.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo -c -o cachemgr__CGIEXT_-cachemgr.obj `if test -f 'cachemgr.cc'; then $(CYGPATH_W) 'cachemgr.cc'; else $(CYGPATH_W) '$(srcdir)/cachemgr.cc'; fi` --@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po --@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='cachemgr.cc' object='cachemgr__CGIEXT_-cachemgr.obj' libtool=no @AMDEPBACKSLASH@ -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-cachemgr.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo -c -o cachemgr__CGIEXT_-cachemgr.obj `if test -f 'cachemgr.cc'; then $(CYGPATH_W) 'cachemgr.cc'; else $(CYGPATH_W) '$(srcdir)/cachemgr.cc'; fi` -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cachemgr.cc' object='cachemgr__CGIEXT_-cachemgr.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-cachemgr.obj `if test -f 'cachemgr.cc'; then $(CYGPATH_W) 'cachemgr.cc'; else $(CYGPATH_W) '$(srcdir)/cachemgr.cc'; fi` -+ -+cachemgr__CGIEXT_-MemBuf.o: MemBuf.cc -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-MemBuf.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Tpo -c -o cachemgr__CGIEXT_-MemBuf.o `test -f 'MemBuf.cc' || echo '$(srcdir)/'`MemBuf.cc -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Tpo $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MemBuf.cc' object='cachemgr__CGIEXT_-MemBuf.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-MemBuf.o `test -f 'MemBuf.cc' || echo '$(srcdir)/'`MemBuf.cc -+ -+cachemgr__CGIEXT_-MemBuf.obj: MemBuf.cc -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-MemBuf.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Tpo -c -o cachemgr__CGIEXT_-MemBuf.obj `if test -f 'MemBuf.cc'; then $(CYGPATH_W) 'MemBuf.cc'; else $(CYGPATH_W) '$(srcdir)/MemBuf.cc'; fi` -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Tpo $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MemBuf.cc' object='cachemgr__CGIEXT_-MemBuf.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-MemBuf.obj `if test -f 'MemBuf.cc'; then $(CYGPATH_W) 'MemBuf.cc'; else $(CYGPATH_W) '$(srcdir)/MemBuf.cc'; fi` -+ -+cachemgr__CGIEXT_-stub_cbdata.o: stub_cbdata.cc -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_cbdata.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Tpo -c -o cachemgr__CGIEXT_-stub_cbdata.o `test -f 'stub_cbdata.cc' || echo '$(srcdir)/'`stub_cbdata.cc -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stub_cbdata.cc' object='cachemgr__CGIEXT_-stub_cbdata.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_cbdata.o `test -f 'stub_cbdata.cc' || echo '$(srcdir)/'`stub_cbdata.cc -+ -+cachemgr__CGIEXT_-stub_cbdata.obj: stub_cbdata.cc -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_cbdata.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Tpo -c -o cachemgr__CGIEXT_-stub_cbdata.obj `if test -f 'stub_cbdata.cc'; then $(CYGPATH_W) 'stub_cbdata.cc'; else $(CYGPATH_W) '$(srcdir)/stub_cbdata.cc'; fi` -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stub_cbdata.cc' object='cachemgr__CGIEXT_-stub_cbdata.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) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-cachemgr.obj `if test -f 'cachemgr.cc'; then $(CYGPATH_W) 'cachemgr.cc'; else $(CYGPATH_W) '$(srcdir)/cachemgr.cc'; fi` -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_cbdata.obj `if test -f 'stub_cbdata.cc'; then $(CYGPATH_W) 'stub_cbdata.cc'; else $(CYGPATH_W) '$(srcdir)/stub_cbdata.cc'; fi` - - cachemgr__CGIEXT_-stub_debug.o: stub_debug.cc --@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_debug.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo -c -o cachemgr__CGIEXT_-stub_debug.o `test -f 'stub_debug.cc' || echo '$(srcdir)/'`stub_debug.cc --@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po --@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='stub_debug.cc' object='cachemgr__CGIEXT_-stub_debug.o' libtool=no @AMDEPBACKSLASH@ -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_debug.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo -c -o cachemgr__CGIEXT_-stub_debug.o `test -f 'stub_debug.cc' || echo '$(srcdir)/'`stub_debug.cc -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stub_debug.cc' object='cachemgr__CGIEXT_-stub_debug.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) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_debug.o `test -f 'stub_debug.cc' || echo '$(srcdir)/'`stub_debug.cc -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_debug.o `test -f 'stub_debug.cc' || echo '$(srcdir)/'`stub_debug.cc - - cachemgr__CGIEXT_-stub_debug.obj: stub_debug.cc --@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_debug.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo -c -o cachemgr__CGIEXT_-stub_debug.obj `if test -f 'stub_debug.cc'; then $(CYGPATH_W) 'stub_debug.cc'; else $(CYGPATH_W) '$(srcdir)/stub_debug.cc'; fi` --@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po --@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='stub_debug.cc' object='cachemgr__CGIEXT_-stub_debug.obj' libtool=no @AMDEPBACKSLASH@ -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_debug.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo -c -o cachemgr__CGIEXT_-stub_debug.obj `if test -f 'stub_debug.cc'; then $(CYGPATH_W) 'stub_debug.cc'; else $(CYGPATH_W) '$(srcdir)/stub_debug.cc'; fi` -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stub_debug.cc' object='cachemgr__CGIEXT_-stub_debug.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_debug.obj `if test -f 'stub_debug.cc'; then $(CYGPATH_W) 'stub_debug.cc'; else $(CYGPATH_W) '$(srcdir)/stub_debug.cc'; fi` -+ -+cachemgr__CGIEXT_-stub_mem.o: stub_mem.cc -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_mem.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Tpo -c -o cachemgr__CGIEXT_-stub_mem.o `test -f 'stub_mem.cc' || echo '$(srcdir)/'`stub_mem.cc -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stub_mem.cc' object='cachemgr__CGIEXT_-stub_mem.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) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_debug.obj `if test -f 'stub_debug.cc'; then $(CYGPATH_W) 'stub_debug.cc'; else $(CYGPATH_W) '$(srcdir)/stub_debug.cc'; fi` -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_mem.o `test -f 'stub_mem.cc' || echo '$(srcdir)/'`stub_mem.cc -+ -+cachemgr__CGIEXT_-stub_mem.obj: stub_mem.cc -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_mem.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Tpo -c -o cachemgr__CGIEXT_-stub_mem.obj `if test -f 'stub_mem.cc'; then $(CYGPATH_W) 'stub_mem.cc'; else $(CYGPATH_W) '$(srcdir)/stub_mem.cc'; fi` -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stub_mem.cc' object='cachemgr__CGIEXT_-stub_mem.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_mem.obj `if test -f 'stub_mem.cc'; then $(CYGPATH_W) 'stub_mem.cc'; else $(CYGPATH_W) '$(srcdir)/stub_mem.cc'; fi` - - cachemgr__CGIEXT_-test_tools.o: test_tools.cc --@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-test_tools.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo -c -o cachemgr__CGIEXT_-test_tools.o `test -f 'test_tools.cc' || echo '$(srcdir)/'`test_tools.cc --@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po --@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test_tools.cc' object='cachemgr__CGIEXT_-test_tools.o' libtool=no @AMDEPBACKSLASH@ -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-test_tools.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo -c -o cachemgr__CGIEXT_-test_tools.o `test -f 'test_tools.cc' || echo '$(srcdir)/'`test_tools.cc -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='test_tools.cc' object='cachemgr__CGIEXT_-test_tools.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) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-test_tools.o `test -f 'test_tools.cc' || echo '$(srcdir)/'`test_tools.cc -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-test_tools.o `test -f 'test_tools.cc' || echo '$(srcdir)/'`test_tools.cc - - cachemgr__CGIEXT_-test_tools.obj: test_tools.cc --@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-test_tools.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo -c -o cachemgr__CGIEXT_-test_tools.obj `if test -f 'test_tools.cc'; then $(CYGPATH_W) 'test_tools.cc'; else $(CYGPATH_W) '$(srcdir)/test_tools.cc'; fi` --@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po --@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test_tools.cc' object='cachemgr__CGIEXT_-test_tools.obj' libtool=no @AMDEPBACKSLASH@ -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-test_tools.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo -c -o cachemgr__CGIEXT_-test_tools.obj `if test -f 'test_tools.cc'; then $(CYGPATH_W) 'test_tools.cc'; else $(CYGPATH_W) '$(srcdir)/test_tools.cc'; fi` -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='test_tools.cc' object='cachemgr__CGIEXT_-test_tools.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) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-test_tools.obj `if test -f 'test_tools.cc'; then $(CYGPATH_W) 'test_tools.cc'; else $(CYGPATH_W) '$(srcdir)/test_tools.cc'; fi` -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-test_tools.obj `if test -f 'test_tools.cc'; then $(CYGPATH_W) 'test_tools.cc'; else $(CYGPATH_W) '$(srcdir)/test_tools.cc'; fi` - - cachemgr__CGIEXT_-time.o: time.cc --@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-time.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo -c -o cachemgr__CGIEXT_-time.o `test -f 'time.cc' || echo '$(srcdir)/'`time.cc --@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo $(DEPDIR)/cachemgr__CGIEXT_-time.Po --@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='time.cc' object='cachemgr__CGIEXT_-time.o' libtool=no @AMDEPBACKSLASH@ -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-time.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo -c -o cachemgr__CGIEXT_-time.o `test -f 'time.cc' || echo '$(srcdir)/'`time.cc -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo $(DEPDIR)/cachemgr__CGIEXT_-time.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='time.cc' object='cachemgr__CGIEXT_-time.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) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-time.o `test -f 'time.cc' || echo '$(srcdir)/'`time.cc -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-time.o `test -f 'time.cc' || echo '$(srcdir)/'`time.cc - - cachemgr__CGIEXT_-time.obj: time.cc --@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-time.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo -c -o cachemgr__CGIEXT_-time.obj `if test -f 'time.cc'; then $(CYGPATH_W) 'time.cc'; else $(CYGPATH_W) '$(srcdir)/time.cc'; fi` --@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo $(DEPDIR)/cachemgr__CGIEXT_-time.Po --@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='time.cc' object='cachemgr__CGIEXT_-time.obj' libtool=no @AMDEPBACKSLASH@ -+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-time.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo -c -o cachemgr__CGIEXT_-time.obj `if test -f 'time.cc'; then $(CYGPATH_W) 'time.cc'; else $(CYGPATH_W) '$(srcdir)/time.cc'; fi` -+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo $(DEPDIR)/cachemgr__CGIEXT_-time.Po -+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='time.cc' object='cachemgr__CGIEXT_-time.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) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-time.obj `if test -f 'time.cc'; then $(CYGPATH_W) 'time.cc'; else $(CYGPATH_W) '$(srcdir)/time.cc'; fi` -+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-time.obj `if test -f 'time.cc'; then $(CYGPATH_W) 'time.cc'; else $(CYGPATH_W) '$(srcdir)/time.cc'; fi` - - mostlyclean-libtool: - -rm -f *.lo -@@ -713,11 +1070,18 @@ clean-libtool: - -rm -rf .libs _libs - install-man1: $(man_MANS) - @$(NORMAL_INSTALL) -- test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" -- @list=''; test -n "$(man1dir)" || exit 0; \ -- { for i in $$list; do echo "$$i"; done; \ -- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ -- sed -n '/\.1[a-z]*$$/p'; \ -+ @list1=''; \ -+ list2='$(man_MANS)'; \ -+ test -n "$(man1dir)" \ -+ && test -n "`echo $$list1$$list2`" \ -+ || exit 0; \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ -+ { for i in $$list1; do echo "$$i"; done; \ -+ if test -n "$$list2"; then \ -+ for i in $$list2; do echo "$$i"; done \ -+ | sed -n '/\.1[a-z]*$$/p'; \ -+ fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ -@@ -746,16 +1110,21 @@ uninstall-man1: - sed -n '/\.1[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ -- test -z "$$files" || { \ -- echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ -- cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } -+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) - install-man8: $(man_MANS) - @$(NORMAL_INSTALL) -- test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)" -- @list=''; test -n "$(man8dir)" || exit 0; \ -- { for i in $$list; do echo "$$i"; done; \ -- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ -- sed -n '/\.8[a-z]*$$/p'; \ -+ @list1=''; \ -+ list2='$(man_MANS)'; \ -+ test -n "$(man8dir)" \ -+ && test -n "`echo $$list1$$list2`" \ -+ || exit 0; \ -+ echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \ -+ $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \ -+ { for i in $$list1; do echo "$$i"; done; \ -+ if test -n "$$list2"; then \ -+ for i in $$list2; do echo "$$i"; done \ -+ | sed -n '/\.8[a-z]*$$/p'; \ -+ fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ -@@ -784,27 +1153,28 @@ uninstall-man8: - sed -n '/\.8[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ -- test -z "$$files" || { \ -- echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \ -- cd "$(DESTDIR)$(man8dir)" && rm -f $$files; } -+ dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir) - - # This directory's subdirectories are mostly independent; you can cd --# into them and run `make' without going through this Makefile. --# To change the values of `make' variables: instead of editing Makefiles, --# (1) if the variable is set in `config.status', edit `config.status' --# (which will cause the Makefiles to be regenerated when you run `make'); --# (2) otherwise, pass the desired values on the `make' command line. --$(RECURSIVE_TARGETS): -- @fail= failcom='exit 1'; \ -- for f in x $$MAKEFLAGS; do \ -- case $$f in \ -- *=* | --[!k]*);; \ -- *k*) failcom='fail=yes';; \ -- esac; \ -- done; \ -+# into them and run 'make' without going through this Makefile. -+# To change the values of 'make' variables: instead of editing Makefiles, -+# (1) if the variable is set in 'config.status', edit 'config.status' -+# (which will cause the Makefiles to be regenerated when you run 'make'); -+# (2) otherwise, pass the desired values on the 'make' command line. -+$(am__recursive_targets): -+ @fail=; \ -+ if $(am__make_keepgoing); then \ -+ failcom='fail=yes'; \ -+ else \ -+ failcom='exit 1'; \ -+ fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ -- list='$(SUBDIRS)'; for subdir in $$list; do \ -+ case "$@" in \ -+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ -+ *) list='$(SUBDIRS)' ;; \ -+ esac; \ -+ for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ -@@ -819,57 +1189,12 @@ $(RECURSIVE_TARGETS): - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - --$(RECURSIVE_CLEAN_TARGETS): -- @fail= failcom='exit 1'; \ -- for f in x $$MAKEFLAGS; do \ -- case $$f in \ -- *=* | --[!k]*);; \ -- *k*) failcom='fail=yes';; \ -- esac; \ -- done; \ -- dot_seen=no; \ -- case "$@" in \ -- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ -- *) list='$(SUBDIRS)' ;; \ -- esac; \ -- rev=''; for subdir in $$list; do \ -- if test "$$subdir" = "."; then :; else \ -- rev="$$subdir $$rev"; \ -- fi; \ -- done; \ -- rev="$$rev ."; \ -- target=`echo $@ | sed s/-recursive//`; \ -- for subdir in $$rev; do \ -- echo "Making $$target in $$subdir"; \ -- if test "$$subdir" = "."; then \ -- local_target="$$target-am"; \ -- else \ -- local_target="$$target"; \ -- fi; \ -- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -- || eval $$failcom; \ -- done && test -z "$$fail" --tags-recursive: -- list='$(SUBDIRS)'; for subdir in $$list; do \ -- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ -- done --ctags-recursive: -- list='$(SUBDIRS)'; for subdir in $$list; do \ -- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ -- done -+ID: $(am__tagged_files) -+ $(am__define_uniq_tagged_files); mkid -fID $$unique -+tags: tags-recursive -+TAGS: tags - --ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -- unique=`for i in $$list; do \ -- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -- done | \ -- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -- END { if (nonempty) { for (i in files) print i; }; }'`; \ -- mkid -fID $$unique --tags: TAGS -- --TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -- $(TAGS_FILES) $(LISP) -+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ -@@ -885,12 +1210,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ -- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -- unique=`for i in $$list; do \ -- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -- done | \ -- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -- END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ -@@ -902,15 +1222,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $$unique; \ - fi; \ - fi --ctags: CTAGS --CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -- $(TAGS_FILES) $(LISP) -- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -- unique=`for i in $$list; do \ -- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -- done | \ -- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -- END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ctags: ctags-recursive -+ -+CTAGS: ctags -+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) -+ $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique -@@ -919,116 +1235,182 @@ GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -+cscopelist: cscopelist-recursive -+ -+cscopelist-am: $(am__tagged_files) -+ list='$(am__tagged_files)'; \ -+ case "$(srcdir)" in \ -+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ -+ *) sdir=$(subdir)/$(srcdir) ;; \ -+ esac; \ -+ for i in $$list; do \ -+ if test -f "$$i"; then \ -+ echo "$(subdir)/$$i"; \ -+ else \ -+ echo "$$sdir/$$i"; \ -+ fi; \ -+ done >> $(top_builddir)/cscope.files - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - --check-TESTS: $(TESTS) -- @failed=0; all=0; xfail=0; xpass=0; skip=0; \ -- srcdir=$(srcdir); export srcdir; \ -- list=' $(TESTS) '; \ -- $(am__tty_colors); \ -- if test -n "$$list"; then \ -- for tst in $$list; do \ -- if test -f ./$$tst; then dir=./; \ -- elif test -f $$tst; then dir=; \ -- else dir="$(srcdir)/"; fi; \ -- if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ -- all=`expr $$all + 1`; \ -- case " $(XFAIL_TESTS) " in \ -- *[\ \ ]$$tst[\ \ ]*) \ -- xpass=`expr $$xpass + 1`; \ -- failed=`expr $$failed + 1`; \ -- col=$$red; res=XPASS; \ -- ;; \ -- *) \ -- col=$$grn; res=PASS; \ -- ;; \ -- esac; \ -- elif test $$? -ne 77; then \ -- all=`expr $$all + 1`; \ -- case " $(XFAIL_TESTS) " in \ -- *[\ \ ]$$tst[\ \ ]*) \ -- xfail=`expr $$xfail + 1`; \ -- col=$$lgn; res=XFAIL; \ -- ;; \ -- *) \ -- failed=`expr $$failed + 1`; \ -- col=$$red; res=FAIL; \ -- ;; \ -- esac; \ -- else \ -- skip=`expr $$skip + 1`; \ -- col=$$blu; res=SKIP; \ -- fi; \ -- echo "$${col}$$res$${std}: $$tst"; \ -- done; \ -- if test "$$all" -eq 1; then \ -- tests="test"; \ -- All=""; \ -- else \ -- tests="tests"; \ -- All="All "; \ -+# Recover from deleted '.trs' file; this should ensure that -+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create -+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells -+# to avoid problems with "make -n". -+.log.trs: -+ rm -f $< $@ -+ $(MAKE) $(AM_MAKEFLAGS) $< -+ -+# Leading 'am--fnord' is there to ensure the list of targets does not -+# expand to empty, as could happen e.g. with make check TESTS=''. -+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) -+am--force-recheck: -+ @: -+ -+$(TEST_SUITE_LOG): $(TEST_LOGS) -+ @$(am__set_TESTS_bases); \ -+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ -+ redo_bases=`for i in $$bases; do \ -+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ -+ done`; \ -+ if test -n "$$redo_bases"; then \ -+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ -+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ -+ if $(am__make_dryrun); then :; else \ -+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ - fi; \ -- if test "$$failed" -eq 0; then \ -- if test "$$xfail" -eq 0; then \ -- banner="$$All$$all $$tests passed"; \ -- else \ -- if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ -- banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ -- fi; \ -- else \ -- if test "$$xpass" -eq 0; then \ -- banner="$$failed of $$all $$tests failed"; \ -+ fi; \ -+ if test -n "$$am__remaking_logs"; then \ -+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ -+ "recursion detected" >&2; \ -+ elif test -n "$$redo_logs"; then \ -+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ -+ fi; \ -+ if $(am__make_dryrun); then :; else \ -+ st=0; \ -+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ -+ for i in $$redo_bases; do \ -+ test -f $$i.trs && test -r $$i.trs \ -+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ -+ test -f $$i.log && test -r $$i.log \ -+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ -+ done; \ -+ test $$st -eq 0 || exit 1; \ -+ fi -+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ -+ ws='[ ]'; \ -+ results=`for b in $$bases; do echo $$b.trs; done`; \ -+ test -n "$$results" || results=/dev/null; \ -+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ -+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ -+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ -+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ -+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ -+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ -+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ -+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ -+ success=true; \ -+ else \ -+ success=false; \ -+ fi; \ -+ br='==================='; br=$$br$$br$$br$$br; \ -+ result_count () \ -+ { \ -+ if test x"$$1" = x"--maybe-color"; then \ -+ maybe_colorize=yes; \ -+ elif test x"$$1" = x"--no-color"; then \ -+ maybe_colorize=no; \ - else \ -- if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ -- banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ -+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ - fi; \ -- fi; \ -- dashes="$$banner"; \ -- skipped=""; \ -- if test "$$skip" -ne 0; then \ -- if test "$$skip" -eq 1; then \ -- skipped="($$skip test was not run)"; \ -+ shift; \ -+ desc=$$1 count=$$2; \ -+ if test $$maybe_colorize = yes && test $$count -gt 0; then \ -+ color_start=$$3 color_end=$$std; \ - else \ -- skipped="($$skip tests were not run)"; \ -+ color_start= color_end=; \ - fi; \ -- test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ -- dashes="$$skipped"; \ -- fi; \ -- report=""; \ -- if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ -- report="Please report to $(PACKAGE_BUGREPORT)"; \ -- test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ -- dashes="$$report"; \ -- fi; \ -- dashes=`echo "$$dashes" | sed s/./=/g`; \ -- if test "$$failed" -eq 0; then \ -- echo "$$grn$$dashes"; \ -- else \ -- echo "$$red$$dashes"; \ -- fi; \ -- echo "$$banner"; \ -- test -z "$$skipped" || echo "$$skipped"; \ -- test -z "$$report" || echo "$$report"; \ -- echo "$$dashes$$std"; \ -- test "$$failed" -eq 0; \ -- else :; fi -+ echo "$${color_start}# $$desc $$count$${color_end}"; \ -+ }; \ -+ create_testsuite_report () \ -+ { \ -+ result_count $$1 "TOTAL:" $$all "$$brg"; \ -+ result_count $$1 "PASS: " $$pass "$$grn"; \ -+ result_count $$1 "SKIP: " $$skip "$$blu"; \ -+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ -+ result_count $$1 "FAIL: " $$fail "$$red"; \ -+ result_count $$1 "XPASS:" $$xpass "$$red"; \ -+ result_count $$1 "ERROR:" $$error "$$mgn"; \ -+ }; \ -+ { \ -+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ -+ $(am__rst_title); \ -+ create_testsuite_report --no-color; \ -+ echo; \ -+ echo ".. contents:: :depth: 2"; \ -+ echo; \ -+ for b in $$bases; do echo $$b; done \ -+ | $(am__create_global_log); \ -+ } >$(TEST_SUITE_LOG).tmp || exit 1; \ -+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ -+ if $$success; then \ -+ col="$$grn"; \ -+ else \ -+ col="$$red"; \ -+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ -+ fi; \ -+ echo "$${col}$$br$${std}"; \ -+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ -+ echo "$${col}$$br$${std}"; \ -+ create_testsuite_report --maybe-color; \ -+ echo "$$col$$br$$std"; \ -+ if $$success; then :; else \ -+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ -+ if test -n "$(PACKAGE_BUGREPORT)"; then \ -+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ -+ fi; \ -+ echo "$$col$$br$$std"; \ -+ fi; \ -+ $$success || exit 1 -+ -+check-TESTS: -+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list -+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list -+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) -+ @set +e; $(am__set_TESTS_bases); \ -+ log_list=`for i in $$bases; do echo $$i.log; done`; \ -+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ -+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ -+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ -+ exit $$?; -+recheck: all $(check_PROGRAMS) -+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) -+ @set +e; $(am__set_TESTS_bases); \ -+ bases=`for i in $$bases; do echo $$i; done \ -+ | $(am__list_recheck_tests)` || exit 1; \ -+ log_list=`for i in $$bases; do echo $$i.log; done`; \ -+ log_list=`echo $$log_list`; \ -+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ -+ am__force_recheck=am--force-recheck \ -+ TEST_LOGS="$$log_list"; \ -+ exit $$? -+.test.log: -+ @p='$<'; \ -+ $(am__set_b); \ -+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ -+ --log-file $$b.log --trs-file $$b.trs \ -+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ -+ "$$tst" $(AM_TESTS_FD_REDIRECT) -+@am__EXEEXT_TRUE@.test$(EXEEXT).log: -+@am__EXEEXT_TRUE@ @p='$<'; \ -+@am__EXEEXT_TRUE@ $(am__set_b); \ -+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ -+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ -+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ -+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) - - distdir: $(DISTFILES) -- @list='$(MANS)'; if test -n "$$list"; then \ -- list=`for p in $$list; do \ -- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ -- if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ -- if test -n "$$list" && \ -- grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ -- echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ -- grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ -- echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ -- echo " typically \`make maintainer-clean' will remove them" >&2; \ -- exit 1; \ -- else :; fi; \ -- else :; fi - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ -@@ -1060,13 +1442,10 @@ distdir: $(DISTFILES) - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ -- test -d "$(distdir)/$$subdir" \ -- || $(MKDIR_P) "$(distdir)/$$subdir" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -+ $(am__make_dryrun) \ -+ || test -d "$(distdir)/$$subdir" \ -+ || $(MKDIR_P) "$(distdir)/$$subdir" \ -+ || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ -@@ -1106,11 +1485,19 @@ install-am: all-am - - installcheck: installcheck-recursive - install-strip: -- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -- `test -z '$(STRIP)' || \ -- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+ if test -z '$(STRIP)'; then \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ install; \ -+ else \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ -+ fi - mostlyclean-generic: -+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) - - clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) -@@ -1198,13 +1585,12 @@ uninstall-am: uninstall-binPROGRAMS uninstall-libexecPROGRAMS \ - - uninstall-man: uninstall-man1 uninstall-man8 - --.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \ -- ctags-recursive install-am install-strip tags-recursive -+.MAKE: $(am__recursive_targets) check-am install-am install-strip - --.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ -- all all-am check check-TESTS check-am clean clean-binPROGRAMS \ -+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ -+ check-TESTS check-am clean clean-binPROGRAMS \ - clean-checkPROGRAMS clean-generic clean-libexecPROGRAMS \ -- clean-libtool ctags ctags-recursive distclean \ -+ clean-libtool cscopelist-am ctags ctags-am distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-binPROGRAMS install-data \ -@@ -1216,11 +1602,13 @@ uninstall-man: uninstall-man1 uninstall-man8 - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-compile mostlyclean-generic \ -- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ -+ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ - uninstall uninstall-am uninstall-binPROGRAMS \ - uninstall-libexecPROGRAMS uninstall-libexecSCRIPTS \ - uninstall-local uninstall-man uninstall-man1 uninstall-man8 - -+.PRECIOUS: Makefile -+ - - $(OBJS): $(top_srcdir)/include/version.h $(top_builddir)/include/autoconf.h - -@@ -1230,9 +1618,18 @@ test_tools.cc: $(top_srcdir)/test-suite/test_tools.cc - stub_debug.cc: $(top_srcdir)/src/tests/stub_debug.cc - cp $(top_srcdir)/src/tests/stub_debug.cc . - -+MemBuf.cc: $(top_srcdir)/src/MemBuf.cc -+ cp $(top_srcdir)/src/MemBuf.cc $@ -+ - time.cc: $(top_srcdir)/src/time.cc - cp $(top_srcdir)/src/time.cc . - -+stub_cbdata.cc: $(top_srcdir)/src/tests/stub_cbdata.cc -+ cp $(top_srcdir)/src/tests/stub_cbdata.cc $@ -+ -+stub_mem.cc: $(top_srcdir)/src/tests/stub_mem.cc -+ cp $(top_srcdir)/src/tests/stub_mem.cc $@ -+ - cachemgr.cgi.8: $(srcdir)/cachemgr.cgi.8.in Makefile - $(SUBSTITUTE) < $(srcdir)/cachemgr.cgi.8.in > $@ - diff --git a/SOURCES/squid-CVE-2016-4052.patch b/SOURCES/squid-CVE-2016-4052.patch deleted file mode 100644 index 16288eb..0000000 --- a/SOURCES/squid-CVE-2016-4052.patch +++ /dev/null @@ -1,83 +0,0 @@ -diff --git a/src/esi/Assign.cc b/src/esi/Assign.cc -index eb68e84..08ce5a5 100644 ---- a/src/esi/Assign.cc -+++ b/src/esi/Assign.cc -@@ -41,6 +41,7 @@ - #include "esi/Assign.h" - #include "esi/Context.h" - #include "esi/Sequence.h" -+#include "HttpReply.h" - - ESIAssign::~ESIAssign() - { -diff --git a/src/esi/Esi.cc b/src/esi/Esi.cc -index 60c2344..ef236a9 100644 ---- a/src/esi/Esi.cc -+++ b/src/esi/Esi.cc -@@ -1007,7 +1006,7 @@ ESIContext::start(const char *el, const char **attr, size_t attrCount) - ESIElement::Pointer element; - int specifiedattcount = attrCount * 2; - char *position; -- assert (ellen < sizeof (localbuf)); /* prevent unexpected overruns. */ -+ Must(ellen < sizeof(localbuf)); /* prevent unexpected overruns. */ - - debugs(86, 5, "ESIContext::Start: element '" << el << "' with " << specifiedattcount << " tags"); - -@@ -1021,15 +1020,17 @@ ESIContext::start(const char *el, const char **attr, size_t attrCount) - /* Spit out elements we aren't interested in */ - localbuf[0] = '<'; - localbuf[1] = '\0'; -- assert (xstrncpy (&localbuf[1], el, sizeof(localbuf) - 2)); -+ xstrncpy(&localbuf[1], el, sizeof(localbuf) - 2); - position = localbuf + strlen (localbuf); - - for (i = 0; i < specifiedattcount && attr[i]; i += 2) { -+ Must(static_cast(position - localbuf) < sizeof(localbuf) - 1); - *position = ' '; - ++position; - /* TODO: handle thisNode gracefully */ -- assert (xstrncpy (position, attr[i], sizeof(localbuf) + (position - localbuf))); -+ xstrncpy(position, attr[i], sizeof(localbuf) - (position - localbuf)); - position += strlen (position); -+ Must(static_cast(position - localbuf) < sizeof(localbuf) - 2); - *position = '='; - ++position; - *position = '\"'; -@@ -1038,18 +1039,21 @@ ESIContext::start(const char *el, const char **attr, size_t attrCount) - char ch; - while ((ch = *chPtr++) != '\0') { - if (ch == '\"') { -- assert( xstrncpy(position, """, sizeof(localbuf) + (position-localbuf)) ); -+ Must(static_cast(position - localbuf) < sizeof(localbuf) - 6); -+ xstrncpy(position, """, sizeof(localbuf) - (position-localbuf)); - position += 6; - } else { -+ Must(static_cast(position - localbuf) < sizeof(localbuf) - 1); - *position = ch; - ++position; - } - } -- position += strlen (position); -+ Must(static_cast(position - localbuf) < sizeof(localbuf) - 1); - *position = '\"'; - ++position; - } - -+ Must(static_cast(position - localbuf) < sizeof(localbuf) - 2); - *position = '>'; - ++position; - *position = '\0'; -@@ -1135,11 +1139,11 @@ ESIContext::end(const char *el) - switch (ESIElement::IdentifyElement (el)) { - - case ESIElement::ESI_ELEMENT_NONE: -- assert (ellen < sizeof (localbuf)); /* prevent unexpected overruns. */ -+ Must(ellen < sizeof(localbuf) - 3); /* prevent unexpected overruns. */ - /* Add elements we aren't interested in */ - localbuf[0] = '<'; - localbuf[1] = '/'; -- assert (xstrncpy (&localbuf[2], el, sizeof(localbuf) - 3)); -+ xstrncpy(&localbuf[2], el, sizeof(localbuf) - 3); - position = localbuf + strlen (localbuf); - *position = '>'; - ++position; diff --git a/SOURCES/squid-CVE-2016-4553.patch b/SOURCES/squid-CVE-2016-4553.patch deleted file mode 100644 index 5242e63..0000000 --- a/SOURCES/squid-CVE-2016-4553.patch +++ /dev/null @@ -1,49 +0,0 @@ ------------------------------------------------------------- -revno: 13240 -revision-id: squid3@treenet.co.nz-20160509131121-4saxl1wj54n20lgf -parent: squid3@treenet.co.nz-20160508124218-6vhq4icj0fwu5aof -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4501 -committer: Amos Jeffries -branch nick: 3.4 -timestamp: Tue 2016-05-10 01:11:21 +1200 -message: - Bug 4501: HTTP/1.1: normalize Host header ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20160509131121-4saxl1wj54n20lgf -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.4 -# testament_sha1: 017af15dae3e77239e9b2449dc2f2711707447d9 -# timestamp: 2016-05-09 13:13:52 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.4 -# base_revision_id: squid3@treenet.co.nz-20160508124218-\ -# 6vhq4icj0fwu5aof -# -# Begin patch -=== modified file 'src/client_side.cc' ---- src/client_side.cc 2015-08-28 13:23:34 +0000 -+++ src/client_side.cc 2016-05-09 13:11:21 +0000 -@@ -2740,6 +2740,23 @@ - goto finish; - } - -+ // when absolute-URI is provided Host header should be ignored. However -+ // some code still uses Host directly so normalize it. -+ // For now preserve the case where Host is completely absent. -+ if (request->header.has(HDR_HOST)) { -+ const char *host = request->header.getStr(HDR_HOST); -+ MemBuf authority; -+ authority.init(); -+ if (request->port != urlDefaultPort(request->protocol)) -+ authority.Printf("%s:%d", request->GetHost(), request->port); -+ else -+ authority.Printf("%s", request->GetHost()); -+ debugs(33, 5, "URL domain " << authority.buf << " overrides header Host: " << host); -+ // URL authority overrides Host header -+ request->header.delById(HDR_HOST); -+ request->header.putStr(HDR_HOST, authority.buf); -+ } -+ - request->clientConnectionManager = conn; - - request->flags.accelerated = http->flags.accel; - diff --git a/SOURCES/squid-CVE-2016-4554.patch b/SOURCES/squid-CVE-2016-4554.patch deleted file mode 100644 index eb7d079..0000000 --- a/SOURCES/squid-CVE-2016-4554.patch +++ /dev/null @@ -1,75 +0,0 @@ ------------------------------------------------------------- -revno: 12698 -revision-id: squid3@treenet.co.nz-20160502034346-fhtahpk2lfblo2b1 -parent: squid3@treenet.co.nz-20160420111636-ft1dbd1iuktj8ift -committer: Amos Jeffries -branch nick: 3.3 -timestamp: Mon 2016-05-02 15:43:46 +1200 -message: - Require exact match in Host header name lookup ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20160502034346-fhtahpk2lfblo2b1 -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 -# testament_sha1: 6e285b375879d79c870bff268c99ef2597f1b725 -# timestamp: 2016-05-02 03:50:49 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 -# base_revision_id: squid3@treenet.co.nz-20160420111636-\ -# ft1dbd1iuktj8ift -# -# Begin patch -=== modified file 'src/mime_header.cc' ---- src/mime_header.cc 2012-08-29 12:36:10 +0000 -+++ src/mime_header.cc 2016-05-02 03:43:46 +0000 -@@ -62,9 +62,6 @@ - if (strcmp(p, "\r\n\r\n") == 0 || strcmp(p, "\n\n") == 0) - return NULL; - -- while (xisspace(*p)) -- ++p; -- - if (strncasecmp(p, name, namelen)) - continue; - - ------------------------------------------------------------- -revno: 12700 -revision-id: squid3@treenet.co.nz-20160508124255-w1vb9ifv5affhgai -parent: squid3@treenet.co.nz-20160506091321-tza59kjh2g6goob0 -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4515 -committer: Amos Jeffries -branch nick: 3.3 -timestamp: Mon 2016-05-09 00:42:55 +1200 -message: - Bug 4515: regression after CVE-2016-4554 patch ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20160508124255-w1vb9ifv5affhgai -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 -# testament_sha1: 5ff66676035dc7841f6eb610dee8739dc015f29c -# timestamp: 2016-05-08 12:50:57 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 -# base_revision_id: squid3@treenet.co.nz-20160506091321-\ -# tza59kjh2g6goob0 -# -# Begin patch -=== modified file 'src/mime_header.cc' ---- src/mime_header.cc 2016-05-02 03:43:46 +0000 -+++ src/mime_header.cc 2016-05-08 12:42:55 +0000 -@@ -58,10 +58,13 @@ - - debugs(25, 5, "mime_get_header: looking for '" << name << "'"); - -- for (p = mime; *p; p += strcspn(p, "\n\r")) { -- if (strcmp(p, "\r\n\r\n") == 0 || strcmp(p, "\n\n") == 0) -+ for (p = mime; *p; p += strcspn(p, "\n")) { -+ if (strcmp(p, "\n\r\n") == 0 || strcmp(p, "\n\n") == 0) - return NULL; - -+ if (*p == '\n') -+ ++p; -+ - if (strncasecmp(p, name, namelen)) - continue; - - diff --git a/SOURCES/squid-CVE-2016-4555.patch b/SOURCES/squid-CVE-2016-4555.patch deleted file mode 100644 index 2757cb6..0000000 --- a/SOURCES/squid-CVE-2016-4555.patch +++ /dev/null @@ -1,46 +0,0 @@ ------------------------------------------------------------- -revno: 13237 -revision-id: squid3@treenet.co.nz-20160506091244-3td2be9qbzsajxg8 -parent: squid3@treenet.co.nz-20160502034253-axee4hqa4wuhlpkg -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4455 -committer: Amos Jeffries -branch nick: 3.4 -timestamp: Fri 2016-05-06 21:12:44 +1200 -message: - Bug 4455: SegFault from ESIInclude::Start ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20160506091244-3td2be9qbzsajxg8 -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.4 -# testament_sha1: b9714bc153e5fd6e8fe505a6c1d8a54c88e03a77 -# timestamp: 2016-05-06 09:48:43 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.4 -# base_revision_id: squid3@treenet.co.nz-20160502034253-\ -# axee4hqa4wuhlpkg -# -# Begin patch -=== modified file 'src/client_side_request.cc' ---- src/client_side_request.cc 2014-04-09 16:53:05 +0000 -+++ src/client_side_request.cc 2016-05-06 09:12:44 +0000 -@@ -163,13 +163,15 @@ - start_time = current_time; - setConn(aConn); - al = new AccessLogEntry; -- al->tcpClient = clientConnection = aConn->clientConnection; -+ if (aConn) { -+ al->tcpClient = clientConnection = aConn->clientConnection; - #if USE_SSL -- if (aConn->clientConnection != NULL && aConn->clientConnection->isOpen()) { -- if (SSL *ssl = fd_table[aConn->clientConnection->fd].ssl) -- al->cache.sslClientCert.reset(SSL_get_peer_certificate(ssl)); -+ if (aConn->clientConnection != NULL && aConn->clientConnection->isOpen()) { -+ if (SSL *ssl = fd_table[aConn->clientConnection->fd].ssl) -+ al->cache.sslClientCert.reset(SSL_get_peer_certificate(ssl)); -+ } -+#endif - } --#endif - dlinkAdd(this, &active, &ClientActiveRequests); - #if USE_ADAPTATION - request_satisfaction_mode = false; - diff --git a/SOURCES/squid-CVE-2016-4556.patch b/SOURCES/squid-CVE-2016-4556.patch deleted file mode 100644 index da1006c..0000000 --- a/SOURCES/squid-CVE-2016-4556.patch +++ /dev/null @@ -1,99 +0,0 @@ ------------------------------------------------------------- -revno: 13238 -revision-id: squid3@treenet.co.nz-20160506094614-zyjq1i8ym2gcvwbu -parent: squid3@treenet.co.nz-20160506091244-3td2be9qbzsajxg8 -committer: Amos Jeffries -branch nick: 3.4 -timestamp: Fri 2016-05-06 21:46:14 +1200 -message: - Fix SIGSEGV in ESIContext response handling - - HttpReply pointer was being unlocked without heving been locked. - Resulting in a double-free. Make it use RefCount instead of - manual locking to ensure locked/unlock is always symmetrical. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20160506094614-zyjq1i8ym2gcvwbu -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.4 -# testament_sha1: 4ff01cd3aaffb8c9b20b8595d2ee0ccfcf434b3f -# timestamp: 2016-05-06 09:48:45 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.4 -# base_revision_id: squid3@treenet.co.nz-20160506091244-\ -# 3td2be9qbzsajxg8 -# -# Begin patch -=== modified file 'src/esi/Esi.cc' ---- src/esi/Esi.cc 2016-04-20 11:15:14 +0000 -+++ src/esi/Esi.cc 2016-05-06 09:46:14 +0000 -@@ -598,7 +598,7 @@ - - #endif - -- if (!(rep || (outbound.getRaw() && -+ if (!(rep != NULL || (outbound.getRaw() && - outbound->len && (outbound_offset <= outbound->len)))) { - debugs(86, 5, "ESIContext::send: Nothing to send."); - return 0; -@@ -643,18 +643,18 @@ - flags.clientwantsdata = 0; - debugs(86, 5, "ESIContext::send: this=" << this << " Client no longer wants data "); - /* Deal with re-entrancy */ -- HttpReply *temprep = rep; -+ HttpReply::Pointer temprep = rep; - rep = NULL; /* freed downstream */ - -- if (temprep && varState) -- varState->buildVary (temprep); -+ if (temprep != NULL && varState) -+ varState->buildVary(temprep.raw()); - - { - StoreIOBuffer tempBuffer; - tempBuffer.length = len; - tempBuffer.offset = pos - len; - tempBuffer.data = next->readBuffer.data; -- clientStreamCallback (thisNode, http, temprep, tempBuffer); -+ clientStreamCallback (thisNode, http, temprep.raw(), tempBuffer); - } - - if (len == 0) -@@ -1284,7 +1284,7 @@ - ++parserState.stackdepth; - } - -- if (rep && !parserState.inited()) -+ if (rep != NULL && !parserState.inited()) - parserState.init(this); - - /* we have data */ -@@ -1423,7 +1423,7 @@ - { - debugs(86, 5, HERE << "Freeing for this=" << this); - -- HTTPMSGUNLOCK(rep); -+ rep = NULL; // refcounted - - finishChildren (); - - -diff --git src/esi/Context.h src/esi/Context.h -index baae3fd..dcdcf05 100644 ---- src/esi/Context.h -+++ src/esi/Context.h -@@ -36,6 +36,7 @@ - #include "esi/Element.h" - #include "clientStream.h" - #include "err_type.h" -+#include "HttpReply.h" - #include "HttpStatusCode.h" - - class ESIVarState; -@@ -116,7 +117,7 @@ public: - err_type errorpage; /* if we error what page to use */ - http_status errorstatus; /* if we error, what code to return */ - char *errormessage; /* error to pass to error page */ -- HttpReply *rep; /* buffered until we pass data downstream */ -+ HttpReply::Pointer rep; /* buffered until we pass data downstream */ - ESISegment::Pointer buffered; /* unprocessed data - for whatever reason */ - ESISegment::Pointer incoming; - /* processed data we are waiting to send, or for diff --git a/SOURCES/squid-migrate-conf.py b/SOURCES/squid-migrate-conf.py new file mode 100644 index 0000000..13e1c22 --- /dev/null +++ b/SOURCES/squid-migrate-conf.py @@ -0,0 +1,287 @@ +#!/usr/bin/python -tt +# -*- coding: utf-8 -*- +# +# This script will help you with migration squid-3.3 conf files to squid-3.5 conf files +# Copyright (C) 2016 Red Hat, Inc. +# +# 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 +# he 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., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Authors: Lubos Uhliarik + +import sys +import os +import re +import shutil +import traceback +import argparse +import glob + +class ConfMigration: + RE_LOG_ACCESS="log_access\s+(\w+)\s+" + RE_LOG_ACCESS_DENY_REP="access_log none " + RE_LOG_ACCESS_ALLOW_REP="access_log daemon:/var/log/squid/access.log squid " + RE_LOG_ACCESS_TEXT="log_access" + + RE_LOG_ICAP="log_icap\s+" + RE_LOG_ICAP_REP="icap_log daemon:/var/log/squid/icap.log " + RE_LOG_ICAP_TEXT="log_icap" + + RE_HIER_STOPLIST="hierarchy_stoplist\s+(.*)" + RE_HIER_STOPLIST_REP="acl %s url_regex %s\nalways_direct allow %s" + RE_HIER_STOPLIST_TEXT="hierarchy_stoplist" + + HIER_ACL_NAME="migrated_hs_%d_%d" + + RE_INCLUDE_CHECK="\s*include\s+(.*)" + + COMMENT_FMT="# migrated automatically by squid-migrate-conf, the original configuration was: %s\n%s" + + DEFAULT_SQUID_CONF="/etc/squid/squid.conf" + DEFAULT_BACKUP_EXT=".bak" + DEFAULT_LEVEL_INDENT=3 + + MAX_NESTED_INCLUDES=16 + + def __init__(self, args, level=0, squid_conf='', conf_seq=0): + self.args = args + + if squid_conf: + self.squid_conf = squid_conf + else: + self.squid_conf = args.squid_conf + self.write_changes = args.write_changes + self.debug = args.debug + + self.conf_seq = conf_seq + self.acl_seq = 0 + + self.line_num = 0 + self.level = level + if (not os.path.isfile(self.squid_conf)): + sys.stderr.write("%sError: the config file %s does not exist\n" % (self.get_prefix_str(), self.squid_conf)) + sys.exit(1) + + self.squid_bak_conf = self.get_backup_name() + + self.migrated_squid_conf_data = [] + self.squid_conf_data = None + + + print ("Migrating: " + self.squid_conf) + + def print_info(self, text=''): + if (self.debug): + print "%s%s" % (self.get_prefix_str(), text) + + def get_backup_name(self): + file_idx = 1 + tmp_fn = self.squid_conf + self.DEFAULT_BACKUP_EXT + + while (os.path.isfile(tmp_fn)): + tmp_fn = self.squid_conf + self.DEFAULT_BACKUP_EXT + str(file_idx) + file_idx = file_idx + 1 + + return tmp_fn + + # + # From squid config documentation: + # + # Configuration options can be included using the "include" directive. + # Include takes a list of files to include. Quoting and wildcards are + # supported. + # + # For example, + # + # include /path/to/included/file/squid.acl.config + # + # Includes can be nested up to a hard-coded depth of 16 levels. + # This arbitrary restriction is to prevent recursive include references + # from causing Squid entering an infinite loop whilst trying to load + # configuration files. + # + def check_include(self, line=''): + m = re.match(self.RE_INCLUDE_CHECK, line) + include_list = "" + if not (m is None): + include_list = re.split('\s+', m.group(1)) + for include_file_re in include_list: + # included file can be written in regexp syntax + for include_file in glob.glob(include_file_re): + self.print_info("A config file %s was found and it will be included" % (include_file)) + if os.path.isfile(include_file): + self.print_info("Migrating the included config file %s" % (include_file)) + conf = ConfMigration(self.args, self.level+1, include_file, self.conf_seq+1) + conf.migrate() + + # check, if included file exists + if (len(glob.glob(include_file_re)) == 0 and not (os.path.isfile(include_file_re))): + self.print_info("The config file %s does not exist." % (include_file_re)) + + def print_sub_text(self, text, new_str): + if self.write_changes: + print "File: '%s', line: %d - the directive %s was replaced by %s" % (self.squid_conf, self.line_num, text, new_str) + else: + print "File: '%s', line: %d - the directive %s could be replaced by %s" % (self.squid_conf, self.line_num, text, new_str) + + def add_conf_comment(self, old_line, line): + return self.COMMENT_FMT % (old_line, line) + + def sub_line_ad(self, line, line_re, allow_sub, deny_sub, text): + new_line = line + m = re.match(line_re, line) + if not (m is None): + # check, if allow or deny was used and select coresponding sub + sub_text = allow_sub + if (re.match('allow', m.group(1), re.IGNORECASE)): + new_line = re.sub(line_re, sub_text, line) + elif (re.match('deny', m.group(1), re.IGNORECASE)): + sub_text = deny_sub + new_line = re.sub(line_re, sub_text, line) + + # print out, if there was any change and add comment to conf line, if so + if not (new_line is line): + self.print_sub_text(text + " " + m.group(1), sub_text) + new_line = self.add_conf_comment(line, new_line) + + return new_line + + def sub_line(self, line, line_re, sub, text): + new_line = line + m = re.match(line_re, line) + if not (m is None): + new_line = re.sub(line_re, sub, line) + + # print out, if there was any change and add comment to conf line, if so + if not (new_line is line): + self.print_sub_text(text, sub) + new_line = self.add_conf_comment(line, new_line) + + return new_line + + def rep_hier_stoplist(self, line, sub, words): + wordlist = words.split(' ') + + esc_wordlist = [] + for w in wordlist: + esc_wordlist.append(re.escape(w)) + + # unique acl name for hierarchy_stoplist acl + acl_name = self.HIER_ACL_NAME % (self.conf_seq, self.acl_seq) + return sub % (acl_name, ' '.join(esc_wordlist), acl_name) + + def sub_hier_stoplist(self, line, line_re, sub, text): + new_line = line + m = re.match(line_re, line) + if (not (m is None)): + new_line = self.rep_hier_stoplist(line, sub, m.group(1)) + + # print out, if there was any change and add comment to conf line, if so + if not (new_line is line): + self.print_sub_text(text, sub) + new_line = self.add_conf_comment(line, new_line) + + return new_line + + def process_conf_lines(self): + for line in self.squid_conf_data.split(os.linesep): + + # do not migrate comments + if not line.strip().startswith('#'): + self.check_include(line) + line = self.sub_line_ad(line, self.RE_LOG_ACCESS, self.RE_LOG_ACCESS_ALLOW_REP, self.RE_LOG_ACCESS_DENY_REP, self.RE_LOG_ACCESS_TEXT) + line = self.sub_line(line, self.RE_LOG_ICAP, self.RE_LOG_ICAP_REP, self.RE_LOG_ICAP_TEXT) + line = self.sub_hier_stoplist(line, self.RE_HIER_STOPLIST, self.RE_HIER_STOPLIST_REP, self.RE_HIER_STOPLIST_TEXT) + + self.migrated_squid_conf_data.append(line) + + self.line_num = self.line_num + 1 + + def migrate(self): + # prevent infinite loop + if (self.level > ConfMigration.MAX_NESTED_INCLUDES): + sys.stderr.write("WARNING: the maximum number of nested includes was reached\n") + return + + self.read_conf() + self.process_conf_lines() + if self.write_changes: + if (not (set(self.migrated_squid_conf_data) == set(self.squid_conf_data.split(os.linesep)))): + self.write_conf() + + self.print_info("The migration finished successfully") + + def get_prefix_str(self): + return ((" " * int(self.level)) + "["+ self.squid_conf + "@%d]: " % (self.line_num)) + + def read_conf(self): + self.print_info("Reading squid conf: " + self.squid_conf) + try: + self.in_file = open(self.squid_conf, 'r') + self.squid_conf_data = self.in_file.read() + self.in_file.close() + except Exception as e: + sys.stderr.write("%sError: %s\n" % (self.get_prefix_str(), e)) + sys.exit(1) + + def write_conf(self): + self.print_info("Creating backup conf: %s" % (self.squid_bak_conf)) + self.print_info("Writing changes to: %s" % (self.squid_conf)) + try: + shutil.copyfile(self.squid_conf, self.squid_bak_conf) + self.out_file = open(self.squid_conf, "w") + self.out_file.write(os.linesep.join(self.migrated_squid_conf_data)) + self.out_file.close() + except Exception as e: + sys.stderr.write("%s Error: %s\n" % (self.get_prefix_str(), e)) + sys.exit(1) + +def parse_args(): + parser = argparse.ArgumentParser(description='The script migrates the squid 3.3 configuration files to configuration files which are compatible with squid 3.5.') + parser.add_argument('--conf', dest='squid_conf', action='store', + default=ConfMigration.DEFAULT_SQUID_CONF, + help='specify filename of squid configuration (default: %s)' % (ConfMigration.DEFAULT_SQUID_CONF)) + parser.add_argument('--write-changes', dest='write_changes', action='store_true', + default=False, + help='The changes are written to corresponding configuration files') + parser.add_argument('--debug', dest="debug", action='store_true', default=False, help='print debug messages to stderr') + return parser.parse_args() + +if __name__ == '__main__': + # parse args from command line + args = parse_args() + + # check if config file exists + if (not os.path.exists(args.squid_conf)): + sys.stderr.write("Error: the file %s does not exist\n" % (args.squid_conf)) + sys.exit(1) + + # change working directory + script_dir = os.getcwd() + if (os.path.dirname(args.squid_conf)): + os.chdir(os.path.dirname(args.squid_conf)) + + # start migration + try: + conf = ConfMigration(args, 0) + conf.migrate() + finally: + print "" + + if not args.write_changes: + print "The changes have NOT been written to config files.\nUse the --write-changes option to write the changes" + else: + print "The changes have been written to config files!" + + os.chdir(script_dir) diff --git a/SOURCES/squid.service b/SOURCES/squid.service index a6f82cf..85faf2d 100644 --- a/SOURCES/squid.service +++ b/SOURCES/squid.service @@ -10,6 +10,7 @@ ExecStartPre=/usr/libexec/squid/cache_swap.sh ExecStart=/usr/sbin/squid $SQUID_OPTS -f $SQUID_CONF ExecReload=/usr/sbin/squid $SQUID_OPTS -k reconfigure -f $SQUID_CONF ExecStop=/usr/sbin/squid -k shutdown -f $SQUID_CONF +TimeoutSec=0 [Install] WantedBy=multi-user.target diff --git a/SOURCES/squid.xml b/SOURCES/squid.xml deleted file mode 100644 index 781e11c..0000000 --- a/SOURCES/squid.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - Squid - Squid is a high-performance proxy caching server for Web clients, supporting FTP, gopher, and HTTP data objects. Unlike traditional caching software, Squid handles all requests in a single, non-blocking, I/O-driven process. Squid keeps meta data and especially hot objects cached in RAM, caches DNS lookups, supports non-blocking DNS lookups, and implements negative caching of failed requests. - - diff --git a/SPECS/squid.spec b/SPECS/squid.spec index ec19c32..67844c7 100644 --- a/SPECS/squid.spec +++ b/SPECS/squid.spec @@ -3,16 +3,16 @@ ## % define __find_requires %{SOURCE99} Name: squid -Version: 3.3.8 -Release: 26%{?dist}.4 +Version: 3.5.20 +Release: 2%{?dist} Summary: The Squid proxy caching server Epoch: 7 # See CREDITS for breakdown of non GPLv2+ code License: GPLv2+ and (LGPLv2+ and MIT and BSD and Public Domain) Group: System Environment/Daemons URL: http://www.squid-cache.org -Source0: http://www.squid-cache.org/Versions/v3/3.3/squid-%{version}.tar.xz -Source1: http://www.squid-cache.org/Versions/v3/3.3/squid-%{version}.tar.xz.asc +Source0: http://www.squid-cache.org/Versions/v3/3.5/squid-%{version}.tar.xz +Source1: http://www.squid-cache.org/Versions/v3/3.5/squid-%{version}.tar.xz.asc Source2: squid.init Source3: squid.logrotate Source4: squid.sysconfig @@ -20,15 +20,8 @@ Source5: squid.pam Source6: squid.nm Source7: squid.service Source8: cache_swap.sh -Source9: squid.xml Source98: perl-requires-squid.sh -## Source99: filter-requires-squid.sh - -# Upstream patches -#Patch001: http://www.squid-cache.org/Versions/v3/3.2/changesets/squid-3.2-11480.patch - -# Backported patches -# Patch211: squid-3.3.8-incorrect-ssl.patch +Source99: squid-migrate-conf.py # Local patches # Applying upstream patches first makes it less likely that local patches @@ -38,30 +31,18 @@ Patch202: squid-3.1.0.9-location.patch Patch203: squid-3.0.STABLE1-perlpath.patch Patch204: squid-3.2.0.9-fpic.patch Patch205: squid-3.1.9-ltdl.patch -Patch206: squid-3.3.4-empty-pod2man.patch -Patch207: active-ftp.patch # https://bugzilla.redhat.com/show_bug.cgi?id=980511 -Patch208: squid-3.3.8-active-ftp-2.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=1074873 -# http://www.squid-cache.org/Advisories/SQUID-2014_1.txt -Patch209: squid-3.3-12677.patch -Patch210: squid-3.3.13-dos.patch -Patch211: squid-3.3.8-incorrect-ssl.patch -Patch212: squid-3.3.8-fd-leaks.patch -Patch213: squid-3.3.8-vary-headers.patch -Patch214: squid-3.3.8-incorrect-cert.patch -Patch215: squid-3.3.8-segfault-reboot.patch -Patch216: squid-3.3.8-le-looping.patch -Patch217: squid-CVE-2016-4051.patch -Patch218: squid-CVE-2016-4052.patch -Patch219: squid-CVE-2016-4553.patch -Patch220: squid-CVE-2016-4554.patch -Patch221: squid-CVE-2016-4555.patch -Patch222: squid-CVE-2016-4556.patch -Patch223: squid-3.3.8-conf-setrlimit.patch +Patch206: squid-3.3.8-active-ftp-1.patch +Patch207: squid-3.3.8-active-ftp-2.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1265328#c23 +Patch208: squid-3.5.10-ssl-helper.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1378025 +# http://bazaar.launchpad.net/~squid/squid/3.4/revision/12713 +Patch209: squid-3.5.20-conf-casecmp.patch Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires: bash >= 2.0 +Requires: squid-migration-script Requires(pre): shadow-utils Requires(post): /sbin/chkconfig Requires(preun): /sbin/chkconfig @@ -81,13 +62,15 @@ BuildRequires: expat-devel libxml2-devel # TPROXY requires libcap, and also increases security somewhat BuildRequires: libcap-devel # eCAP support -BuildRequires: libecap-devel +BuildRequires: libecap-devel >= 1.0.0 # BuildRequires: libtool libtool-ltdl-devel # For test suite BuildRequires: cppunit-devel # DB helper requires BuildRequires: perl-podlators libdb-devel +# c++ source files +BuildRequires: gcc-c++ %description Squid is a high-performance proxy caching server for Web clients, @@ -111,14 +94,16 @@ Requires(postun): /sbin/service %description sysvinit The squid-sysvinit contains SysV initscritps support. -%prep -%setup -q +%package migration-script +Group: System Environment/Daemons +Summary: Migration script for squid caching proxy -# Upstream patches -#%patch001 -p1 -b +%description migration-script +The squid-migration-script contains scripts for squid configuration +migration and script which prepares squid for downgrade operation. -# Backported patches -#patch101 -p1 -b .mem_node +%prep +%setup -q # Local patches %patch201 -p1 -b .config @@ -126,24 +111,10 @@ The squid-sysvinit contains SysV initscritps support. %patch203 -p1 -b .perlpath %patch204 -p1 -b .fpic %patch205 -p1 -b .ltdl -%patch206 -p1 -b .empty-pod2man -%patch207 -p1 -b .active-ftp -%patch208 -p1 -b .active-ftp-2 -%patch209 -p0 -%patch210 -p0 -%patch211 -p1 -b .incorrect-ssl -%patch212 -p1 -b .fd-leaks -%patch213 -p1 -b .vary-headers -%patch214 -p1 -b .incorrect-cert -%patch215 -p1 -b .segfault-reboot -%patch216 -p0 -b .le-looping -%patch217 -p0 -b .CVE-2016-4051 -%patch218 -p1 -b .CVE-2016-4052 -%patch219 -p0 -b .CVE-2016-4053 -%patch220 -p0 -b .CVE-2016-4054 -%patch221 -p0 -b .CVE-2016-4055 -%patch222 -p0 -b .CVE-2016-4056 -%patch223 -p1 -b .conf-setrlimit +%patch206 -p1 -b .active-ftp-1 +%patch207 -p1 -b .active-ftp-2 +%patch208 -p1 -b .ssl-helper +%patch209 -p1 -b .conf-casecmp %build %ifarch sparcv9 sparc64 s390 s390x @@ -168,7 +139,7 @@ LDFLAGS="$RPM_LD_FLAGS -pie -Wl,-z,relro -Wl,-z,now" --enable-eui \ --enable-follow-x-forwarded-for \ --enable-auth \ - --enable-auth-basic="DB,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB,getpwnam" \ + --enable-auth-basic="DB,LDAP,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB,SMB_LM,getpwnam" \ --enable-auth-ntlm="smb_lm,fake" \ --enable-auth-digest="file,LDAP,eDirectory" \ --enable-auth-negotiate="kerberos" \ @@ -177,7 +148,6 @@ LDFLAGS="$RPM_LD_FLAGS -pie -Wl,-z,relro -Wl,-z,now" --enable-cachemgr-hostname=localhost \ --enable-delay-pools \ --enable-epoll \ - --enable-icap-client \ --enable-ident-lookups \ %ifnarch ppc64 ia64 x86_64 s390x aarch64 --with-large-files \ @@ -185,7 +155,6 @@ LDFLAGS="$RPM_LD_FLAGS -pie -Wl,-z,relro -Wl,-z,now" --enable-linux-netfilter \ --enable-removal-policies="heap,lru" \ --enable-snmp \ - --enable-ssl \ --enable-ssl-crtd \ --enable-storeio="aufs,diskd,ufs" \ --enable-wccpv2 \ @@ -193,10 +162,11 @@ LDFLAGS="$RPM_LD_FLAGS -pie -Wl,-z,relro -Wl,-z,now" --enable-ecap \ --with-aio \ --with-default-user="squid" \ - --with-filedescriptors=16384 \ --with-dl \ --with-openssl \ - --with-pthreads + --with-pthreads \ + --disable-arch-native \ + --disable-icap-client make \ DEFAULT_SWAP_DIR='$(localstatedir)/spool/squid' \ @@ -204,7 +174,7 @@ make \ %check make check - + %install rm -rf $RPM_BUILD_ROOT make \ @@ -243,7 +213,6 @@ install -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_unitdir} install -m 755 %{SOURCE8} $RPM_BUILD_ROOT%{_libexecdir}/squid install -m 644 $RPM_BUILD_ROOT/squid.httpd.tmp $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/squid.conf install -m 644 %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/NetworkManager/dispatcher.d/20-squid -install -m 644 %{SOURCE9} $RPM_BUILD_ROOT%{_prefix}/lib/firewalld/services mkdir -p $RPM_BUILD_ROOT%{_var}/log/squid mkdir -p $RPM_BUILD_ROOT%{_var}/spool/squid mkdir -p $RPM_BUILD_ROOT%{_var}/run/squid @@ -270,12 +239,25 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/squid/squid.conf.documented rm -f $RPM_BUILD_ROOT%{_bindir}/{RunAccel,RunCache} rm -f $RPM_BUILD_ROOT/squid.httpd.tmp +# bug #447156 +# /usr/share/squid/errors/zh-cn and /usr/share/squid/errors/zh-tw were +# substituted directories substituted by symlinks and RPM, can't handle +# this change +rm -f $RPM_BUILD_ROOT%{_prefix}/share/squid/errors/zh-tw +rm -f $RPM_BUILD_ROOT%{_prefix}/share/squid/errors/zh-cn +cp -R --preserve=all $RPM_BUILD_ROOT%{_prefix}/share/squid/errors/zh-hant $RPM_BUILD_ROOT%{_prefix}/share/squid/errors/zh-tw +cp -R --preserve=all $RPM_BUILD_ROOT%{_prefix}/share/squid/errors/zh-hans $RPM_BUILD_ROOT%{_prefix}/share/squid/errors/zh-cn + +# squid-migration-script +mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/squid +install -m 755 %{SOURCE99} $RPM_BUILD_ROOT%{_bindir} + %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) -%doc COPYING COPYRIGHT README ChangeLog QUICKSTART src/squid.conf.documented +%doc COPYING README ChangeLog QUICKSTART src/squid.conf.documented %doc contrib/url-normalizer.pl contrib/rredir.* contrib/user-agents.pl %{_unitdir}/squid.service @@ -293,13 +275,8 @@ rm -rf $RPM_BUILD_ROOT %config(noreplace) %{_sysconfdir}/squid/mime.conf %config(noreplace) %{_sysconfdir}/squid/errorpage.css %config(noreplace) %{_sysconfdir}/sysconfig/squid -%config(noreplace) %{_sysconfdir}/squid/msntauth.conf - -# squid firewalld service file -%config(noreplace) %attr(644,root,root) %{_prefix}/lib/firewalld/services/squid.xml # These are not noreplace because they are just sample config files -%config %{_sysconfdir}/squid/msntauth.conf.default %config %{_sysconfdir}/squid/squid.conf.default %config %{_sysconfdir}/squid/mime.conf.default %config %{_sysconfdir}/squid/errorpage.css.default @@ -323,6 +300,10 @@ rm -rf $RPM_BUILD_ROOT %files sysvinit %attr(755,root,root) %{_sysconfdir}/rc.d/init.d/squid +%files migration-script +%defattr(-,root,root,-) +%attr(755,root,root) %{_bindir}/squid-migrate-conf.py* + %pre if ! getent group squid >/dev/null 2>&1; then /usr/sbin/groupadd -g 23 squid @@ -343,6 +324,7 @@ done exit 0 %post +/usr/bin/squid-migrate-conf.py --write-changes --conf %{_sysconfdir}/squid/squid.conf &>/dev/null %systemd_post squid.service %preun @@ -358,30 +340,78 @@ fi /usr/sbin/usermod -a -G wbpriv squid >/dev/null 2>&1 || \ chgrp squid /var/cache/samba/winbindd_privileged >/dev/null 2>&1 || : -%triggerun -- %{name} < 7:3.2.0.9-1 - /sbin/chkconfig --del squid >/dev/null 2>&1 || : - /bin/systemctl try-restart squid.service >/dev/null 2>&1 || : - -%triggerpostun -n %{name}-sysvinit -- %{name} < 7:3.2.0.9-1 - /sbin/chkconfig --add squid >/dev/null 2>&1 || : - %changelog -* Thu Jun 09 2016 Luboš Uhliarik - 7:3.3.8-26.4 -- Resolves: #1344283 - max_filedescriptors in squid.conf is ignored - -* Mon May 09 2016 Luboš Uhliarik - 7:3.3.8-26.3 -- Related: #1330576 - CVE-2016-4553 squid: Cache poisoning issue in +* Wed Sep 21 2016 Luboš Uhliarik - 7:3.5.20-2 +- Resolves: #1378025 - host_verify_strict only accepts lowercase arguments + +* Tue Aug 09 2016 Luboš Uhliarik - 7:3.5.20-1 +- Resolves: #1273942 - Rebase squid to latest mature 3.5 version (3.5.20) + +* Mon Aug 08 2016 Luboš Uhliarik - 7:3.5.10-9 +- Related: #1349775 - Provide migration tools needed due to rebase + to squid 3.5 as a separate sub-package + +* Mon Aug 01 2016 Luboš Uhliarik - 7:3.5.10-8 +- Related: #1349775 - Provide migration tools needed due to rebase + to squid 3.5 as a separate sub-package + +* Mon Aug 01 2016 Luboš Uhliarik - 7:3.5.10-7 +- Related: #1349775 - Provide migration tools needed due to rebase + to squid 3.5 as a separate sub-package + +* Wed Jul 27 2016 Luboš Uhliarik - 7:3.5.10-6 +- Related: #1349775 - Provide migration tools needed due to rebase + to squid 3.5 as a separate sub-package + +* Tue Jul 26 2016 Luboš Uhliarik - 7:3.5.10-5 +- Related: #1349775 - Provide migration tools needed due to rebase + to squid 3.5 as a separate sub-package + +* Tue Jul 19 2016 Luboš Uhliarik - 7:3.5.10-4 +- Resolves: #1349775 - Provide migration tools needed due to rebase + to squid 3.5 as a separate sub-package + +* Tue Jun 14 2016 Luboš Uhliarik - 7:3.5.10-3 +- Resolves: #1330186 - digest doesn't properly work with squid 3.3 on CentOS 7 + +* Tue Jun 14 2016 Luboš Uhliarik - 7:3.5.10-2 +- Resolves: #1336387 - Squid send wrong respond for GET-request following + Range-GET request + +* Wed Jun 08 2016 Luboš Uhliarik - 7:3.5.10-1 +- Resolves: #1273942 - Rebase squid to latest mature 3.5 version (3.5.10) +- Resolves: #1322770 - CVE-2016-2569 CVE-2016-2570 CVE-2016-2571 CVE-2016-2572 + CVE-2016-3948 squid: various flaws +- Resolves: #1254016 - IPv4 fallback is not working when connecting + to a dualstack host with non-functional IPv6 +- Resolves: #1254018 - should BuildRequire: g++ +- Resolves: #1262456 - Squid delays on FQDNs that don't contains AAAA record +- Resolves: #1336940 - Disable squid systemd unit start/stop timeouts +- Resolves: #1344197 - /usr/lib/firewalld/services/squid.xml conflicts between + attempted installs of squid-7:3.3.8-31.el7.x86_64 and + firewalld-0.4.2-1.el7.noarch +- Resolves: #1299972 - squid file descriptor limit hardcoded to 16384 via + compile option in spec file + +* Wed Jun 08 2016 Luboš Uhliarik - 7:3.3.8-31 +- Resolves: #1283078 - max_filedescriptors in squid.conf is ignored + +* Mon May 09 2016 Luboš Uhliarik - 7:3.3.8-30 +- Related: #1334509 - CVE-2016-4553 squid: Cache poisoning issue in HTTP Request handling -- Related: #1334491 - CVE-2016-4554 CVE-2016-4555 CVE-2016-4556 +- Related: #1334492 - CVE-2016-4554 CVE-2016-4555 CVE-2016-4556 squid: various flaws -* Tue May 03 2016 Luboš Uhliarik - 7:3.3.8-26.2 -- Related: #1330576 - CVE-2016-4051 CVE-2016-4052 CVE-2016-4053 CVE-2016-4054 - squid: various flaws +* Tue May 03 2016 Luboš Uhliarik - 7:3.3.8-29 +- Related: #1330577 - CVE-2016-4052 CVE-2016-4053 CVE-2016-4054 squid: multiple + issues in ESI processing -* Thu Apr 28 2016 Luboš Uhliarik - 7:3.3.8-26.1 -- Resolves: #1330576 - CVE-2016-4051 CVE-2016-4052 CVE-2016-4053 CVE-2016-4054 - squid: various flaws +* Thu Apr 28 2016 Luboš Uhliarik - 7:3.3.8-28 +- Related: #1330577 - CVE-2016-4052 CVE-2016-4053 CVE-2016-4054 squid: multiple + issues in ESI processing + +* Thu Apr 28 2016 Luboš Uhliarik - 7:3.3.8-27 +- Resolves: #1330577 - CVE-2016-4051 squid: buffer overflow in cachemgr.cgi * Wed Oct 14 2015 Luboš Uhliarik - 7:3.3.8-26 - Related: #1186768 - removing patch, because of missing tests and