[Bug] Contact Photo Sync Anomaly

Hiya,
I’ve recently switched from owncloud to nextcloud, and I was hoping this problem might be resolved, but apparently not, so I’m guessing it was carried over from the old codebase.

Anyway, here’s the problem. I use nextcloud to sync contacts and calendars between my two computers running Thunderbird (with the Sogo extension), and my Android phone (running DavDroid). I like to add photos to my contacts, so they appear on the phone. I usually use 200x200 pixel jpg or png files, which are about 10kb each, so not a big drain on resources, and don’t take too long to display in the nextcloud contacts app. Approx 450 contacts in total.

So, if I’ve added a photo in Thunderbird or the web interface, it syncs across to the phone. However if I add the photo on the phone, it syncs over to the server but not to Thunderbird. Furthermore, if I edit any part of the contact on the phone, if that contact has a photo, it remains on the phone and the server, but is stripped out of the contact on Thunderbird.

So this seems to be something to do with the vcard PHOTO field, and how its handled when transmitting from the nextcloud server (Sabre?) to Thunderbird/Sogo. But not the other way around.

Any hints on how to troubleshoot this? There are no weird entries in the nextcloud.log. Is there any more information I can provide here? I’ll also seek information in the Sogo forum.

Versions: Nextcloud 11.0.1, Thunderbird 45.5, Sogo 31.0.3, Davdroid 1.3.6

@plutocrat

I experienced the same behavior but it went away after updating Sogo Connector 31.0.3 to Sogo Connector 31.0.4 for Mozilla Thunderbird which you can get through the nightly builds at https://packages.inverse.ca/SOGo/thunderbird/nightly/

Maybe you want to give it a try.

Thanks for that Tamsy. I’ll give it a go. Meanwhile, I did a bit of digging, as I was thinking about things … I set up Burp Proxy and made Thunderbird go through that (it also handled the SSL, which I was a bit worried about!) Anyway, it seems that the problem lies in the fact that Thunderbird/Sogo speaks VCF format 3.0, and nextcloud/sabre speaks VCF 4.0.

Specifically, the tags for image format are
VERSION:3.0
PHOTO;ENCODING=b;TYPE=JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/blahblah
VERSION:4.0
PHOTO:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/blahblah

So what’s happening, as far as I can see is that uploading to the server and down to Davdroid in 3.0 is working. Davdroid sends it back as 4.0, which nextcloud can also cope with, but Thunderbird/Sogo can’t, so it ignores the photo tag and just imports the rest. Seems reasonable?

So, I guess my options are
a) getting Sogo to talk 4.0 (will investigate 31.0.4) or
b) Dumbing down Sabre/nextcloud to talk 3.0.

We can’t set 3.0 properties just for one software.
We’re up-to-date with the vcard rfc and we should stay like that.
Sorry :confused:

Please tell me if this is solved now. :slight_smile:

Well I tried the latest Sogo Connector, and trawled through the code on Github for a bit, but it wasn’t something I could fix myself. I filed a bug and thought that was all I could do. The development on the connector doesn’t really seem to be very brisk.

But on a whim, I took a look to see if there were any new CardDAV clients for Thunderbird, and lo and behold, someone has written one!


https://cardbook.6660.eu/

I just tried it and it works fine! Even auto-discovers the Contact URL. It lets you choose which CardDAV version to use too. (4.0 of course, thank you very much). So, cool: Problem solved. If anyone else is using Thunderbird and cursing Sogo connector, then take a look.