diff -r ce9790523346 -r 37a512d7b8f6 src/server/webdav/davparser.cpp --- a/src/server/webdav/davparser.cpp Sun Jan 13 14:16:45 2013 +0100 +++ b/src/server/webdav/davparser.cpp Sat Jan 19 20:13:07 2013 +0100 @@ -54,13 +54,16 @@ XMLPlatformUtils::Initialize(); xcinit = 1; } - PropfindRequest *davrq = (PropfindRequest*)pool_malloc( + PropfindRequest *davrq = (PropfindRequest*)pool_calloc( sn->pool, + 1, sizeof(PropfindRequest)); davrq->allprop = 0; davrq->propname = 0; davrq->prop = 0; davrq->properties = NULL; + davrq->forbiddenProps = NULL; + davrq->notFoundProps = NULL; // create xml parser SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true); @@ -85,12 +88,19 @@ printf("davaparser Exception\n"); } - + delete parser; return davrq; } +void dav_free_propfind(PropfindRequest *rq) { + ucx_dlist_free(rq->forbiddenProps); + ucx_dlist_free(rq->notFoundProps); + //ucx_dlist_free(rq->properties); // uses pool + sbuf_free(rq->out); +} + ProppatchRequest* dav_parse_proppatch( Session *sn, Request *rq, @@ -102,10 +112,11 @@ XMLPlatformUtils::Initialize(); xcinit = 1; } - ProppatchRequest *davrq = (ProppatchRequest*)pool_malloc( + ProppatchRequest *davrq = (ProppatchRequest*)pool_calloc( sn->pool, + 1, sizeof(PropfindRequest)); - davrq->nsmap = xmlnsmap_create(); + davrq->nsmap = xmlnsmap_create(sn->pool); @@ -133,8 +144,16 @@ printf("davaparser Exception\n"); } - + delete parser; return davrq; } + +void dav_free_proppatch(ProppatchRequest *rq) { + ucx_dlist_free(rq->removeProps); + ucx_dlist_free(rq->setProps); + xmlnsmap_free(rq->nsmap); + ucx_map_free(rq->propstat->map); + ucx_dlist_free(rq->propstat->okprop); +}