You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2015/01/03 15:00:44 UTC
svn commit: r1649205 [23/30] - in /subversion/branches/authzperf: ./ build/
build/ac-macros/ notes/ subversion/bindings/ctypes-python/
subversion/bindings/cxxhl/
subversion/bindings/javahl/tests/org/apache/subversion/javahl/
subversion/bindings/swig/ s...
Modified: subversion/branches/authzperf/subversion/mod_dav_svn/reports/file-revs.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/mod_dav_svn/reports/file-revs.c?rev=1649205&r1=1649204&r2=1649205&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/mod_dav_svn/reports/file-revs.c (original)
+++ subversion/branches/authzperf/subversion/mod_dav_svn/reports/file-revs.c Sat Jan 3 14:00:41 2015
@@ -149,7 +149,7 @@ file_rev_handler(void *baton,
apr_pool_t *pool)
{
struct file_rev_baton *frb = baton;
- apr_pool_t *subpool = svn_pool_create(pool);
+ apr_pool_t *iterpool = svn_pool_create(pool);
apr_hash_index_t *hi;
int i;
@@ -169,11 +169,11 @@ file_rev_handler(void *baton,
const char *pname;
const svn_string_t *pval;
- svn_pool_clear(subpool);
+ svn_pool_clear(iterpool);
apr_hash_this(hi, &key, NULL, &val);
pname = key;
pval = val;
- SVN_ERR(send_prop(frb, "rev-prop", pname, pval, subpool));
+ SVN_ERR(send_prop(frb, "rev-prop", pname, pval, iterpool));
}
/* Send file prop changes. */
@@ -181,17 +181,17 @@ file_rev_handler(void *baton,
{
const svn_prop_t *prop = &APR_ARRAY_IDX(props, i, svn_prop_t);
- svn_pool_clear(subpool);
+ svn_pool_clear(iterpool);
if (prop->value)
SVN_ERR(send_prop(frb, "set-prop", prop->name, prop->value,
- subpool));
+ iterpool));
else
{
/* Property was removed. */
SVN_ERR(dav_svn__brigade_printf(frb->bb, frb->output,
"<S:remove-prop name=\"%s\"/>"
DEBUG_CR,
- apr_xml_quote_string(subpool,
+ apr_xml_quote_string(iterpool,
prop->name,
1)));
}
@@ -223,7 +223,7 @@ file_rev_handler(void *baton,
SVN_ERR(dav_svn__brigade_puts(frb->bb, frb->output,
"</S:file-rev>" DEBUG_CR));
- svn_pool_destroy(subpool);
+ svn_pool_destroy(iterpool);
return SVN_NO_ERROR;
}
@@ -254,6 +254,9 @@ dav_svn__file_revs_report(const dav_reso
arb.repos = resource->info->repos;
/* Sanity check. */
+ if (!resource->info->repos_path)
+ return dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0,
+ "The request does not specify a repository path");
ns = dav_svn__find_ns(doc->namespaces, SVN_XML_NAMESPACE);
/* ### This is done on other places, but the document element is
in this namespace, so is this necessary at all? */
Modified: subversion/branches/authzperf/subversion/mod_dav_svn/reports/get-location-segments.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/mod_dav_svn/reports/get-location-segments.c?rev=1649205&r1=1649204&r2=1649205&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/mod_dav_svn/reports/get-location-segments.c (original)
+++ subversion/branches/authzperf/subversion/mod_dav_svn/reports/get-location-segments.c Sat Jan 3 14:00:41 2015
@@ -123,6 +123,9 @@ dav_svn__get_location_segments_report(co
struct location_segment_baton location_segment_baton;
/* Sanity check. */
+ if (!resource->info->repos_path)
+ return dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0,
+ "The request does not specify a repository path");
ns = dav_svn__find_ns(doc->namespaces, SVN_XML_NAMESPACE);
if (ns == -1)
{
Modified: subversion/branches/authzperf/subversion/mod_dav_svn/reports/get-locations.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/mod_dav_svn/reports/get-locations.c?rev=1649205&r1=1649204&r2=1649205&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/mod_dav_svn/reports/get-locations.c (original)
+++ subversion/branches/authzperf/subversion/mod_dav_svn/reports/get-locations.c Sat Jan 3 14:00:41 2015
@@ -106,6 +106,9 @@ dav_svn__get_locations_report(const dav_
sizeof(svn_revnum_t));
/* Sanity check. */
+ if (!resource->info->repos_path)
+ return dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0,
+ "The request does not specify a repository path");
ns = dav_svn__find_ns(doc->namespaces, SVN_XML_NAMESPACE);
if (ns == -1)
{
Modified: subversion/branches/authzperf/subversion/mod_dav_svn/reports/get-locks.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/mod_dav_svn/reports/get-locks.c?rev=1649205&r1=1649204&r2=1649205&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/mod_dav_svn/reports/get-locks.c (original)
+++ subversion/branches/authzperf/subversion/mod_dav_svn/reports/get-locks.c Sat Jan 3 14:00:41 2015
@@ -66,7 +66,7 @@ send_get_lock_response(apr_hash_t *locks
apr_bucket_brigade *bb,
apr_pool_t *pool)
{
- apr_pool_t *subpool;
+ apr_pool_t *iterpool;
apr_hash_index_t *hi;
/* start sending report */
@@ -76,15 +76,13 @@ send_get_lock_response(apr_hash_t *locks
"\" xmlns:D=\"DAV:\">" DEBUG_CR));
/* stream the locks */
- subpool = svn_pool_create(pool);
+ iterpool = svn_pool_create(pool);
for (hi = apr_hash_first(pool, locks); hi; hi = apr_hash_next(hi))
{
- void *val;
const svn_lock_t *lock;
- svn_pool_clear(subpool);
- apr_hash_this(hi, NULL, NULL, &val);
- lock = val;
+ svn_pool_clear(iterpool);
+ lock = apr_hash_this_val(hi);
/* Begin the <S:lock> tag, transmitting the path, token, and
creation date. */
@@ -93,10 +91,10 @@ send_get_lock_response(apr_hash_t *locks
"<S:path>%s</S:path>" DEBUG_CR
"<S:token>%s</S:token>" DEBUG_CR
"<S:creationdate>%s</S:creationdate>" DEBUG_CR,
- apr_xml_quote_string(subpool, lock->path, 1),
- apr_xml_quote_string(subpool, lock->token, 1),
+ apr_xml_quote_string(iterpool, lock->path, 1),
+ apr_xml_quote_string(iterpool, lock->token, 1),
svn_time_to_cstring(lock->creation_date,
- subpool)));
+ iterpool)));
/* Got expiration date? Tell the client. */
if (lock->expiration_date)
@@ -104,7 +102,7 @@ send_get_lock_response(apr_hash_t *locks
"<S:expirationdate>%s</S:expirationdate>"
DEBUG_CR,
svn_time_to_cstring(lock->expiration_date,
- subpool)));
+ iterpool)));
/* Transmit the lock ownership information. */
if (lock->owner)
@@ -114,7 +112,7 @@ send_get_lock_response(apr_hash_t *locks
if (svn_xml_is_xml_safe(lock->owner, strlen(lock->owner)))
{
- owner = apr_xml_quote_string(subpool, lock->owner, 1);
+ owner = apr_xml_quote_string(iterpool, lock->owner, 1);
}
else
{
@@ -124,7 +122,7 @@ send_get_lock_response(apr_hash_t *locks
owner_string.data = lock->owner;
owner_string.len = strlen(lock->owner);
encoded_owner = svn_base64_encode_string2(&owner_string, TRUE,
- subpool);
+ iterpool);
owner = encoded_owner->data;
owner_base64 = TRUE;
}
@@ -142,7 +140,7 @@ send_get_lock_response(apr_hash_t *locks
if (svn_xml_is_xml_safe(lock->comment, strlen(lock->comment)))
{
- comment = apr_xml_quote_string(subpool, lock->comment, 1);
+ comment = apr_xml_quote_string(iterpool, lock->comment, 1);
}
else
{
@@ -152,7 +150,7 @@ send_get_lock_response(apr_hash_t *locks
comment_string.data = lock->comment;
comment_string.len = strlen(lock->comment);
encoded_comment = svn_base64_encode_string2(&comment_string,
- TRUE, subpool);
+ TRUE, iterpool);
comment = encoded_comment->data;
comment_base64 = TRUE;
}
@@ -165,7 +163,7 @@ send_get_lock_response(apr_hash_t *locks
/* Okay, finish up this lock by closing the <S:lock> tag. */
SVN_APR_ERR(ap_fprintf(output, bb, "</S:lock>" DEBUG_CR));
}
- svn_pool_destroy(subpool);
+ svn_pool_destroy(iterpool);
/* Finish the report */
SVN_APR_ERR(ap_fprintf(output, bb, "</S:get-locks-report>" DEBUG_CR));
Modified: subversion/branches/authzperf/subversion/mod_dav_svn/reports/inherited-props.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/mod_dav_svn/reports/inherited-props.c?rev=1649205&r1=1649204&r2=1649205&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/mod_dav_svn/reports/inherited-props.c (original)
+++ subversion/branches/authzperf/subversion/mod_dav_svn/reports/inherited-props.c Sat Jan 3 14:00:41 2015
@@ -63,6 +63,9 @@ dav_svn__get_inherited_props_report(cons
apr_pool_t *iterpool;
/* Sanity check. */
+ if (!resource->info->repos_path)
+ return dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0,
+ "The request does not specify a repository path");
ns = dav_svn__find_ns(doc->namespaces, SVN_XML_NAMESPACE);
if (ns == -1)
{
Modified: subversion/branches/authzperf/subversion/mod_dav_svn/reports/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/mod_dav_svn/reports/log.c?rev=1649205&r1=1649204&r2=1649205&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/mod_dav_svn/reports/log.c (original)
+++ subversion/branches/authzperf/subversion/mod_dav_svn/reports/log.c Sat Jan 3 14:00:41 2015
@@ -315,6 +315,9 @@ dav_svn__log_report(const dav_resource *
= apr_array_make(resource->pool, 1, sizeof(const char *));
/* Sanity check. */
+ if (!resource->info->repos_path)
+ return dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0,
+ "The request does not specify a repository path");
ns = dav_svn__find_ns(doc->namespaces, SVN_XML_NAMESPACE);
if (ns == -1)
{
Modified: subversion/branches/authzperf/subversion/mod_dav_svn/reports/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/mod_dav_svn/reports/mergeinfo.c?rev=1649205&r1=1649204&r2=1649205&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/mod_dav_svn/reports/mergeinfo.c (original)
+++ subversion/branches/authzperf/subversion/mod_dav_svn/reports/mergeinfo.c Sat Jan 3 14:00:41 2015
@@ -67,6 +67,9 @@ dav_svn__get_mergeinfo_report(const dav_
= apr_array_make(resource->pool, 0, sizeof(const char *));
/* Sanity check. */
+ if (!resource->info->repos_path)
+ return dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0,
+ "The request does not specify a repository path");
ns = dav_svn__find_ns(doc->namespaces, SVN_XML_NAMESPACE);
if (ns == -1)
{
Modified: subversion/branches/authzperf/subversion/mod_dav_svn/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/mod_dav_svn/repos.c?rev=1649205&r1=1649204&r2=1649205&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/mod_dav_svn/repos.c (original)
+++ subversion/branches/authzperf/subversion/mod_dav_svn/repos.c Sat Jan 3 14:00:41 2015
@@ -509,6 +509,9 @@ parse_vtxnstub_uri(dav_resource_combined
if (parse_txnstub_uri(comb, path, label, use_checked_in))
return TRUE;
+ if (!comb->priv.root.txn_name)
+ return TRUE;
+
comb->priv.root.vtxn_name = comb->priv.root.txn_name;
comb->priv.root.txn_name = dav_svn__get_txn(comb->priv.repos,
comb->priv.root.vtxn_name);
@@ -577,6 +580,9 @@ parse_vtxnroot_uri(dav_resource_combined
if (parse_txnroot_uri(comb, path, label, use_checked_in))
return TRUE;
+ if (!comb->priv.root.txn_name)
+ return TRUE;
+
comb->priv.root.vtxn_name = comb->priv.root.txn_name;
comb->priv.root.txn_name = dav_svn__get_txn(comb->priv.repos,
comb->priv.root.vtxn_name);
@@ -922,6 +928,10 @@ prep_working(dav_resource_combined *comb
point. */
if (txn_name == NULL)
{
+ if (!comb->priv.root.activity_id)
+ return dav_svn__new_error(comb->res.pool, HTTP_BAD_REQUEST, 0,
+ "The request did not specify an activity ID");
+
txn_name = dav_svn__get_txn(comb->priv.repos,
comb->priv.root.activity_id);
if (txn_name == NULL)
@@ -1032,8 +1042,13 @@ prep_working(dav_resource_combined *comb
static dav_error *
prep_activity(dav_resource_combined *comb)
{
- const char *txn_name = dav_svn__get_txn(comb->priv.repos,
- comb->priv.root.activity_id);
+ const char *txn_name;
+
+ if (!comb->priv.root.activity_id)
+ return dav_svn__new_error(comb->res.pool, HTTP_BAD_REQUEST, 0,
+ "The request did not specify an activity ID");
+
+ txn_name = dav_svn__get_txn(comb->priv.repos, comb->priv.root.activity_id);
comb->priv.root.txn_name = txn_name;
comb->res.exists = txn_name != NULL;
@@ -1194,14 +1209,15 @@ static void log_warning(void *baton, svn
AP_MODULE_DECLARE(dav_error *)
-dav_svn_split_uri(request_rec *r,
- const char *uri_to_split,
- const char *root_path,
- const char **cleaned_uri,
- int *trailing_slash,
- const char **repos_basename,
- const char **relative_path,
- const char **repos_path)
+dav_svn_split_uri2(request_rec *r,
+ const char *uri_to_split,
+ const char *root_path,
+ const char **cleaned_uri,
+ int *trailing_slash,
+ const char **repos_basename,
+ const char **relative_path,
+ const char **repos_path,
+ apr_pool_t *pool)
{
apr_size_t len1;
int had_slash;
@@ -1217,7 +1233,7 @@ dav_svn_split_uri(request_rec *r,
if ((fs_path == NULL) && (fs_parent_path == NULL))
{
/* ### are SVN_ERR_APMOD codes within the right numeric space? */
- return dav_svn__new_error(r->pool, HTTP_INTERNAL_SERVER_ERROR,
+ return dav_svn__new_error(pool, HTTP_INTERNAL_SERVER_ERROR,
SVN_ERR_APMOD_MISSING_PATH_TO_FS,
"The server is misconfigured: "
"either an SVNPath or SVNParentPath "
@@ -1226,7 +1242,7 @@ dav_svn_split_uri(request_rec *r,
}
/* make a copy so that we can do some work on it */
- uri = apr_pstrdup(r->pool, uri_to_split);
+ uri = apr_pstrdup(pool, uri_to_split);
/* remove duplicate slashes, and make sure URI has no trailing '/' */
ap_no2slash(uri);
@@ -1241,7 +1257,7 @@ dav_svn_split_uri(request_rec *r,
*trailing_slash = FALSE;
/* return the first item. */
- *cleaned_uri = apr_pstrdup(r->pool, uri);
+ *cleaned_uri = apr_pstrdup(pool, uri);
/* The URL space defined by the SVN provider is always a virtual
space. Construct the path relative to the configured Location
@@ -1282,7 +1298,7 @@ dav_svn_split_uri(request_rec *r,
if (fs_path != NULL)
{
/* the repos_basename is the last component of root_path. */
- *repos_basename = svn_dirent_basename(root_path, r->pool);
+ *repos_basename = svn_dirent_basename(root_path, pool);
/* 'relative' is already correct for SVNPath; the root_path
already contains the name of the repository, so relative is
@@ -1300,7 +1316,7 @@ dav_svn_split_uri(request_rec *r,
if (relative[1] == '\0')
{
/* ### are SVN_ERR_APMOD codes within the right numeric space? */
- return dav_svn__new_error(r->pool, HTTP_FORBIDDEN,
+ return dav_svn__new_error(pool, HTTP_FORBIDDEN,
SVN_ERR_APMOD_MALFORMED_URI,
"The URI does not contain the name "
"of a repository.");
@@ -1317,7 +1333,7 @@ dav_svn_split_uri(request_rec *r,
}
else
{
- magic_component = apr_pstrndup(r->pool, relative + 1,
+ magic_component = apr_pstrndup(pool, relative + 1,
magic_end - relative - 1);
relative = magic_end;
}
@@ -1327,7 +1343,7 @@ dav_svn_split_uri(request_rec *r,
}
/* We can return 'relative' at this point too. */
- *relative_path = apr_pstrdup(r->pool, relative);
+ *relative_path = apr_pstrdup(pool, relative);
/* Code to remove the !svn junk from the front of the relative path,
mainly stolen from parse_uri(). This code assumes that
@@ -1348,7 +1364,7 @@ dav_svn_split_uri(request_rec *r,
if (ch == '\0')
{
/* relative is just "!svn", which is malformed. */
- return dav_svn__new_error(r->pool, HTTP_NOT_FOUND,
+ return dav_svn__new_error(pool, HTTP_NOT_FOUND,
SVN_ERR_APMOD_MALFORMED_URI,
"Nothing follows the svn special_uri.");
}
@@ -1375,7 +1391,7 @@ dav_svn_split_uri(request_rec *r,
*repos_path = NULL;
else
return dav_svn__new_error(
- r->pool, HTTP_NOT_FOUND,
+ pool, HTTP_NOT_FOUND,
SVN_ERR_APMOD_MALFORMED_URI,
"Missing info after special_uri.");
}
@@ -1399,7 +1415,7 @@ dav_svn_split_uri(request_rec *r,
/* Did we break from the loop prematurely? */
if (j != (defn->numcomponents - 1))
return dav_svn__new_error(
- r->pool, HTTP_NOT_FOUND,
+ pool, HTTP_NOT_FOUND,
SVN_ERR_APMOD_MALFORMED_URI,
"Not enough components after "
"special_uri.");
@@ -1413,13 +1429,13 @@ dav_svn_split_uri(request_rec *r,
else
{
/* Found a slash after the special components. */
- *repos_path = apr_pstrdup(r->pool, start - 1);
+ *repos_path = apr_pstrdup(pool, start - 1);
}
}
else
{
return
- dav_svn__new_error(r->pool, HTTP_NOT_FOUND,
+ dav_svn__new_error(pool, HTTP_NOT_FOUND,
SVN_ERR_APMOD_MALFORMED_URI,
"Unknown data after special_uri.");
}
@@ -1430,7 +1446,7 @@ dav_svn_split_uri(request_rec *r,
if (defn->name == NULL)
return
- dav_svn__new_error(r->pool, HTTP_NOT_FOUND,
+ dav_svn__new_error(pool, HTTP_NOT_FOUND,
SVN_ERR_APMOD_MALFORMED_URI,
"Couldn't match subdir after special_uri.");
}
@@ -1439,13 +1455,27 @@ dav_svn_split_uri(request_rec *r,
{
/* There's no "!svn/" at all, so the relative path is already
a valid path within the repository. */
- *repos_path = apr_pstrdup(r->pool, relative - 1);
+ *repos_path = apr_pstrdup(pool, relative - 1);
}
}
return NULL;
}
+AP_MODULE_DECLARE(dav_error *)
+dav_svn_split_uri(request_rec *r,
+ const char *uri_to_split,
+ const char *root_path,
+ const char **cleaned_uri,
+ int *trailing_slash,
+ const char **repos_basename,
+ const char **relative_path,
+ const char **repos_path)
+{
+ return dav_svn_split_uri2(r, uri_to_split, root_path, cleaned_uri,
+ trailing_slash, repos_basename, relative_path,
+ repos_path, r->pool);
+}
/* Context for cleanup handler. */
struct cleanup_fs_access_baton
@@ -4169,9 +4199,16 @@ typedef struct walker_ctx_t {
} walker_ctx_t;
-
+/* Recursively walk a resource for walk(). When DEPTH != 0, recurse with
+ DEPTH-1 on child nodes. WALK_ROOT should be TRUE for the root and will be
+ FALSE for any descendants, to avoid unneeded work for every descendant
+ node.
+ */
static dav_error *
-do_walk(walker_ctx_t *ctx, int depth)
+do_walk(walker_ctx_t *ctx,
+ int depth,
+ svn_boolean_t walk_root,
+ apr_pool_t *scratch_pool)
{
const dav_walk_params *params = ctx->params;
int isdir = ctx->res.collection;
@@ -4235,28 +4272,31 @@ do_walk(walker_ctx_t *ctx, int depth)
uri_len = ctx->uri->len;
repos_len = ctx->repos_path->len;
- /* Tell our logging subsystem that we're listing a directory.
+ if (walk_root)
+ {
+ /* Tell our logging subsystem that we're listing a directory.
- Note: if we cared, we could look at the 'User-Agent:' request
- header and distinguish an svn client ('svn ls') from a generic
- DAV client. */
- dav_svn__operational_log(&ctx->info,
- svn_log__get_dir(ctx->info.repos_path,
- ctx->info.root.rev,
- TRUE, FALSE, SVN_DIRENT_ALL,
- params->pool));
+ Note: if we cared, we could look at the 'User-Agent:' request
+ header and distinguish an svn client ('svn ls') from a generic
+ DAV client. */
+ dav_svn__operational_log(&ctx->info,
+ svn_log__get_dir(ctx->info.repos_path,
+ ctx->info.root.rev,
+ TRUE, FALSE, SVN_DIRENT_ALL,
+ scratch_pool));
+ }
/* fetch this collection's children */
serr = svn_fs_dir_entries(&children, ctx->info.root.root,
- ctx->info.repos_path, params->pool);
+ ctx->info.repos_path, scratch_pool);
if (serr != NULL)
return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
"could not fetch collection members",
params->pool);
/* iterate over the children in this collection */
- iterpool = svn_pool_create(params->pool);
- for (hi = apr_hash_first(params->pool, children); hi; hi = apr_hash_next(hi))
+ iterpool = svn_pool_create(scratch_pool);
+ for (hi = apr_hash_first(scratch_pool, children); hi; hi = apr_hash_next(hi))
{
const void *key;
apr_ssize_t klen;
@@ -4297,7 +4337,10 @@ do_walk(walker_ctx_t *ctx, int depth)
{
err = (*params->func)(&ctx->wres, DAV_CALLTYPE_MEMBER);
if (err != NULL)
- return err;
+ {
+ svn_pool_destroy(iterpool);
+ return err;
+ }
}
else
{
@@ -4309,9 +4352,12 @@ do_walk(walker_ctx_t *ctx, int depth)
ctx->res.uri = ctx->uri->data;
/* recurse on this collection */
- err = do_walk(ctx, depth - 1);
+ err = do_walk(ctx, depth - 1, FALSE, iterpool);
if (err != NULL)
- return err;
+ {
+ svn_pool_destroy(iterpool);
+ return err;
+ }
/* restore the data */
ctx->res.collection = FALSE;
@@ -4391,7 +4437,7 @@ walk(const dav_walk_params *params, int
/* ### is the root already/always open? need to verify */
/* always return the error, and any/all multistatus responses */
- err = do_walk(&ctx, depth);
+ err = do_walk(&ctx, depth, TRUE, params->pool);
*response = ctx.wres.response;
return err;
Propchange: subversion/branches/authzperf/subversion/mod_dav_svn/status.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/authzperf/subversion/mod_dav_svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/mod_dav_svn/util.c?rev=1649205&r1=1649204&r2=1649205&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/mod_dav_svn/util.c (original)
+++ subversion/branches/authzperf/subversion/mod_dav_svn/util.c Sat Jan 3 14:00:41 2015
@@ -152,7 +152,7 @@ dav_svn__convert_err(svn_error_t *serr,
derr = build_error_chain(pool, purged_serr, status);
if (message != NULL
- && purged_serr->apr_err != SVN_ERR_REPOS_HOOK_FAILURE)
+ && !svn_error_find_cause(purged_serr, SVN_ERR_REPOS_HOOK_FAILURE))
/* Don't hide hook failures; we might hide the error text */
derr = dav_push_error(pool, status, purged_serr->apr_err,
message, derr);
Modified: subversion/branches/authzperf/subversion/mod_dav_svn/version.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/mod_dav_svn/version.c?rev=1649205&r1=1649204&r2=1649205&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/mod_dav_svn/version.c (original)
+++ subversion/branches/authzperf/subversion/mod_dav_svn/version.c Sat Jan 3 14:00:41 2015
@@ -1381,20 +1381,10 @@ release_locks(apr_hash_t *locks,
request_rec *r,
apr_pool_t *pool)
{
- apr_hash_index_t *hi;
apr_pool_t *subpool = svn_pool_create(pool);
- apr_hash_t *targets = apr_hash_make(subpool);
svn_error_t *err;
- for (hi = apr_hash_first(subpool, locks); hi; hi = apr_hash_next(hi))
- {
- const char *path = apr_hash_this_key(hi);
- const char *token = apr_hash_this_val(hi);
-
- svn_hash_sets(targets, path, token);
- }
-
- err = svn_repos_fs_unlock_many(repos, targets, FALSE, unlock_many_cb, r,
+ err = svn_repos_fs_unlock_many(repos, locks, FALSE, unlock_many_cb, r,
subpool, subpool);
if (err) /* If we got an error, just log it and move along. */