Josh Gilkerson <jwg@google.com>


Patch
r865065

r865065 | epg | 2007-05-10 16:17:14 -0500 (Thu, 10 May 2007)

Added authz optimization to mod_dav_svn that skips apache authz for
parent paths.

* subversion/mod_authz_svn/mod_authz_svn.c
  (subreq_bypass): new method. This is the implementation of a provider
    that will be called from mod_dav_svn to bypass the apache authz process.
  (get_access_conf): new method.  This is a cut and paste from existing
    code that that is needed in subreq_bypass.  It was pulled out to
    eliminate duplication.
  (register_hooks): was modified to register the new provider.

* subversion/include/mod_authz_svn.h
  (AUTHZ_SVN__SUBREQ_BYPASS_PROV_GRP,
   AUTHZ_SVN__SUBREQ_BYPASS_PROV_NAME,
   AUTHZ_SVN__SUBREQ_BYPASS_PROV_VER): Provider lookup info.
  (authz_svn__subreq_bypass_func_t): Signature of the provider method.

* subversion/mod_dav_svn/mod_dav_svn.c:
  (PATHAUTHZ_BYPASS_ARG): string argument to SVNPathAuthz directive that will
    enable bypassing apache's authz mechanism.
  (enum path_authz_conf): configuration type.  For this directive, which
    is now a tri-state instead of a boolean.
  (dir_conf_t): changed do_path_authz to path_authz_method.  The name was
    changed to denote the new meaning of the variable.
  (pathauthz_bypass_func): a new function pointer variable.  Thebypass
    provider is cached here.
  (merge_dir_config, SVNPathAuthz_cmd,cmds, dav_svn__get_pathauthz_flag):
    Changed to interact with the new config.
  (dav_svn__get_pathauthz_bypass): new method.

* subversion/mod_dav_svn/dav_svn.h
  (dav_svn__get_pathauthz_bypass): new function to get the bypass provider if
    configured.

* subversion/mod_dav_svn/authz.c
  (allow_read): Uses the new method if configured.

Patch by: Josh Gilkerson <jwg@google.com>