libidav/webdav.c

changeset 48
08d5544c92fb
parent 47
fbbbeed4ba8f
child 66
f8c1f685e08e
--- a/libidav/webdav.c	Sun Jun 15 16:07:11 2014 +0200
+++ b/libidav/webdav.c	Sun Jun 15 20:12:48 2014 +0200
@@ -160,9 +160,8 @@
 
 DavResource* dav_get(DavSession *sn, char *path, char *properties) {  
     CURL *handle = sn->handle;
-    char *href = dav_session_get_href(sn, path);
-    util_set_url(sn, href);
-    dav_session_free(sn, href);
+    DavResource *resource = dav_resource_new(sn, path);
+    util_set_url(sn, dav_resource_get_href(resource));
     
     UcxList *proplist = NULL;
     if(properties) {
@@ -174,16 +173,16 @@
     //fwrite(rqbuf->space, 1, rqbuf->size, stdout);
     //printf("\n");
     
-    DavResource *resource = NULL;
     CURLcode ret = do_propfind_request(handle, rqbuf, rpbuf);
     int status = 0;
     curl_easy_getinfo (handle, CURLINFO_RESPONSE_CODE, &status);
     if(ret == CURLE_OK && status == 207) {
-        //printf("response\n%s\n", rpbuf->space); 
-        resource = parse_propfind_response(sn, NULL, rpbuf, NULL, 0);
+        //printf("response\n%s\n", rpbuf->space);
+        resource = parse_propfind_response(sn, resource, rpbuf, NULL, 0);
         sn->error = DAV_OK;
     } else  {
         dav_session_set_error(sn, ret, status);
+        dav_resource_free(resource);
     }
     
     ucx_buffer_free(rqbuf);

mercurial