Accepting an invitation to a single occurrence before the sync loses the response
Categories
(Calendar :: General, defect)
Tracking
(Not tracked)
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:
processItipItemfinds 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.
Description
•