Log Message: |
On the authzperf branch: Very first step towards faster authz.
Determine the user's aliases and group memberships once and
then use this to evaluate rules in O(1).
Right now, that information is constructed on the fly for each
request and used from the existing matching code. This overhead
will be eliminated in later commits. Right now, this is to
introduce new, reviewable / testable code.
* BRANCH-README
(TODO, DONE): Update.
* subversion/libsvn_repos/authz.c
(set_add_string): New utility function.
(add_alias_baton_t,
add_alias,
get_aliases): New code to find all aliases to a given user.
(add_group_baton_t,
add_group,
get_group_memberships): New code to create a member->group
map for all relevant members.
(get_memberships): New function using all of the above to build
the complete set of "left-side-strings" (names)
in the rule lines that a relevant to a given
user.
(authz_lookup_baton): Instead of the plain user use a hash set as
constructed above to identify what we want.
(authz_alias_is_user,
authz_group_contains_user): Drop the now obsolete dynamic group
and alias resolution code.
(authz_line_applies_to_user): Greatly simplify by doing a simple
hash lookup.
(authz_get_path_access,
authz_get_tree_access,
authz_get_any_access): Update providing the memberships set
instead of the plain user name.
|