diff -r 7b73058d782e -r cbbdf207e67e libidav/resource.c --- a/libidav/resource.c Fri Mar 18 19:54:36 2016 +0100 +++ b/libidav/resource.c Sat Mar 19 12:34:32 2016 +0100 @@ -583,6 +583,7 @@ ret = do_put_request( sn->handle, locktoken, + FALSE, enc, (dav_read_func)aes_read, 0); @@ -609,6 +610,7 @@ ret = do_put_request( sn->handle, locktoken, + FALSE, data->content, data->read, data->length); @@ -632,6 +634,8 @@ } // store properties + int r = 0; + sn->error = DAV_OK; if(data->set || data->remove) { UcxBuffer *request = create_proppatch_request(data); UcxBuffer *response = ucx_buffer_new(NULL, 1024, UCX_BUFFER_AUTOEXTEND); @@ -648,11 +652,14 @@ data->remove = NULL; } else { dav_session_set_error(sn, ret, status); - return 1; + r = -1; } + + ucx_buffer_free(request); + ucx_buffer_free(response); } - sn->error = DAV_OK; - return 0; + + return r; } int dav_get_content(DavResource *res, void *stream, dav_write_func write_fnc) { @@ -757,17 +764,19 @@ CURLcode ret = do_delete_request(handle, locktoken, response); long status = 0; curl_easy_getinfo (handle, CURLINFO_RESPONSE_CODE, &status); + int r = 0; if(ret == CURLE_OK && (status >= 200 && status < 300)) { res->session->error = DAV_OK; // TODO: parse response // TODO: free res - - return 0; } else { dav_session_set_error(res->session, ret, status); - return 1; + r = 1; } + + ucx_buffer_free(response); + return r; } static int create_ancestors(DavSession *sn, char *href, char *path) { @@ -835,7 +844,7 @@ if(res->iscollection) { code = do_mkcol_request(handle, locktoken); } else { - code = do_put_request(handle, locktoken, "", NULL, 0); + code = do_put_request(handle, locktoken, TRUE, "", NULL, 0); } long s = 0; curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &s);