src/server/webdav/davparser.cpp

changeset 48
37a512d7b8f6
parent 44
3da1f7b6847f
child 59
ab25c0a231d0
--- 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);
+}

mercurial