Open Bug 2061861 Opened 10 days ago Updated 4 days ago

Accepting an invitation to a single occurrence before the sync loses the response

Categories

(Calendar :: General, defect)

defect

Tracking

(Not tracked)

UNCONFIRMED

People

(Reporter: ndo84bw, Unassigned)

References

(Depends on 1 open bug)

Details

An organizer can scope an invitation to one occurrence of a series: a REQUEST whose event carries a RECURRENCE-ID. If that arrives for a series Thunderbird has not synchronized yet, accepting it loses the response.

How it happens: the organizer creates a series and, a few minutes later, moves one occurrence because they noticed a clash. The invitation for that occurrence arrives before Thunderbird has synchronized the series, so the calendar holds nothing under that UID yet. Rare, but nothing unusual.

Measured against the test server in test_caldav_uidCollision.js, with the series on the server and nothing in the local cache:

  • processItipItem finds no local event and offers the create path
  • accepting fails with calIErrors.UID_CONFLICT (0x804a000b)
  • no REPLY is sent to the organizer
  • the event is not in the calendar afterward

Bug 1717401 added a recovery for exactly this failure, but it does not cover occurrences: resolveUidCollision() in calendar/base/modules/utils/calItipUtils.sys.mjs returns early when the invitation carries a recurrenceId, because looking the event up by UID would return the master rather than the occurrence. The found path solves the same problem with recurrenceInfo.getOccurrenceFor(rid), and the recovery could do the same: fetch the master, resolve the occurrence, apply the response there.

Depends on: 1717401
You need to log in before you can comment on or make changes to this bug.