[PATCH] Fix detection of concurrent ACLChecklist checks, avoiding !accessList asserts

From: Alex Rousskov <rousskov_at_measurement-factory.com>
Date: Fri, 07 Jun 2013 11:02:14 -0600

Hello,

    The attached patch prevents asserts when Squid reuses the same
Checklist object for multiple ACL checks. I missed one use case when
adding Checklist reuse controls for trunk r12859 (Boolean ACLs). The bug
can be triggered by a combination of log_access and access_log ACLs, for
example.

Concurrent checks are not supported, but it is possible for the same
ACLChecklist to be used for a sequence of checks, alternating
fastCheck(void) and fastCheck(list) calls. We needed a
different/dedicated mechanism to detect check concurrency (added
ACLChecklist::occupied_), and we needed to preserve (and then restore)
pre-set accessList during fastCheck(list) checks.

HTH,

Alex.

Received on Fri Jun 07 2013 - 17:02:28 MDT

This archive was generated by hypermail 2.2.0 : Sat Jun 08 2013 - 12:00:08 MDT