You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2018/04/16 12:21:14 UTC
svn commit: r1829257 [4/11] - in /subversion/branches/shelve-checkpoint: ./
build/ build/ac-macros/ subversion/bindings/javahl/native/
subversion/bindings/javahl/native/jniwrapper/
subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion...
Modified: subversion/branches/shelve-checkpoint/subversion/mod_authz_svn/mod_authz_svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/mod_authz_svn/mod_authz_svn.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/mod_authz_svn/mod_authz_svn.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/mod_authz_svn/mod_authz_svn.c Mon Apr 16 12:21:02 2018
@@ -401,10 +401,12 @@ static svn_authz_t *
get_access_conf(request_rec *r, authz_svn_config_rec *conf,
apr_pool_t *scratch_pool)
{
+ const char *cache_key = NULL;
const char *access_file;
const char *groups_file;
const char *repos_path;
const char *repos_url = NULL;
+ void *user_data = NULL;
svn_authz_t *access_conf = NULL;
svn_error_t *svn_err = SVN_NO_ERROR;
dav_error *dav_err;
@@ -464,19 +466,31 @@ get_access_conf(request_rec *r, authz_sv
"Path to groups file is %s", groups_file);
}
- svn_err = svn_repos_authz_read3(&access_conf,
- access_file, groups_file,
- TRUE, NULL,
- r->connection->pool, scratch_pool);
+ cache_key = apr_pstrcat(scratch_pool, "mod_authz_svn:",
+ access_file, groups_file, SVN_VA_NULL);
+ apr_pool_userdata_get(&user_data, cache_key, r->connection->pool);
+ access_conf = user_data;
+ if (access_conf == NULL)
+ {
+ svn_err = svn_repos_authz_read3(&access_conf, access_file,
+ groups_file, TRUE, NULL,
+ r->connection->pool,
+ scratch_pool);
- if (svn_err)
- {
- log_svn_error(APLOG_MARK, r,
- "Failed to load the mod_authz_svn config:",
- svn_err, scratch_pool);
- access_conf = NULL;
+ if (svn_err)
+ {
+ log_svn_error(APLOG_MARK, r,
+ "Failed to load the mod_authz_svn config:",
+ svn_err, scratch_pool);
+ access_conf = NULL;
+ }
+ else
+ {
+ /* Cache the open repos for the next request on this connection */
+ apr_pool_userdata_set(access_conf, cache_key,
+ NULL, r->connection->pool);
+ }
}
-
return access_conf;
}