GNOME Bugzilla – Bug 673894
Adding events to Google Calendar is broken
Last modified: 2012-04-16 05:24:42 UTC
Created attachment 211817 [details] e-calendar-factory output Steps to reproduce : 1) add a new event to one of your google calendar 2) error message shows (translated from French) : Unable to create calendar object : The calendar doesn't exists 3) discard the new event dialog 4) check on the web : the event has been added nevertheless 5) some time after (next evolution sync) : the event appears on evolution This affects a lot of the users I'm helping with Ubuntu related issues and is the exact same problem described here : http://ubuntuforums.org/showthread.php?p=11834712 And there is more automatically fetched data in my downstream bug report : https://bugs.launchpad.net/bugs/978728 I also attach here the result of CALDAV_DEBUG=all /usr/lib/evolution/e-calendar-factory -r. This shows the following error when clicking on save : (e-calendar-factory:30861): e-cal-backend-caldav-WARNING **: Could not fetch object 'https://jonathan%40ernstfamily.ch@www.google.com/calendar/dav/jonathan%40ernstfamily.ch/events/20120411T094521Z-30973-1000-20661-0_jernst-laptop-20120411T094527Z.ics' from server, status:404 (Not Found) This affects every google apps calendar that I have tried on several domains.
Might be a duplicate of Bug 666038 but the error message seems different so I opened a new one
Downstream bug report about the same from 3.4.0: https://bugzilla.redhat.com/show_bug.cgi?id=811791
Thanks for a bug report. I can reproduce it too. I do not think the CalDAV backend does anything wrong, it creates event according to [1], thus I suspect Google did an "update" on their CalDAV implementation. If I recall correctly, then the PUT request should be either followed by a redirection when server saves the event in a different place than requested, or it should include a Location header in it's Created response. None of that Google server does. [1] http://tools.ietf.org/html/rfc4791.html#section-5.3.2
Created attachment 211924 [details] [review] eds patch for evolution-data-server; OK, let's workaround their fault. After each PUT, CalDAV backend receives the event from a server, to present actual server version of the event to a user (you can notice that with google, if you have configured a default alarm on the server - you create an event without alarm in evolution, but as soon as it's saved the event is updated with added alarm). If this Get fails with 404 (not found), then CalDAV backend tries to get the event based on its UID. It can be misleading, but still think of this as a workaround for Google. If even this fails, then the event is left as is (also without corresponding ETag) and there is scheduled a full update, which will eventually remove this event and it'll download its live version from the server.
Created commit 67ccfad in eds master (3.5.1+) Created commit de60fed in eds gnome-3-4 (3.4.1+)
*** Bug 673538 has been marked as a duplicate of this bug. ***