Marking a task as done doesn't sync from Tine 2.0 server to phone
-
I'm using the latestest DAVDroid version (Playstore, payed) with a Tine 2.0 Community Edition (latest version).
CalDAV and CardDAV syncing apparently works fine both ways, automated and manually.
Except when I mark a task as done in the Tine 2.0 web UI: That task will still be marked as undone in the tasks app (I use OpenTasks).
Checking a task as done on the phone and syncing correctly results in the task being marked as done in the web UI.Debug info:
https://paste.fedoraproject.org/paste/bQgxvAlbUSoiQyqDUxeZ-Q#
-
In our tests, syncing tasks with
STATUS:COMPLETED
works as expected.Does this work with other clients? Maybe it's a Tine problem.
-
It works with CalDAV Sync (which has other unadressed issues).
I'd be glad to feed any further data required to resolve this, if you guide me how to retrieve them.
-
Can you provide a publicly accesible test account so that I can try?
-
@rfc2822 I can give you an account. Can I send you the credentials via chat or any other way?
-
Thanks for the test account, which I could use to reproduce the problem. When marking a task as completed in Tine, it sends an invalid VTODO:
BEGIN:VCALENDAR ... BEGIN:VTODO UID:9a702d11179f789746f83c4d67aeb2bfd3b6f511 ... !!! COMPLETED;TZID=Europe/Berlin:20171025T184600 !!! STATUS:COMPLETED ... END:VTODO END:VCALENDAR
ical4j (the iCal parser used by DAVdroid) can't parse this:
10-25 18:46:39.172 8278-8296/at.bitfire.davdroid:sync E/davdroid: [syncadapter.TasksSyncManager] Received invalid iCalendar, ignoring EXCEPTION at.bitfire.ical4android.InvalidCalendarException: Couldn't parse iCalendar resource at at.bitfire.ical4android.Task$Companion.fromReader(Task.kt:70) at at.bitfire.davdroid.syncadapter.TasksSyncManager.processVTodo(TasksSyncManager.kt:164) at at.bitfire.davdroid.syncadapter.TasksSyncManager.downloadRemote(TasksSyncManager.kt:128) at at.bitfire.davdroid.syncadapter.SyncManager.performSync(SyncManager.kt:155) at at.bitfire.davdroid.syncadapter.TasksSyncAdapterService$SyncAdapter.sync(TasksSyncAdapterService.kt:55) at at.bitfire.davdroid.syncadapter.SyncAdapterService$SyncAdapter.onPerformSync(SyncAdapterService.kt:85) at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:272) Caused by: net.fortuna.ical4j.data.ParserException: Error at line 28:Cannot set timezone for UTC properties at net.fortuna.ical4j.data.CalendarParserImpl.parse(CalendarParserImpl.java:158) at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:198) at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:178) at at.bitfire.ical4android.Task$Companion.fromReader(Task.kt:68) at at.bitfire.davdroid.syncadapter.TasksSyncManager.processVTodo(TasksSyncManager.kt:164) at at.bitfire.davdroid.syncadapter.TasksSyncManager.downloadRemote(TasksSyncManager.kt:128) at at.bitfire.davdroid.syncadapter.SyncManager.performSync(SyncManager.kt:155) at at.bitfire.davdroid.syncadapter.TasksSyncAdapterService$SyncAdapter.sync(TasksSyncAdapterService.kt:55) at at.bitfire.davdroid.syncadapter.SyncAdapterService$SyncAdapter.onPerformSync(SyncAdapterService.kt:85) at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:272) Caused by: java.lang.UnsupportedOperationException: Cannot set timezone for UTC properties at net.fortuna.ical4j.model.property.UtcProperty.setTimeZone(UtcProperty.java:95) at net.fortuna.ical4j.data.CalendarBuilder.updateTimeZone(CalendarBuilder.java:353) at net.fortuna.ical4j.data.CalendarBuilder.access$300(CalendarBuilder.java:68) at net.fortuna.ical4j.data.CalendarBuilder$ContentHandlerImpl.parameter(CalendarBuilder.java:278) at net.fortuna.ical4j.data.CalendarParserImpl$ParameterParser.parse(CalendarParserImpl.java:367)
because
COMPLETED
is defined as an UTC property:[https://tools.ietf.org/html/rfc5545#section-3.8.2.1]
Property Name: COMPLETED
Conformance: The property can be specified in a "VTODO" calendar component. The value MUST be specified as a date with UTC time.So:
- Can you please report this bug to Tine and, if possible, provide some reference/link here?
- The behavior shown by ical4j is quite strict, although relaxed parsing is possible. Maybe you could create an enhancement request for ical4j, so that this error can be ignored if relaxed parsing is enabled?
-
Reported to the Tine 2.0 tracker including backlink:
https://forge.tine20.org/view.php?id=13582