45 } WebdavType; |
46 } WebdavType; |
46 |
47 |
47 typedef struct DefaultWebdavData { |
48 typedef struct DefaultWebdavData { |
48 WebdavVFSProperties vfsproperties; |
49 WebdavVFSProperties vfsproperties; |
49 } DefaultWebdavData; |
50 } DefaultWebdavData; |
|
51 |
|
52 typedef struct WebdavPropfindRequestList WebdavPropfindRequestList; |
|
53 struct WebdavPropfindRequestList { |
|
54 WebdavPropfindRequest *propfind; |
|
55 WebdavPropfindRequestList *next; |
|
56 }; |
50 |
57 |
51 WebdavType* webdav_get_type(scstr_t dav_class); |
58 WebdavType* webdav_get_type(cxstring dav_class); |
52 |
59 |
53 void* webdav_init_backend(ServerConfiguration *cfg, pool_handle_t *pool, WebdavType *dav_class, WSConfigNode *config, int *error); |
60 void* webdav_init_backend(ServerConfiguration *cfg, pool_handle_t *pool, WebdavType *dav_class, WSConfigNode *config, int *error); |
54 |
61 |
55 int webdav_init(pblock *pb, Session *sn, Request *rq); |
62 int webdav_init(pblock *pb, Session *sn, Request *rq); |
56 |
63 |
60 * returns a buffer containing the request body |
67 * returns a buffer containing the request body |
61 * |
68 * |
62 * this function sets an http response code in case of an error |
69 * this function sets an http response code in case of an error |
63 * or missing request body |
70 * or missing request body |
64 */ |
71 */ |
65 UcxBuffer* rqbody2buffer(Session *sn, Request *rq); |
72 int rqbody2buffer(Session *sn, Request *rq, CxBuffer *buf); |
66 |
73 |
67 |
74 |
68 int webdav_options(pblock *pb, Session *sn, Request *rq); |
75 int webdav_options(pblock *pb, Session *sn, Request *rq); |
69 |
76 |
70 int webdav_propfind(pblock *pb, Session *sn, Request *rq); |
77 int webdav_propfind(pblock *pb, Session *sn, Request *rq); |
72 int webdav_propfind_init( |
79 int webdav_propfind_init( |
73 WebdavBackend *dav, |
80 WebdavBackend *dav, |
74 WebdavPropfindRequest *propfind, |
81 WebdavPropfindRequest *propfind, |
75 const char *path, |
82 const char *path, |
76 const char *uri, |
83 const char *uri, |
77 UcxList **out_req); |
84 WebdavPropfindRequestList **out_req); |
78 |
85 |
79 int webdav_propfind_do( |
86 int webdav_propfind_do( |
80 WebdavBackend *dav, |
87 WebdavBackend *dav, |
81 WebdavPropfindRequest *propfind, |
88 WebdavPropfindRequest *propfind, |
82 WebdavResponse *response, |
89 WebdavResponse *response, |