diff -r 41e88442ad4e -r da079dc0724c libidav/methods.c --- a/libidav/methods.c Thu Jan 29 11:43:41 2015 +0100 +++ b/libidav/methods.c Sun Feb 08 16:36:32 2015 +0100 @@ -63,7 +63,9 @@ curl_easy_setopt(handle, CURLOPT_WRITEDATA, response); ucx_buffer_seek(request, 0, SEEK_SET); - return curl_easy_perform(handle); + CURLcode ret = curl_easy_perform(handle); + curl_slist_free_all(headers); + return ret; } UcxBuffer* create_allprop_propfind_request() { @@ -188,6 +190,7 @@ s = S("\n\n"); ucx_buffer_write(s.ptr, 1, s.length, buf); + ucx_map_free(namespaces); return buf; } @@ -248,9 +251,9 @@ parse_response_tag(root, node, cond, len); } } - node = node->next; } + xmlFreeDoc(doc); return root; } @@ -395,6 +398,7 @@ resource_add_property(res, (char*)prop->ns->href, (char*)prop->name, text); } } + ucx_list_free(properties); set_davprops(res); if(res != resource) { @@ -450,7 +454,9 @@ curl_easy_setopt(handle, CURLOPT_WRITEDATA, response); ucx_buffer_seek(request, 0, SEEK_SET); - return curl_easy_perform(handle); + CURLcode ret = curl_easy_perform(handle); + curl_slist_free_all(headers); + return ret; } UcxBuffer* create_proppatch_request(DavResourceData *data) { @@ -619,7 +625,6 @@ read_func = (dav_read_func)ucx_buffer_read; curl_easy_setopt(handle, CURLOPT_INFILESIZE_LARGE, (curl_off_t)length); } else if(length == 0) { - struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Transfer-Encoding: chunked"); curl_easy_setopt(handle, CURLOPT_INFILESIZE_LARGE, (curl_off_t)1); curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headers); @@ -634,6 +639,7 @@ curl_easy_setopt(handle, CURLOPT_WRITEDATA, NULL); CURLcode ret = curl_easy_perform(handle); + curl_slist_free_all(headers); if(buf) { ucx_buffer_free(buf); }