Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@evert
Last active October 21, 2018 13:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save evert/b1cef035890701973fd9 to your computer and use it in GitHub Desktop.
Save evert/b1cef035890701973fd9 to your computer and use it in GitHub Desktop.
Email to google about carddav issues.

Context: This is the email I sent google, listing issues I came across when working with their carddav server. More information in this blogpost. I reformatted and redacted the email to protect people's privacy.

Hello redacted,

You may have figured it from the other emails, but we are currently working on providing a syncronization tool with Google's new CardDAV server. We've run into a number of issues that are definitely bugs, and looking for some advise in a different area.

I would much appreciate it if you could take a look at these, but I'd also completely understand if you're busy. Regardless, I feel that this information may be helpful for you, because I feel I will not the last to mention them

First, not really a bug

Creating new vcards with PUT consistently takes about 10 seconds to process. There's probably a lot of processing that's going on on your server, but one effect is, that if we're doing an initial sync with a new account with lets say, 500 contacts.. this would take almost 1.5 hour to complete.

So what we'd like to do is to employ HTTP pipelining and open multiple requests at the same time. My question here really is: do you see any problems with this, and are there any limits you're aware of we should consider (e.g.: a maximum number of open tcp connections from 1 ip).

HTTP/1.1 400 Bad Request with some vcards

Some vCards trigger consistently a 400 bad request. My hunch is that it has to do with the PHOTO attachment that you may not be able to process server-side. I also don't know exactly what type of photo this originally was, but we have many vcards in our system that will trigger this.

IF this is indeed the cause: since there is no TYPE information attached to the PHOTO, and you cannot figure out what format the picture is in, I imagine it would be best to treat the PHOTO just like you would an X-PROPERTY.

I attached a vCard that triggers this (badrequest.vcf)

Timeout with certain vcards

Doing a PUT with some vCards triggers HTTP requests that never receive a response. I waited up to 10 minutes, just to see if anything would happen, but it didn't. For now I'm timing out requests after 2 minutes and add a special marker to our system that the google carddav server could not handle these.

I attached a vCard that consistently triggers this to this email as well (badrequest.vcf).

Changing urls and UIDs

I heard through the grapevine that this was by design, so you're probably well aware of this. But I wanted to point it out once more anyway.

When a new card gets uploaded on a arbitrary url, you change the url to a new location and the UID: property also gets filled with this value. This goes against the CardDAV spec. I understand that objectively it seems that this behavior is alright, but there's some major problems with this.

Any system that attaches some kind of relationship to a vCard will lose that relationship after a sync, because the vCard gets treated as if:

  1. It was uploaded
  2. It was deleted remotely
  3. A new card was added

To give you an example, the effect for OS X addressbook, is that if the vCard was part of any contact group, that relationship is lost. In our particular case it means that the change history for a vCard is also broken.

I was able to work around this by doing the following:

  1. Do a PUT with a url we decide on
  2. Do a GET request on that very same url (this returns the vcard with the changed UID).
  3. Based on the UID, we 'guess' the actual new url
  4. Whenever we sync (up or down) we rewrite the UIDs.

So in our particular case, we have a workaround and are no longer directly affected by this, but I felt like it was important to point out that this is a pretty severe break in the standard.

redacted

Best Regards,
Evert Pot

BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//Mac OS X 10.8.1//EN
N:Redacted;Redacted;;;
FN:Redacted
EMAIL;type=INTERNET;type=HOME;type=pref:redacted@redacted.nl
TEL;type=WORK;type=VOICE;type=pref:06-55555555
TEL;type=CELL;type=VOICE:+31655555555
item1.ADR;type=HOME;type=pref:;;redacted 357;redacted;;3544 CZ;Netherlands
item1.X-ABADR:nl
BDAY:1988-07-04
PHOTO;ENCODING=b;TYPE=JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/4QBYRXhpZgAATU0AKgAA
AAgAAgESAAMAAAABAAEAAIdpAEAAAAAQAAACYAAAAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAA
AICgAwAEAAAAAQAAAIAAAAAA/bAEMAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB/8AAEQgAgACAAwER
AAIRAQMRAf/EAB8AAAEFAQEQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUE
BAAAAX0BAgMABBEFEiExQQE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0
NTY3ODk6Q0RFRkdISUpTVFVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi
o6Slpqeoqaqys7S1tre4u6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/
xAAfAQADAQEBAQEBAQEBAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC
AxEEBSExBhJBUQdhcRMjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpD
REVGR0hJSlNUVVZXWFmmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeo
qaqys7S1tre4ubrCw8xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIR
AxEAPwD9cf2yfi98ZWvG/xp8R/tB/tN/tFfsUfBLwX8StT+DP7JPwK/Zf8M2MX7Un7YvjfTPD+
mTz/ABD8OXN3pvibw+MvCur+KtXg0bwvofh3T9H8MvpqifxVrnhm7aDW77/J/IMHgZUcA8tyfK
eLs7zDCrOeKM84jxUrZLw/RxGIqSnh8XJ1KUKOMVKE6+LxGJqVcU6rk6NPExcqUP2TD06ShRhR
oUq0pQ5q06r/AHVDGXw2i4qHLBXfXa3Mk0Yn7LPgLxD+3l+y54p+HnjZtH/Zr/AOClP7Lf7T/w
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
dt9p8XadNeta2ECSMsst7Z2yQMzTu8pvNOgEb3FrqR1Oxmew027kWH6dYinVw8ack3yWdCoSl7
r+KE+aScY7JcktlFez/dWn4bw86WInUi4rm92tSleNmuVKdNwTjKfxOXOkneTU26l4e367P/B3
hyZrXVtfsor5cZ0y2aTUNVyRlR/Zunpc3qb/AOFngVDyd2MkcVXE0KK/eVYx1ta95X1+yrWz1a
t3Z1QpVJ6xg2r25npG/bmlaN9dr3trsjgb34vXVzuTw34P1K4Tol94iuINBtDnkSJaIL9WWMjo
stpaMeQ23g1x1MygtKVOc3qnKVoJbWaT1kt72ttpe50Rwjv780l15E5NXvpd8sb+cZSt9r8Hqs
viDxSWbxZrD3No+ceHtHM+m6AinHyXMaStfaseM51G5eAknbaIDiuCria9fScrR0fJC43Tb16t
bPXt1R0wp06aXJH3tHzy1nfXZ6KP/bqTtu2TQQQ20SQW8MUEMY2xQwIkUUa9dqRoFRBJOFAHNY
lkFvq8nhDxDZeLYg5sVRdL8UwRgnzdDml3JqAQZLXGh3JF4u1DI9k97AGUOCOjDV/YSMnfkk1G
p1tF9bJNtqVnp0vuRVh7Sm4dU+aHdztbl2+3ot0r2fSz+qY5I5o0lidJYpUWSOSNlTkjdQyOjq
Sro6kMrKSrKQQSDXvppq61T1TXU8o/Ef/gsnfeMPg9+wb+1hJ4BkvLP/AISzwRZWU9xYNOk2la
N4z8deFfCnxU021lt9slqtv4L8Q+Itas2iaNba0ku9hVbNiPzzxA+sYDhvO6+CX7ng5+zSvde0
qU6ddKyX/LupN3vomrp6n9M/RHyvIeIfpD+EuW8Tey/sh8U0a2LVbl9lKrl+BxmWWufOuV82ZY
TCwad+eXIrc09f47P2X/ANurVf2ZPhL8TfhZpPgzwzrlh8RNIl0mS91PT7K4utMXw2bOW4jeW0
dGQKslsVkEW6LLI8it/FGUcR4/KcPmeEjhaOI/tKMo1KtaClUjKT96Sm4yabtvs3qr2bP+o/xX
+j3wf4p8SeHfFmJ4kzXIl4f16NfA5dlGLqYfBYmnRjKNOjVo0q1KnOlCEnH2NROnFxhUUeeMWv
iTw7qGueIPiR4bvvCy6vH4itvGOj65ok/hrUdT0TW7XXYtbtrvTn0DWtFntNZI1Rbvy49N1HSb
q11OzuTFPZTw3KRuPS4LpYzB53l+Lw/PGusVT5FTlKLk3NSUdGn8UU0r7pPpPE+k7i+GOKfCzi
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
tE1qwtNPkk0fXrXU9OtNT0zStZsLa11XT7S8i6XSg5U58qUqSkqdtFUlytWTtayWnSytYx9pNR
lHmfLNpyTs7tO6euqd+q1ez0PWK0IOF+IWs+JNB8PnUfDNlb3l0t6lvdm4trq+eysLqTyJdQt7
C0kilvpbWR4XNuJEHlGSZhIIjE/PialWnTcqUVJrdO7dnomkt9f8ZM1pRpyk1Uk4rlk1ZqN5JX
UXKSajfa9nrZdTwvUdE1C+uYrrxjeatr12CZYIdZQ2+mQNnBex0Sjg06EA8B2guJhwGnbC48Sr
KtN3qubvspJpafyqyXXVLTy1d/Qp+zSapci25uR3k+vvSu5Wf8ryvsXqyLCgAoAKACgBkkscKN
LNIkUaDLySOqIg9WdiFUe5OOKG0t3Zd3oBiw6/bXxf+x7DXPECZIkm8P6FqmsW6EcEG5srWW3J
BIBCSsQWAOM04xnO/s6dSpyuz5It/jpp0YO0dJShF9pzjF7J7ZJvdFbUnutXgbRh4Y8ZJqd8Ad
OtZfDup6bdGaB1lhvoLq/htbO3SxuEhme5nuoUhKqST0qlSrMoqlVjN83KnFJ+79rXonpfWz3Q
KcF7zqU1FbtThPRp6cqbcm0n7tnzara59VeG21ttB0n/hJIrh14WMC6qlrKJ4PtioFldHVVTMh
AleOPfFE7tFFLNGiyv9FT5/Zw9pbn5VzNO93bV6aa76adjyfIpz9m24cz5bqztf7/m9Xu0notn
y4xIZRGglZFjaXavmNGjMyRl8biitI7KpO1WdiBljm7K97a1+tu1ySC8vbPTreS71C7trG0hXd
Nc3k8VtbxL/ekmmdI0HuzAVMpRguaUoxX80pKK183pqNJtSTbbsktW32S3bPLNS+MWhgyQ+GNP
1HxbcoWXz7JBp+iKynDb9b1BY4JVHUPp0OobxygbpXHVxyg3GCdWStez5Y67rms3dKz+Fp3Wu9
umOEqOzm1TT1s9Z20fwrZ66Kbhtq1ucFqHiXx5r+9b3W7w3ZPnFh4WQpebScqs+vXqyXXmKvyu
+n22n7jyjLwa4KuNrVG0pezjpZQunprdy+K99Gk7NJaav0xoUYW91za+1Pa+m0E+W176Sc99bn
hf7QX7U/gX9hTwX8ONavPhb8ePjb4w/aG+IsPw48AeAIN6Np3i/xJ4n+Iz+Hdc8Q2dlM/i3xZ4
a0vSvtWieHtWvLzUJNUmvLm20u6nh0+8FgsEfXSqRw0hOSq1Z4iVlGPvNzV7JJtJaLV3bla/aK
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
yh7TEV5K9Sz0jCNox0nGTXvXesW007//0=
CATEGORIES:My Contacts
REV:2012-09-17T12:47:37Z
UID:422a1aef-cfc7-4225-8cb2-aa73d822f8ba
END:VCARD
BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//Mac OS X 10.8.4//EN
N:Redacted;Redacted;;;
FN:Redacted Redacted
TEL;type=WORK;type=VOICE;type=pref:+1 (416) 555-5555
NOTE:test
BDAY:2000-11-16
REV:2013-08-16T14:58:56Z
UID:cc317167-d6d1-4037-9f2f-6b3fca88ee19
END:VCARD
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment