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'
This commit is contained in:
Peter Bieringer 2016-09-17 16:53:24 +02:00
parent 0c1dbc30bd
commit 1cfd3fd95b

View File

@ -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()