From 1cfd3fd95b11c1b20e167ec288eb5e11ee3f6d29 Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Sat, 17 Sep 2016 16:53:24 +0200 Subject: [PATCH 1/3] filter broken vcard entries before delivered, found on real life system at least 2 cards where vobject claimed about vobject.base.ValidateError: 'VCARD components must contain at least 1 N' --- radicale/storage.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/radicale/storage.py b/radicale/storage.py index a67fbf9f..d82c7362 100644 --- a/radicale/storage.py +++ b/radicale/storage.py @@ -718,7 +718,18 @@ class Collection(BaseCollection): break return collection.serialize() elif self.get_meta("tag") == "VADDRESSBOOK": - return "".join([item.serialize() for item in items]) + self.logger.debug("Try to serialize VADDRESSBOOK") + items_ok = [] + result = "" + for item in items: + try: + item.serialize() + items_ok.append(item) + except: + self.logger.exception("VCARD broken (skip): %s", item) + result = "".join([item.serialize() for item in items_ok]) + self.logger.debug("Try to return VADDRESSBOOK") + return result return "" _lock = threading.Lock() From ff02d17619d2afaf43e20c812c5b140db85e8e1c Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Sat, 17 Sep 2016 17:44:33 +0200 Subject: [PATCH 2/3] remove temporary debug statements --- radicale/storage.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/radicale/storage.py b/radicale/storage.py index d82c7362..3edae589 100644 --- a/radicale/storage.py +++ b/radicale/storage.py @@ -718,7 +718,6 @@ class Collection(BaseCollection): break return collection.serialize() elif self.get_meta("tag") == "VADDRESSBOOK": - self.logger.debug("Try to serialize VADDRESSBOOK") items_ok = [] result = "" for item in items: @@ -728,7 +727,6 @@ class Collection(BaseCollection): except: self.logger.exception("VCARD broken (skip): %s", item) result = "".join([item.serialize() for item in items_ok]) - self.logger.debug("Try to return VADDRESSBOOK") return result return "" From 1ffdb0310676e296144a3f64738d52abf579878c Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Sat, 17 Sep 2016 18:16:27 +0200 Subject: [PATCH 3/3] simplify patch --- radicale/storage.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/radicale/storage.py b/radicale/storage.py index 3edae589..6a27d3a3 100644 --- a/radicale/storage.py +++ b/radicale/storage.py @@ -719,15 +719,13 @@ class Collection(BaseCollection): return collection.serialize() elif self.get_meta("tag") == "VADDRESSBOOK": items_ok = [] - result = "" for item in items: try: item.serialize() items_ok.append(item) except: self.logger.exception("VCARD broken (skip): %s", item) - result = "".join([item.serialize() for item in items_ok]) - return result + return "".join([item.serialize() for item in items_ok]) return "" _lock = threading.Lock()