See <http://build.squid-cache.org/job/3.HEAD-amd64-FreeBSD-7.2/410/changes>
Changes:
[Amos Jeffries <squid3_at_treenet.co.nz>] Bug 2305: Multiple leaks and assertion crashes in authentication.
* implements proper RefCounting using the RefCount.h classes for
almost all auth objects in Squid.
* Restructures auth objects with a simpler structure of duties and scopes.
* Prunes away several circular and indirectly circular pointer loops
* Adds an API to auth config for handling the mainRotate() event. To only
shutdown helpers, fixing the loss of cached credentials on rotate.
* Adds a username_cache page to cachemgr interface to display the current
credentials and their TTLs to various revalidation or garbage events.
With this we end up with several global pointers for the auth schemes which
have been built into the current Squid. These are RefCount pointers, fixing
the leak of schemes on shutdown. Schemes are now also permanent structures
for the runtime of Squid, fixing leaks on reconfigure and rotate actions.
These AuthSchemes are responsible for creating auth Config objects for each
auth protocol configured in squid.conf. These config objects are now also
able to be altered with a reconfigure instead of requiring a restart.
Each HTTP request authentication attempt generates AuthUserRequest objects,
which may or may not pointer to an AuthUser set of credentials being checked.
AuthUserRequest is RefCounted instead of locked, fixing several assertion
crashes.
AuthUser is now RefCounted instead of locked. It's children inherit
these properties. This simplifies the object handling a lot and fixes
several assertions.
* This also means AuthUser no longer needs a back-pointer to all
AuthUserRequest in order to see if its still needed alive, fixing one
circular lock loop and a few possible assertions.
* The username cache pointers to only AuthUser objects, fixing a second
cirular lock loop and potentially leakage. Also simplifying the hash cache
handling a lot.
Non-Auth code needing a reference to authentication credentials should
hold a pointer to either an AuthUserRequest or AuthUser object. Not any
other auth object.
FUTURE WORK;
There is still some conditions leading to auth re-challenge when they
are not expected.
A fair chunk of classes and enums have been shuffled into separate files
to keep the scopes clearer. This could be increased in future when
building the Auth namespace.
Potential is now present for simpler TTL handling for all auth types.
This work was a collaboration between multiple interested parties over
the last year, with additional developer time and testing funded by
Netspace Online Systems.
[Automatic source maintenance <squidadm_at_squid-cache.org>] SourceFormat Enforcement
------------------------------------------
[...truncated 5953 lines...]
rm -rf ./.deps
rm -f Makefile
Making distclean in base
test -z "testHeaders" || rm -f testHeaders
rm -rf .libs _libs
test -z "libbase.la" || rm -f libbase.la
rm -f "./so_locations"
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps
rm -f Makefile
Making distclean in .
rm -f tests/testAuth tests/testAuth
rm -f tests/testACLMaxUserIP tests/testACLMaxUserIP
rm -f tests/testBoilerplate tests/testBoilerplate
rm -f tests/testCacheManager tests/testCacheManager
rm -f tests/testDiskIO tests/testDiskIO
rm -f tests/testEvent tests/testEvent
rm -f tests/testEventLoop tests/testEventLoop
rm -f tests/test_http_range tests/test_http_range
rm -f tests/testHttpReply tests/testHttpReply
rm -f tests/testHttpRequest tests/testHttpRequest
rm -f tests/testStore tests/testStore
rm -f tests/testString tests/testString
rm -f tests/testURL tests/testURL
rm -f tests/testUfs tests/testUfs
test -z "cf_gen_defines.cci cf_parser.cci err_type.cc globals.cc hier_code.cc icp_opcode.cc lookup_t.cc repl_modules.cc swap_log_op.cc squid.8 cf.data squid.conf.default squid.conf.documented DiskIO/DiskIOModules_gen.cc test_tools.cc *.a testHeaders" || rm -f cf_gen_defines.cci cf_parser.cci err_type.cc globals.cc hier_code.cc icp_opcode.cc lookup_t.cc repl_modules.cc swap_log_op.cc squid.8 cf.data squid.conf.default squid.conf.documented DiskIO/DiskIOModules_gen.cc test_tools.cc *.a testHeaders
rm -f DiskIO/DiskDaemon/diskd DiskIO/DiskDaemon/diskd
rm -f unlinkd unlinkd
rm -rf .libs _libs
rm -rf DiskIO/DiskDaemon/.libs DiskIO/DiskDaemon/_libs
rm -rf tests/.libs tests/_libs
test -z "libAIO.a libBlocking.a libDiskDaemon.a libDiskThreads.a" || rm -f libAIO.a libBlocking.a libDiskDaemon.a libDiskThreads.a
test -z "libsquid.la" || rm -f libsquid.la
rm -f "./so_locations"
rm -f cf_gen cf_gen
rm -f squid squid
rm -f *.o
rm -f DiskIO/AIO/AIODiskFile.o
rm -f DiskIO/AIO/AIODiskIOModule.o
rm -f DiskIO/AIO/AIODiskIOStrategy.o
rm -f DiskIO/AIO/aio_win32.o
rm -f DiskIO/Blocking/BlockingDiskIOModule.o
rm -f DiskIO/Blocking/BlockingFile.o
rm -f DiskIO/Blocking/BlockingIOStrategy.o
rm -f DiskIO/DiskDaemon/DiskDaemonDiskIOModule.o
rm -f DiskIO/DiskDaemon/DiskdFile.o
rm -f DiskIO/DiskDaemon/DiskdIOStrategy.o
rm -f DiskIO/DiskDaemon/diskd.o
rm -f DiskIO/DiskIOModule.o
rm -f DiskIO/DiskIOModules_gen.o
rm -f DiskIO/DiskThreads/DiskThreadsDiskFile.o
rm -f DiskIO/DiskThreads/DiskThreadsDiskIOModule.o
rm -f DiskIO/DiskThreads/DiskThreadsIOStrategy.o
rm -f DiskIO/DiskThreads/aiops.o
rm -f DiskIO/DiskThreads/aiops_win32.o
rm -f DiskIO/DiskThreads/async_io.o
rm -f DiskIO/ReadRequest.o
rm -f DiskIO/WriteRequest.o
rm -f tests/TestSwapDir.o
rm -f tests/stub_CommIO.o
rm -f tests/stub_DelayId.o
rm -f tests/stub_HelperChildConfig.o
rm -f tests/stub_HttpReply.o
rm -f tests/stub_HttpRequest.o
rm -f tests/stub_MemObject.o
rm -f tests/stub_StatHist.o
rm -f tests/stub_access_log.o
rm -f tests/stub_acl.o
rm -f tests/stub_cache_cf.o
rm -f tests/stub_cache_manager.o
rm -f tests/stub_client_side_request.o
rm -f tests/stub_comm.o
rm -f tests/stub_errorpage.o
rm -f tests/stub_fd.o
rm -f tests/stub_helper.o
rm -f tests/stub_http.o
rm -f tests/stub_internal.o
rm -f tests/stub_mime.o
rm -f tests/stub_store.o
rm -f tests/stub_store_client.o
rm -f tests/stub_store_rebuild.o
rm -f tests/stub_store_swapout.o
rm -f tests/stub_tools.o
rm -f tests/testACLMaxUserIP.o
rm -f tests/testAuth.o
rm -f tests/testBoilerplate.o
rm -f tests/testCacheManager.o
rm -f tests/testCoss.o
rm -f tests/testDiskIO.o
rm -f tests/testEvent.o
rm -f tests/testEventLoop.o
rm -f tests/testHttpReply.o
rm -f tests/testHttpRequest.o
rm -f tests/testHttpRequestMethod.o
rm -f tests/testMain.o
rm -f tests/testNull.o
rm -f tests/testStore.o
rm -f tests/testStoreController.o
rm -f tests/testStoreEntryStream.o
rm -f tests/testStoreHashIndex.o
rm -f tests/testStoreSupport.o
rm -f tests/testString.o
rm -f tests/testURL.o
rm -f tests/testURLScheme.o
rm -f tests/testUfs.o
rm -f tests/test_http_range.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f DiskIO/.deps/.dirstamp
rm -f DiskIO/.dirstamp
rm -f DiskIO/AIO/.deps/.dirstamp
rm -f DiskIO/AIO/.dirstamp
rm -f DiskIO/Blocking/.deps/.dirstamp
rm -f DiskIO/Blocking/.dirstamp
rm -f DiskIO/DiskDaemon/.deps/.dirstamp
rm -f DiskIO/DiskDaemon/.dirstamp
rm -f DiskIO/DiskThreads/.deps/.dirstamp
rm -f DiskIO/DiskThreads/.dirstamp
rm -f tests/.deps/.dirstamp
rm -f tests/.dirstamp
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps DiskIO/.deps DiskIO/AIO/.deps DiskIO/Blocking/.deps DiskIO/DiskDaemon/.deps DiskIO/DiskThreads/.deps tests/.deps
rm -f Makefile
Making distclean in scripts
rm -rf .libs _libs
rm -f *.lo
test -z "" || rm -f
rm -f Makefile
Making distclean in snmplib
rm -rf .libs _libs
test -z "libsnmp.a" || rm -f libsnmp.a
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps
rm -f Makefile
Making distclean in libltdl
test -z "libltdl.la libltdlc.la libdlloader.la argz.o argz.lo" || rm -f libltdl.la libltdlc.la libdlloader.la argz.o argz.lo
test -z "" || rm -f
rm -rf .libs _libs
test -z "dlopen.la libltdlc.la" || rm -f dlopen.la libltdlc.la
rm -f "./so_locations"
rm -f "./so_locations"
rm -f *.o
test -z "argz.h argz.h-t" || rm -f argz.h argz.h-t
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f config.h stamp-h1
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f config.status config.cache config.log configure.lineno config.status.lineno
rm -rf .deps ./.deps
rm -f Makefile
Making distclean in lib
Making distclean in libTrie
Making distclean in test
rm -f trie trie
rm -rf .libs _libs
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps
rm -f Makefile
Making distclean in src
rm -rf .libs _libs
test -z "libTrie.a" || rm -f libTrie.a
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps
rm -f Makefile
Making distclean in include
rm -rf .libs _libs
rm -f *.lo
test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f Makefile
Making distclean in .
rm -rf .libs _libs
rm -f *.lo
test -z "" || rm -f
rm -f config.h stamp-h1
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f config.status config.cache config.log configure.lineno config.status.lineno
rm -f Makefile
Making distclean in .
rm -f tests/testAll tests/testAll
test -z "testHeaders" || rm -f testHeaders
rm -rf .libs _libs
rm -rf tests/.libs tests/_libs
test -z "libmiscutil.a libntlmauth.a " || rm -f libmiscutil.a libntlmauth.a
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f tests/.dirstamp
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf .deps ./.deps
rm -f Makefile
Making distclean in compat
rm -f testPreCompiler testPreCompiler
test -z "testHeaders" || rm -f testHeaders
rm -rf .libs _libs
test -z "libcompat.la" || rm -f libcompat.la
rm -f "./so_locations"
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps
rm -f Makefile
Making distclean in .
rm -rf .libs _libs
rm -f *.lo
test -z "" || rm -f
test -z "include/stamp-h include/stamp-h[0-9]*" || rm -f include/stamp-h include/stamp-h[0-9]*
rm -f include/autoconf.h include/stamp-h1
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f config.status config.cache config.log configure.lineno config.status.lineno
rm -f Makefile
ERROR: files left in build directory after distclean:
./src/auth/AuthType.cc
*** Error code 1
Stop in /usr<http://build.squid-cache.org/job/3.HEAD-amd64-FreeBSD-7.2/ws/btlayer-00-default/squid-3.HEAD-BZR/_build.>
*** Error code 1
Stop in /usr<http://build.squid-cache.org/job/3.HEAD-amd64-FreeBSD-7.2/ws/btlayer-00-default.>
buildtest.sh result is 1
BUILD: .././test-suite/buildtests/layer-00-default.opts
ERROR: files left in build directory after distclean:
*** Error code 1
*** Error code 1
Build FAILED.
Received on Wed Jun 02 2010 - 15:41:58 MDT
This archive was generated by hypermail 2.2.0 : Thu Jun 03 2010 - 12:00:11 MDT