diff --git a/radicale/app/propfind.py b/radicale/app/propfind.py index 1a574c68..13d1f2fc 100644 --- a/radicale/app/propfind.py +++ b/radicale/app/propfind.py @@ -257,8 +257,8 @@ def xml_propfind_response( child_element.text = xmlutils.make_href(base_prefix, path) if share: # backmap - if child_element.text.startswith(share['PathMapped']): - child_element.text = str(share['PathOrToken']) + child_element.text.removeprefix(share['PathMapped']) + if child_element.text.startswith(base_prefix + share['PathMapped']): + child_element.text = base_prefix + str(share['PathOrToken']) + child_element.text.removeprefix(base_prefix + share['PathMapped']) if share_bday_automap and child_element.text.endswith(".vcf"): child_element.text = child_element.text.removesuffix(".vcf") + ".ics" element.append(child_element) diff --git a/radicale/app/report.py b/radicale/app/report.py index 05fda541..807a923a 100644 --- a/radicale/app/report.py +++ b/radicale/app/report.py @@ -739,11 +739,11 @@ def xml_item_response(base_prefix: str, href: str, href_element = ET.Element(xmlutils.make_clark("D:href")) href_element.text = xmlutils.make_href(base_prefix, href) - logger.trace("REPORT/xml_report: href=%r", href_element.text) + logger.trace("REPORT/xml_report: href=%r base_prefix=%r", href_element.text, base_prefix) if share: # backmap - if href_element.text.startswith(share['PathMapped']): - href_element.text = str(share['PathOrToken']) + href_element.text.removeprefix(share['PathMapped']) + if href_element.text.startswith(base_prefix + share['PathMapped']): + href_element.text = base_prefix + str(share['PathOrToken']) + href_element.text.removeprefix(base_prefix + share['PathMapped']) if share_bday_automap and href_element.text.endswith(".vcf"): href_element.text = href_element.text.removesuffix(".vcf") + ".ics" logger.trace("REPORT/xml_report: href=%r (backmapped)", href_element.text)