From d9c2b7ba35701a571b62b7c5f68525a225c47f31 Mon Sep 17 00:00:00 2001 From: Markus Unterwaditzer Date: Wed, 13 Aug 2014 17:19:25 +0200 Subject: [PATCH] Don't emit collections twice --- vdirsyncer/storage/dav.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/vdirsyncer/storage/dav.py b/vdirsyncer/storage/dav.py index b81c319..b71add5 100644 --- a/vdirsyncer/storage/dav.py +++ b/vdirsyncer/storage/dav.py @@ -86,10 +86,15 @@ class Discover(object): # Another one of Radicale's specialties: Discovery is broken (returning # completely wrong URLs at every stage) as of version 0.9. # https://github.com/Kozea/Radicale/issues/196 + done = set() for principal in itertools.chain(self._find_principal(), ['']): for home in itertools.chain(self._find_home(principal), ['']): for collection in self._find_collections(home): - yield collection + href = utils.urlparse.urljoin(self.session.url, + collection['href']) + if href not in done: + done.add(href) + yield collection def _find_home(self, principal): headers = self.session.get_default_headers()