--- a/libidav/methods.c Sun Nov 09 11:30:24 2014 +0100 +++ b/libidav/methods.c Sun Nov 09 14:33:23 2014 +0100 @@ -280,8 +280,8 @@ //char *href = (char*)href_node->content; href = util_url_path((char*)href_node->content); - sstr_t href_s = sstr((char*)href); - sstr_t href_r = sstr(resource->href); + sstr_t href_s = sstr(util_url_decode(resource->session, href)); + sstr_t href_r = sstr(util_url_decode(resource->session, resource->href)); if(!sstrcmp(href_s, href_r)) { res = resource; } else if(href_s.length == href_r.length + 1) { @@ -292,6 +292,9 @@ } } } + + free(href_s.ptr); + free(href_r.ptr); } else if(xstreq(node->name, "propstat")) { xmlNode *n = node->children; xmlNode *prop_node = NULL;