Skip to content

[Bug]: Recurring events incorrectly include SKIP=OMIT and break DAVx5 sync #805

Description

@chrilep

Bug

Bulwark creates recurring events with skip: "omit" by default.

This results in an iCalendar RRULE containing:

FREQ=YEARLY;WKST=MO;COUNT=100;INTERVAL=1;BYMONTH=8;BYMONTHDAY=22;SKIP=OMIT

DAVx5 4.5.14 cannot import this rule into the Android Calendar Provider and fails synchronization with:

java.lang.IllegalArgumentException: Invalid recurrence rule

Environment

  • Bulwark: latest beta container
  • Stalwart: 0.15.4
  • DAVx5: 4.5.14-ose
  • Android: 16
  • Device: Samsung Galaxy S22 Ultra

Reproduction

  1. Create a recurring yearly event in Bulwark.
  2. Use a normal date such as August 22.
  3. Set a recurrence count.
  4. Sync the calendar with DAVx5.
  5. DAVx5 fails when inserting the recurring event into the Android Calendar Provider.

Expected behavior

A normal Gregorian recurrence should not contain SKIP=OMIT unless skip semantics are actually required.

Expected:

FREQ=YEARLY;WKST=MO;COUNT=100;INTERVAL=1;BYMONTH=8;BYMONTHDAY=22

Actual behavior

Bulwark creates the recurrence with:

rscale: "gregorian"
skip: "omit"

The resulting CalDAV response contains SKIP=OMIT, which causes DAVx5/Android Calendar Provider to reject the recurrence rule.

Additional information

Deleting the problematic event and recreating it on the Android phone fixes DAVx5 synchronization.

The problematic event was originally created in Bulwark.

The issue appears to originate from Bulwark's recurrence rule construction, specifically the unconditional default:

skip: "omit"

skip should probably only be included when explicitly required.

DAVx5 error

java.lang.IllegalArgumentException:
Invalid recurrence rule:
FREQ=YEARLY;WKST=MO;COUNT=100;INTERVAL=1;BYMONTH=8;BYMONTHDAY=22;SKIP=OMIT

Metadata

Metadata

Assignees

No one assigned

    Labels

    Stalwart 0.15.xIssues related to this Stalwart versionStalwart 0.16.xIssues related to this Stalwart versionbugSomething isn't working

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions