Reposting from https://github.com/bitfireAT/davdroid/issues/578#issuecomment-124746482, since it’s sort of off-topic, yet I think it’s an important discussion to have:
I think I understand now what was irking me about DavDroid’s behavior:
delete every local non-dirty contacts that are not on the server anymore
The items with
@ are being treated inconsistently by DavDroid. First it assumes they’re on the server and therefore adds them to the addressbook, later it thinks they are not on the server and deletes them locally.
So I think the way DavDroid handles invalid multiget-responses such as the one from ownCloud is problematic. Encoding errors happen all the time, and while I don’t think DavDroid is in a place to work around those, it should abort sync if:
- the response contains unsolicited items
- is missing items that have been requested. Unfortunately Radicale doesn’t allow between a finer distinction of 404-status and a missing status. At least not until https://github.com/Kozea/Radicale/pull/259 is widely used.