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#


  • developer

    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.


  • developer

    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?


  • developer

    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:

    1. Can you please report this bug to Tine and, if possible, provide some reference/link here?
    2. 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


Log in to reply
 

Looks like your connection to Bitfire App Forums was lost, please wait while we try to reconnect.