]> git.ipfire.org Git - thirdparty/squid.git/commit
Bug 3717: assertion failed with dstdom_regex with IP based URL
authorAlex Rousskov <rousskov@measurement-factory.com>
Wed, 5 Jun 2013 13:00:09 +0000 (07:00 -0600)
committerAmos Jeffries <squid3@treenet.co.nz>
Wed, 5 Jun 2013 13:00:09 +0000 (07:00 -0600)
commit2935fea374a841eca08e8d6ca492dd8e4bedfd0c
treec78451f6e6112238b460412ad828e3b50a6359b4
parentb9d312f1a203c23099e175183a747011013cf7ea
Bug 3717: assertion failed with dstdom_regex with IP based URL

A combination of ACL negation and async lookup leads to
Checklist.cc:287:"!needsAsync && !matchFinished" assertions.

The lower-level ACL code says "not a match because I need an async lookup" but
the negation-handling code in ACL::matches() ignores the "need an async
lookup" part and converts "not a match" into a "match". This patch prevents
that conversion, while allowing Checklist code to decide what to do with
an async lookup (depending on whether the directive being checked supports
slow ACLs).

Note that this change prevents admins from negating async lookups in
directives that do not support them: both "!foo" and "foo" will probably not
match in those directives if ACL foo needs an async lookup.
src/acl/Acl.cc