88 "DESIGN ERROR: attempted to product an "
89 "activelock element from a partial, indirect "
90 "lock record. Creating an XML parsing error "
91 "to ease detection of this situation: <");
105 switch (
lock->scope) {
155 (*
hooks->format_locktoken)(
p,
lock->locktoken));
183 "The request body contains an unexpected "
184 "XML root element.");
190 "Could not parse the lockinfo due to an "
191 "internal problem creating a lock structure.",
196 if (
lock->depth == -1) {
198 "An invalid Depth header was specified.");
242 "The server cannot satisfy the "
243 "LOCK request due to an unknown XML "
244 "element (\"%s\") within the "
245 "DAV:lockinfo element.",
270 if ((
err = (*
ctx->w.lockdb->hooks->append_locks)(
ctx->w.lockdb,
302 int depth =
lock->depth;
342 ctx.w.lockdb = lockdb;
357 "Error(s) occurred on resources during the "
358 "addition of a depth lock.");
374 if (lockdb ==
NULL) {
401 if ((
err = (*
ctx->w.lockdb->hooks->remove_lock)(
ctx->w.lockdb,
461 "The specified locktoken does not correspond "
462 "to an existing lock on this resource.");
482 "The lock database is corrupt. A direct lock could "
483 "not be found for the corresponding indirect lock "
484 "on this resource.");
526 if ((
err = (*
hooks->open_lockdb)(
r, 0, 1, &lockdb)) !=
NULL) {
532 if (locktoken !=
NULL
549 ctx.w.lockdb = lockdb;
552 ctx.locktoken = locktoken;
560 (*
hooks->close_lockdb)(lockdb);
577 return (*
ctx->w.lockdb->hooks->append_locks)(
ctx->w.lockdb,
611 "Could not fetch parent resource. Unable to "
612 "inherit locks from the parent and apply "
613 "them to this resource.");
663 ctx.w.lockdb = lockdb;
722 if ((
err = (*
hooks->open_lockdb)(
r, 1, 1, &lockdb)) ==
NULL) {
725 (*
hooks->close_lockdb)(lockdb);
732 "Failed to query lock-null status for %s",
788 "The resource was created successfully, but "
789 "there was a problem inheriting locks from "
790 "the parent resource.",
#define APLOG_USE_MODULE(foo)
apr_brigade_flush void * ctx
apr_text_header const char * text
#define APR_XML_X2T_FULL_NS_LANG
const apr_xml_elem int apr_array_header_t int const char ** pbuf
#define HTTP_MULTI_STATUS
#define HTTP_PRECONDITION_FAILED
#define HTTP_INTERNAL_SERVER_ERROR
#define ap_is_HTTP_SERVER_ERROR(x)
#define DAV_GET_HOOKS_LOCKS(r)
#define DAV_RESOURCE_LOCK_NULL
int dav_get_depth(request_rec *r, int def_depth)
void dav_buffer_append(apr_pool_t *p, dav_buffer *pbuf, const char *str)
const char * dav_lock_get_activelock(request_rec *r, dav_lock *lock, dav_buffer *pbuf)
#define DAV_RESOURCE_NULL
dav_error * dav_lock_parse_lockinfo(request_rec *r, const dav_resource *resource, dav_lockdb *lockdb, const apr_xml_doc *doc, dav_lock **lock_request)
int dav_unlock(request_rec *r, const dav_resource *resource, const dav_locktoken *locktoken)
dav_error * dav_auto_checkin(request_rec *r, dav_resource *resource, int undo, int unlock, dav_auto_version_info *av_info)
dav_error * dav_lock_query(dav_lockdb *lockdb, const dav_resource *resource, dav_lock **locks)
void dav_check_bufsize(apr_pool_t *p, dav_buffer *pbuf, apr_size_t extra_needed)
dav_error * dav_add_lock(request_rec *r, const dav_resource *resource, dav_lockdb *lockdb, dav_lock *lock, dav_response **response)
time_t dav_get_timeout(request_rec *r)
int dav_validate_root(const apr_xml_doc *doc, const char *tagname)
#define DAV_RESOURCE_ERROR
int dav_get_resource_state(request_rec *r, const dav_resource *resource)
dav_error * dav_push_error(apr_pool_t *p, int status, int error_id, const char *desc, dav_error *prev)
dav_error * dav_notify_created(request_rec *r, dav_lockdb *lockdb, const dav_resource *resource, int resource_state, int depth)
#define DAV_DECLARE(type)
#define DAV_TIMEOUT_INFINITE
dav_error * dav_new_error(apr_pool_t *p, int status, int error_id, apr_status_t aprerr, const char *desc)
#define DAV_RESOURCE_EXISTS
void dav_add_response(dav_walk_resource *wres, int status, dav_get_props_result *propstats)
@ DAV_LOCKREC_INDIRECT_PARTIAL
@ DAV_LOCKSCOPE_EXCLUSIVE
apr_array_header_t ** result
apr_int32_t apr_int32_t apr_int32_t err
DAV extension module for Apache 2.0.*.
#define DAV_WALKTYPE_AUTH
#define DAV_GETLOCKS_PARTIAL
#define DAV_GETLOCKS_RESOLVED
#define DAV_WALKTYPE_LOCKNULL
#define DAV_WALKTYPE_NORMAL
static const char *const hooks[]
apr_array_header_t * namespaces
struct apr_xml_elem * first_child
struct apr_xml_elem * next
dav_error *(* get_locks)(dav_lockdb *lockdb, const dav_resource *resource, int calltype, dav_lock **locks)
dav_error *(* find_lock)(dav_lockdb *lockdb, const dav_resource *resource, const dav_locktoken *locktoken, int partial_ok, dav_lock **lock)
dav_error *(* create_lock)(dav_lockdb *lockdb, const dav_resource *resource, dav_lock **lock)
dav_error *(* lookup_resource)(dav_lockdb *lockdb, const dav_locktoken *locktoken, const dav_resource *start_resource, const dav_resource **resource)
dav_error *(* append_locks)(dav_lockdb *lockdb, const dav_resource *resource, int make_indirect, const dav_lock *lock)
dav_error *(* remove_locknull_state)(dav_lockdb *lockdb, const dav_resource *resource)
int(* is_same_resource)(const dav_resource *res1, const dav_resource *res2)
const dav_hooks_locks * hooks
const dav_hooks_repository * hooks
const dav_resource * resource
A structure that represents the current request.
static dav_error * dav_unlock_walker(dav_walk_resource *wres, int calltype)
static dav_error * dav_inherit_locks(request_rec *r, dav_lockdb *lockdb, const dav_resource *resource, int use_parent)
static dav_error * dav_lock_walker(dav_walk_resource *wres, int calltype)
static dav_error * dav_get_direct_resource(apr_pool_t *p, dav_lockdb *lockdb, const dav_locktoken *locktoken, const dav_resource *resource, const dav_resource **direct_resource)
static dav_error * dav_inherit_walker(dav_walk_resource *wres, int calltype)