fix(CalDAV): iTipBroker message generation and testing - #50843
Conversation
st3iny
left a comment
There was a problem hiding this comment.
The following case did not cause a reaction email being sent to the organizer:
- Organizer invites attendee (recurring, daily, 5 times).
- Attendee declines the second to last instance.
In general, no messages seem to get sent if an attendee accepts or declines a single instance.
Is this intended?
I don't think this has anything to do with this PR.
This should work just like any other scenario, I tested this on my end and the iTip message are being generated properly. Example,
This PR does not touch the Attendee portion of the iTipBroker, that is done in the parseEventForAttendee function and this only overloads the parseEventForOrganizer function which generates messages for organizer changes.
I had the same problem, this is most likely a issue with your DEV instance, when our server tests run they empty out the appdata_* folder, this is the place where the contents of a sent message is saved and if the "appdata_/mail/mail_user" folder is missing the send process fails. |
|
/backport to stable31 |
|
/backport to stable30 |
There was a problem hiding this comment.
Does not fix cancelling a single instance.
Consider two accounts: organizer and user.
- Organizer: Create recurring event, daily, 3 times and invite another user.
- User: Accept whole series.
- Organizer: Cancels an instance, e.g. the second one.
Expected: User will only see the second instance being cancelled.
Actual: The whole series is cancelled from user's POV.
I exported the events and was able to confirm that the organizer's event has a new instance with a cancelled state. The user's event however, does not contain a separate instance. Instead, the base event was cancelled.
Okay, having a look. Disregard the last message, I tested the wrong thing |
LMAO. So I found the issue... You've found another bug that I didn't know existed... So the iTipBroker is now generating proper messages for instances, but its not processing Cancellation instances properly... The method at fault... Sabre\VObject\ITip\Broker::processMessageCancel() As you can see it does not check the iTipMessage for a RECURRANCE-ID, it just applies the cancellation to every instance... |
9712d2a to
02205c3
Compare
How do I do this from the Calendar UI? |
|
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
fb71191 to
70d051f
Compare
DerDreschner
left a comment
There was a problem hiding this comment.
Alright, then I'll give it a go! 👍
|
@DerDreschner Thank you for testing this! I know it was a lot! But you have finally brought a years long PR to a close |
|
@SebastianKrupinski : Yeah, finally 🎉 Sorry for being a bit aggressive with reporting bugs. I just have to get used to test against a stable release before writing it down. 😅 |
|
/backport to stable33 |






Summary
Resolves: nextcloud/calendar#7057
Refactored iTip broker message generation to improve logic and RFC compatibility
Testing
How to test, open calendar app, and test the following
🔵 Single Event Operations
Basic Lifecycle
Attendee Management
🟣 Recurring Event Operations
Master Instance
Exception Instances
🟠 Partial Attendee Lists (EXDATE Logic)
Critical EXDATE Scenarios
🔴 Edge Cases
Organizer & Empty States
✅ Verification Per Test
For each test above, verify:
Message Method
Recipients
Message Content
Instance Selection
TODO
Checklist