sabre-io / Baikal

Baïkal is a Calendar+Contacts server
https://sabre.io/baikal/
GNU General Public License v3.0
2.44k stars 282 forks source link

Error 500 in in Apple Calendar.app when moving event set to repeat daily #1220

Open shoopdawoop opened 8 months ago

shoopdawoop commented 8 months ago

Baikal version: 0.9.4

Expected behaviour: Moving event with daily recurrence in Apple Calendar.app including all future events without issues

Current behaviour: Moving event with daily recurrence in Apple Calendar.app including all future events results in syncing error 500

Steps to reproduce:

A few days ago I started getting an error 500 in the Apple Calendar App (on macOS 13.6.1) when syncing to a Baikal server running v0.9.4 with sqlite on an Apache v2.4.6 with PHP v8.2.13 behind nginx v1.24.0 as a reverse (caching) proxy.

I realised that the problem occurs when adding an event set to repeat daily, then moving the event to another time of the day and applying this change to any future events.

After that, each sync will throw the error 500 and any further changes to the problematic (repeated) event will no longer sync, while other events seem to sync just fine and can indeed be moved as expected.

Only deleting the problematic (repeated) event seems to solve the issue.

Also, after deleting and re-adding the account in Calendar App, the original (unchanged) event shows up after the initial sync.

An sqlite3 PRAGMA integrity_check on the db.sqlite returns an "ok".

This is what the nginx error_log throws:

[Tue Nov 28 16:59:25.195028 2023] [proxy_fcgi:error] [pid 24473:tid 139747892586240] [client CLIENTIP:CLIENTPORT] AH01071: Got error 'PHP message: Sabre\\VObject\\Recur\\NoInstancesException: This recurrence rule does not generate any valid instances in /var/www/vhosts/domain/path/baikal/vendor/sabre/vobject/lib/Recur/EventIterator.php:192\nStack trace:\n#0 /var/www/vhosts/domain/path/baikal/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php(653): Sabre\\VObject\\Recur\\EventIterator->__construct()\n#1 /var/www/vhosts/domain/path/baikal/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php(591): Sabre\\CalDAV\\Backend\\PDO->getDenormalizedData()\n#2 /var/www/vhosts/domain/path/baikal/vendor/sabre/dav/lib/CalDAV/CalendarObject.php(103): Sabre\\CalDAV\\Backend\\PDO->updateCalendarObject()\n#3 /var/www/vhosts/domain/path/baikal/vendor/sabre/dav/lib/DAV/Server.php(1137): Sabre\\CalDAV\\CalendarObject->put()\n#4 /var/www/vhosts/domain/path/baikal/vendor/sabre/dav/lib/DAV/CorePlugin.php(492): Sabre\\DAV\\Server->updateFile()\n#5 /var/www/vhosts/domain/path/baikal/vendor/sabre/ev...'

I have several events set to be repeated monthly and yearly without issues. For now I simply avoid setting daily repeated tasks.

Let me know if I can provide more debugging info.