[Date Prev][Date Next] [Chronological] [Thread] [Top]

RE: PATCH: cache_groupacl {on|off}

> -----Original Message-----
> From: owner-openldap-devel@OpenLDAP.org
> [mailto:owner-openldap-devel@OpenLDAP.org]On Behalf Of Diego Rivera

> As for the rest of your points - all valid, of course.  But it's
> important to note that a better model might be to re-evaluate
> the group
> memberships using a conditional akin to this one:
> if ( ( groupEntry->timestamp != last_eval_timestamp ) &&
>      ( operation->id != last_eval_operation_id ) )
> {
> 	eval_group_permissions( groupEntry, binddn );
> }

> This allows "atomic" ('scuse the ill-chosen term :) )
> evaluation of the
> access rights: on a per-operation basis.
> It also allows runtime permissions to behave more like they do on
> databases - for example - where your permissions for a particular
> operation reflect what you're allowed to do at the time you start the
> operation.

Having thought about this some more, we can do this easily by moving the
group cache from being per-connection to being per-operation. Then there's no
need to check timestamps or operation ids, and this approach fixes some other
messy parts of the current implementation as well. (An operation can possibly
trigger sub-operations. If we kept the group cache where it is, but added a
compare of operation ids, we'd have to keep a long list in the connection
handle for all the outstanding operation ids. Very ugly.)

  -- Howard Chu
  Chief Architect, Symas Corp.       Director, Highland Sun
  http://www.symas.com               http://highlandsun.com/hyc
  Symas: Premier OpenSource Development and Support