diff -r 499711b2a970 -r c5985d2fc19a src/server/webdav/webdav.c --- a/src/server/webdav/webdav.c Sat Jan 18 13:48:59 2020 +0100 +++ b/src/server/webdav/webdav.c Sat Jan 18 16:31:52 2020 +0100 @@ -54,7 +54,9 @@ static WebdavProperty dav_resourcetype_empty; static WebdavProperty dav_resourcetype_collection; -static WSXmlNode dav_resourcetype_collection_value; // TODO: change type to WSXmlData +static WSXmlData dav_resourcetype_collection_value; + +#define WEBDAV_RESOURCE_TYPE_COLLECTION "" static void init_default_backend(void) { memset(&default_backend, 0, sizeof(WebdavBackend)); @@ -101,11 +103,10 @@ dav_resourcetype_collection.namespace = &dav_namespace; dav_resourcetype_collection.name = "resourcetype"; - dav_resourcetype_collection.value.node = &dav_resourcetype_collection_value; - dav_resourcetype_collection.vtype = WS_VALUE_XML_NODE; - dav_resourcetype_collection_value.content = (xmlChar*)""; - dav_resourcetype_collection_value.type = XML_TEXT_NODE; - + dav_resourcetype_collection.value.data = &dav_resourcetype_collection_value; + dav_resourcetype_collection.vtype = WS_VALUE_XML_DATA; + dav_resourcetype_collection_value.data = WEBDAV_RESOURCE_TYPE_COLLECTION; + dav_resourcetype_collection_value.length = sizeof(WEBDAV_RESOURCE_TYPE_COLLECTION)-1; return REQ_PROCEED; } @@ -262,20 +263,20 @@ } } - // finish the propfind request - // this function should cleanup all resources, therefore we execute it - // even if a previous function failed - if(webdav_op_propfind_finish(op)) { - ret = REQ_ABORTED; - } - // if propfind was successful, send the result to the client if(ret == REQ_PROCEED && multistatus_send(ms, sn->csd)) { ret = REQ_ABORTED; // TODO: log error } else { + // TODO: error response + } + + // finish the propfind request + // this function should cleanup all resources, therefore we execute it + // even if a previous function failed + if(webdav_op_propfind_finish(op)) { // TODO: log error - // TODO: error response + ret = REQ_ABORTED; } return ret;