From 0ef480858e111c7512a78947deb9fdd33d415864 Mon Sep 17 00:00:00 2001 From: Stefan Hacker Date: Mon, 13 Apr 2026 03:25:46 +0200 Subject: [PATCH] fix(dav): CardDAV-Route fing PROPFIND auf /dav//calendars/ ab Die CardDAV-Route /// ist in Flask spezifischer als die generische / des CalDAV-Handlers und hat daher auch /dav//calendars/ abgefangen - mit 404, weil 'calendars' nicht mit 'ab-' anfaengt. Ergebnis: DAVx5 bekam auf das Home-Set eine 404 und zeigte keine Eintraege mehr an. Fix: wenn ab_part nicht mit 'ab-' anfaengt, an den CalDAV-PROPFIND/OPTIONS delegieren statt 404 zurueckzugeben. Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/app/dav/carddav.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/app/dav/carddav.py b/backend/app/dav/carddav.py index 88fdb74..8c212d3 100644 --- a/backend/app/dav/carddav.py +++ b/backend/app/dav/carddav.py @@ -140,7 +140,8 @@ _DAV_HEADERS = {'DAV': '1, 2, 3, addressbook'} @dav_bp.route('//', methods=['OPTIONS']) def ab_options(username, ab_part): if not ab_part.startswith('ab-'): - return Response('', 404) + from .caldav import options as _cal_options + return _cal_options(subpath=f'{username}/{ab_part}') return Response('', 200, { 'DAV': '1, 2, 3, addressbook', 'Allow': 'OPTIONS, PROPFIND, REPORT, GET, PUT, DELETE, PROPPATCH, MKCOL', @@ -152,7 +153,8 @@ def ab_options(username, ab_part): @basic_auth def ab_propfind(username, ab_part): if not ab_part.startswith('ab-'): - return Response('Not found', 404) + from .caldav import propfind as _cal_propfind + return _cal_propfind(subpath=f'{username}/{ab_part}') user: User = request.dav_user if username != user.username: return Response('', 403)