jelmer / xandikos

A CalDAV/CardDAV server backed by Git
https://www.xandikos.org/
GNU General Public License v3.0
424 stars 42 forks source link

Evolution cannot write to calendar: Precondition failed #80

Open tusj opened 6 years ago

tusj commented 6 years ago

I am testing xandikos with evolution, and seem to be unable to write a new appointment with evolution. I am running xandikos like this: xandikos --defaults -d $HOME/dav --listen 0.0.0.0

Evolution complains: Failed to create an event in the calendar “CalDAV : calendar” Cannot create calendar object: Failed to put data: HTTP error code 412 (Precondition Failed): Not a valid calendar file.

The error in xandikos' output is this: WARNING:root:invalidly formatted href: http://localhost:8080/user/calendars/calendar/21921634061cd33d66946f8e2005900c17b9d5cf.ics

jelmer commented 6 years ago

The icalendar python module has trouble parsing the icalendar file that evolution is trying to upload.

Can you try running the version from HEAD? I've changed Xandikos so it includes the actual error message from parsing.

tusj commented 6 years ago

Here you go, this is again from Evolution when creating an appointment:

Cannot create calendar object: Failed to put data: HTTP error code 412 (Precondition Failed):
Not a valid calendar file: RRULE UNTIL values must be specified in UTC when DTSTART is timezone-aware
jelmer commented 6 years ago

Thanks, that helps a lot. This appears to be related to a change in dateutil, which is used by the icalendar package that xandikos uses to parse icalendar files.

The relevant upstream change is https://github.com/dateutil/dateutil/pull/634

jelmer commented 6 years ago

Presumably this is actually a bug in how evolution writes its icalendar files; I'll see if there is anything we can do to allow files that are somewhat broken.

One temporary workaround is to install a version of dateutil before 2.7.1. I'm running 2.6.1 myself, which is why I haven't run into any issues with evolution so far.

tusj commented 6 years ago

I was running dateutil 2.7.3.

I have seen the href error pop up in the xandikos logs when setting up KOrganizer as well. It seems that some of my .ics files are invalid, according to icalendar.org. However, when parsing those files with python icalendar (using dateutil) I found no complaints. I did susbsitute dateutil with 2.6.1 with pip install python-dateutil==2.6.1 which did not resolve the href complaints upon synchronization with KOrganizer. Synchronization with Thunderbird and Evolution seems to work fine though.

Edit: I was unable to see any of my events in KOrganizer, but thought it was due to some error in KOrganizer itself. I can now confirm that I see no events here because the href error affects all my calendar files.

Edit: This also affects all my contacts, no contacts are displayed in KOrganizer.

jelmer commented 6 years ago

On Thu, Aug 09, 2018 at 04:14:54AM -0700, Sindre Føring Devik wrote:

I was running dateutil 2.7.3.

I have seen the href error pop up in the xandikos logs when setting up KOrganizer as well. It seems that some of my .ics files are invalid, according to icalendar.org. However, when parsing those files with python icalendar (using dateutil) I found no complaints. I did susbsitute dateutil with 2.6.1 with pip install python-dateutil==2.6.1 which did not resolve the href complaints upon synchronization with KOrganizer. Synchronization with Thunderbird and Evolution seems to work fine though.

The href complaints are unrelated, and harmless. Xandikos shouldn't trigger this warning for clients that send full URLs. I've filed #81 about this.

-- Jelmer Vernooij jelmer@jelmer.uk PGP Key: https://www.jelmer.uk/D729A457.asc

0x646f6d commented 6 years ago

Hi guys, when I was running a test installation in an lxc container (debian) I ran into the same error you were writing above. However, my other caldav clients work properly and I don't need to use evolution, so I decided to use it on my production server.

Now, a couple of days later, when I finished the production setup, it seemed that also evolution is able to create appointments successfully... I queried the package version of dateutil in the arch repo:

# pacman -Ss dateutil
community/python-dateutil 2.7.3-2 [Installiert]
#  python3 -c "import dateutil; print(dateutil.__version__)"
2.7.3

I'll be looking for further information on this when I find some spare time...

jelmer commented 5 years ago

FTR, upgrading to a new dateutil (>= 2.7.3) should fix this.

tusj commented 5 years ago

Doing some more testing, with dateutil == 2.7.5 and Evolution 3.30.4 gives:

Edit: This behaviour is also experienced on gnome-calendar, but that is to be expected, since I believe gnome-calendar uses the same backend as Evolution.

jelmer commented 5 years ago

Ah, that's a pity. I must have tried it with a configuration that did work. :(