See <http://build.squid-cache.org/job/3.HEAD-i386-FreeBSD-6.4/326/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 8635 lines...]
rm -f *.lo
rm -rf ./.deps
rm -f Makefile
Making distclean in base
rm -f *.tab.c
test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
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 -rf ./.deps
rm -f Makefile
Making distclean in .
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 TAGS ID GTAGS GRTAGS GSYMS GPATH tags
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/testAuth tests/testAuth
rm -f tests/.deps/.dirstamp
rm -f tests/.dirstamp
rm -f tests/testACLMaxUserIP tests/testACLMaxUserIP
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 tests/testBoilerplate tests/testBoilerplate
rm -f tests/testCacheManager tests/testCacheManager
rm -f DiskIO/DiskDaemon/diskd DiskIO/DiskDaemon/diskd
rm -f tests/testDiskIO tests/testDiskIO
rm -f unlinkd unlinkd
rm -f tests/testEvent tests/testEvent
rm -f tests/testEventLoop tests/testEventLoop
rm -rf .libs _libs
rm -rf DiskIO/DiskDaemon/.libs DiskIO/DiskDaemon/_libs
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
rm -rf tests/.libs tests/_libs
test -z "libBlocking.a libDiskDaemon.a libDiskThreads.a" || rm -f libBlocking.a libDiskDaemon.a libDiskThreads.a
test -z "libsquid.la" || rm -f libsquid.la
rm -f cf_gen cf_gen
rm -f "./so_locations"
rm -f squid squid
rm -f *.o
rm -f *.lo
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 -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
test -z "" || rm -f
rm -rf .libs _libs
rm -f *.lo
rm -f Makefile
Making distclean in snmplib
rm -f *.tab.c
test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf .libs _libs
test -z "libsnmp.a" || rm -f libsnmp.a
rm -f *.o
rm -f *.lo
rm -rf ./.deps
rm -f Makefile
Making distclean in libltdl
rm -f *.tab.c
test -z "" || rm -f
test . = "../../libltdl" || test -z "" || rm -f
rm -f config.h stamp-h1
rm -f libtool config.lt
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
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 *.o
rm -f "./so_locations"
rm -f "./so_locations"
test -z "argz.h argz.h-t" || rm -f argz.h argz.h-t
rm -f *.lo
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 *.tab.c
test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f trie trie
rm -rf .libs _libs
rm -f *.o
rm -f *.lo
rm -rf ./.deps
rm -f Makefile
Making distclean in src
rm -f *.tab.c
test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf .libs _libs
test -z "libTrie.a" || rm -f libTrie.a
rm -f *.o
rm -f *.lo
rm -rf ./.deps
rm -f Makefile
Making distclean in include
test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf .libs _libs
rm -f *.lo
rm -f Makefile
Making distclean in .
test -z "" || rm -f
rm -f config.h stamp-h1
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf .libs _libs
rm -f *.lo
rm -f config.status config.cache config.log configure.lineno config.status.lineno
rm -f Makefile
Making distclean in .
rm -f *.tab.c
test -z "" || rm -f
rm -f tests/.dirstamp
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f tests/testAll tests/testAll
test -z "testHeaders" || rm -f testHeaders
rm -rf .libs _libs
test -z "libmiscutil.a libntlmauth.a " || rm -f libmiscutil.a libntlmauth.a
rm -rf tests/.libs tests/_libs
rm -f *.o
rm -f *.lo
rm -rf .deps ./.deps
rm -f Makefile
Making distclean in compat
rm -f *.tab.c
test -z "" || rm -f
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
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 -rf ./.deps
rm -f Makefile
Making distclean in .
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 -rf .libs _libs
rm -f *.lo
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
1 error
*** Error code 2
1 error
buildtest.sh result is 2
BUILD: .././test-suite/buildtests/layer-00-default.opts
ERROR: files left in build directory after distclean:
*** Error code 1
*** Error code 2
Build FAILED.
Received on Wed Jun 02 2010 - 15:17:54 MDT
This archive was generated by hypermail 2.2.0 : Thu Jun 03 2010 - 12:00:11 MDT