diff -r 4b55f05f4e00 -r a297c2e28fa1 libidav/resource.c --- 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;