diff -r 7bb47ddc1b5e -r ff477f1f7765 libidav/webdav.c --- a/libidav/webdav.c Sun Oct 07 09:14:03 2018 +0200 +++ b/libidav/webdav.c Thu Oct 11 19:29:45 2018 +0200 @@ -261,6 +261,17 @@ // TODO: add sstr_t version of dav_get_property_ns +void dav_set_effective_href(DavSession *sn, DavResource *resource) { + char *eff_url; + curl_easy_getinfo(sn->handle, CURLINFO_EFFECTIVE_URL, &eff_url); + if(eff_url) { + char *href = util_url_path(eff_url); + if(strcmp(href, resource->href)) { + dav_session_free(sn, resource->href); + resource->href = dav_session_strdup(sn, href); + } + } +} DavResource* dav_get(DavSession *sn, char *path, char *properties) { CURL *handle = sn->handle; @@ -281,6 +292,8 @@ long status = 0; curl_easy_getinfo (handle, CURLINFO_RESPONSE_CODE, &status); if(ret == CURLE_OK && status == 207) { + dav_set_effective_href(sn, resource); + //printf("response\n%s\n", rpbuf->space); // TODO: use PropfindParser resource = parse_propfind_response(sn, resource, rpbuf); @@ -322,6 +335,7 @@ curl_easy_getinfo (handle, CURLINFO_RESPONSE_CODE, &status); if(ret == CURLE_OK && status == 207) { //printf("response\n%s\n", rpbuf->space); + dav_set_effective_href(sn, resource); resource = parse_propfind_response(sn, resource, rpbuf); sn->error = DAV_OK; } else {