diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2015-03-18 13:33:26 +0000 |
---|---|---|
committer | <> | 2015-07-08 14:41:01 +0000 |
commit | bb0ef45f7c46b0ae221b26265ef98a768c33f820 (patch) | |
tree | 98bae10dde41c746c51ae97ec4f879e330415aa7 /subversion/mod_dav_svn/posts/create_txn.c | |
parent | 239dfafe71711b2f4c43d7b90a1228d7bdc5195e (diff) | |
download | subversion-tarball-subversion-1.8.13.tar.gz |
Imported from /home/lorry/working-area/delta_subversion-tarball/subversion-1.8.13.tar.gz.subversion-1.8.13
Diffstat (limited to 'subversion/mod_dav_svn/posts/create_txn.c')
-rw-r--r-- | subversion/mod_dav_svn/posts/create_txn.c | 55 |
1 files changed, 53 insertions, 2 deletions
diff --git a/subversion/mod_dav_svn/posts/create_txn.c b/subversion/mod_dav_svn/posts/create_txn.c index c19b123..4775749 100644 --- a/subversion/mod_dav_svn/posts/create_txn.c +++ b/subversion/mod_dav_svn/posts/create_txn.c @@ -42,13 +42,64 @@ dav_svn__post_create_txn(const dav_resource *resource, request_rec *r = resource->info->r; /* Create a Subversion repository transaction based on HEAD. */ - if ((derr = dav_svn__create_txn(resource->info->repos, &txn_name, + if ((derr = dav_svn__create_txn(resource->info->repos, &txn_name, NULL, resource->pool))) return derr; /* Build a "201 Created" response with header that tells the client our new transaction's name. */ - vtxn_name = apr_table_get(r->headers_in, SVN_DAV_VTXN_NAME_HEADER); + vtxn_name = apr_table_get(r->headers_in, SVN_DAV_VTXN_NAME_HEADER); + if (vtxn_name && vtxn_name[0]) + { + /* If the client supplied a vtxn name then store a mapping from + the client name to the FS transaction name in the activity + database. */ + if ((derr = dav_svn__store_activity(resource->info->repos, + vtxn_name, txn_name))) + return derr; + apr_table_set(r->headers_out, SVN_DAV_VTXN_NAME_HEADER, vtxn_name); + } + else + apr_table_set(r->headers_out, SVN_DAV_TXN_NAME_HEADER, txn_name); + + r->status = HTTP_CREATED; + + return NULL; +} + + +/* Respond to a "create-txn-with-props" POST request. + * + * Syntax: ( create-txn-with-props (PROPNAME PROPVAL [PROPNAME PROPVAL ...]) + */ +dav_error * +dav_svn__post_create_txn_with_props(const dav_resource *resource, + svn_skel_t *request_skel, + ap_filter_t *output) +{ + const char *txn_name; + const char *vtxn_name; + dav_error *derr; + svn_error_t *err; + request_rec *r = resource->info->r; + apr_hash_t *revprops; + svn_skel_t *proplist_skel = request_skel->children->next; + + if ((err = svn_skel__parse_proplist(&revprops, proplist_skel, + resource->pool))) + { + return dav_svn__convert_err(err, HTTP_BAD_REQUEST, + "Malformatted request skel", resource->pool); + } + + /* Create a Subversion repository transaction based on HEAD. */ + if ((derr = dav_svn__create_txn(resource->info->repos, &txn_name, + revprops, resource->pool))) + return derr; + + /* Build a "201 Created" response with header that tells the + client our new transaction's name. */ + vtxn_name = apr_table_get(r->headers_in, SVN_DAV_VTXN_NAME_HEADER); if (vtxn_name && vtxn_name[0]) { /* If the client supplied a vtxn name then store a mapping from |