libidav/resource.c

changeset 225
a297c2e28fa1
parent 223
cbbdf207e67e
child 227
bf485439222a
--- a/libidav/resource.c	Sat Mar 19 18:49:36 2016 +0100
+++ b/libidav/resource.c	Sun Mar 20 11:27:31 2016 +0100
@@ -746,7 +746,7 @@
 DavResource* dav_create_child(DavResource *parent, char *name) {
     DavResource *res = dav_resource_new_child(parent->session, parent, name);
     if(dav_create(res)) {
-        // TODO: free resource
+        dav_resource_free(res);
         return NULL;
     } else {
         return res;
@@ -808,7 +808,8 @@
                 name[len - 1] = '\0';
             }
             if(resource_add_crypto_info(sn, h, name, NULL)) {
-                // TODO: error
+                sn->error = DAV_ERROR;
+                dav_session_set_errstr(sn, "Cannot set crypto properties for ancestor");
             }
             break;
         } else if(status == 405) {
@@ -852,13 +853,15 @@
     if(code == CURLE_OK && (s >= 200 && s < 300)) {
         sn->error = DAV_OK;
         // if the session has encrypted file names, add crypto infos
-        resource_add_crypto_info(sn, res->href, res->name, NULL); // TODO: check return type
-        
-        // do a minimal propfind request
-        UcxBuffer *rqbuf = create_propfind_request(sn, NULL);
-        int ret = dav_propfind(sn, res, rqbuf);
-        ucx_buffer_free(rqbuf);
-        return ret;
+        if(!resource_add_crypto_info(sn, res->href, res->name, NULL)) {
+            // do a minimal propfind request
+            UcxBuffer *rqbuf = create_propfind_request(sn, NULL);
+            int ret = dav_propfind(sn, res, rqbuf);
+            ucx_buffer_free(rqbuf);
+            return ret;
+        } else {
+            return 1;
+        }
     } else {
         dav_session_set_error(sn, code, s);
         return 1;

mercurial