diff -r e820d433f405 -r d5031c30022c src/server/webdav/operation.h --- a/src/server/webdav/operation.h Sat Jan 25 09:00:27 2020 +0100 +++ b/src/server/webdav/operation.h Sat Jan 25 11:16:55 2020 +0100 @@ -35,21 +35,26 @@ extern "C" { #endif +typedef int(*response_close_func)(WebdavOperation *, WebdavResource *); + struct WebdavOperation { - WebdavBackend *dav; - Request *rq; - Session *sn; + WebdavBackend *dav; + Request *rq; + Session *sn; - WebdavPList *reqprops; /* requested properties */ - UcxList *requests; /* backend specific request objects */ + WebdavProppatchRequest *request; /* proppatch request or NULL */ + WebdavPList *reqprops; /* requested properties */ + UcxList *requests; /* backend specific request objects */ - WebdavResponse *response; + WebdavResponse *response; - VFS_DIR parent; /* current directory */ - struct stat *stat; /* current stat object */ + response_close_func response_close; + + VFS_DIR parent; /* current directory */ + struct stat *stat; /* current stat object */ }; -WebdavOperation* webdav_operation_create( +WebdavOperation* webdav_create_propfind_operation( Session *sn, Request *rq, WebdavBackend *dav, @@ -75,6 +80,17 @@ int webdav_op_propfind_finish(WebdavOperation *op); +WebdavOperation* webdav_create_proppatch_operation( + Session *sn, + Request *rq, + WebdavBackend *dav, + WebdavProppatchRequest *proppatch, + WebdavResponse *response); + +int webdav_op_proppatch_close_resource( + WebdavOperation *op, + WebdavResource *resource); + #ifdef __cplusplus } #endif