Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Broker::parseEventForOrganizer copies DTSTAMP from $eventInfo that causes broken scheduling #462

Closed
vimmerru opened this issue Jun 28, 2019 · 1 comment

Comments

@vimmerru
Copy link

vimmerru commented Jun 28, 2019

Hi,

We experience that iTip scheduling for event updates is completely broken if we use modern Apple Calendar (11+) or NextCloud Web UI to create/update message, but still works if Apple Calendar 10, Mozilla Lighting is used. See nextcloud/calendar#1280 for details.

In our current vision the issue is caused by vobject codebase. Here are results of our investigation:

  1. When Apple Mail 11 creates an event and updates it it sends PUT request with ics file to /remote.php/dav/calendars/{user}/{cal}/{cal-component-guid}.ics all according to specification and similar to Apple Mail 10 and Mozilla

  2. The important difference is that Mozilla increases SEQUENCE, Apple Mail 10 increases DTSTAMP, but Apple Mail 11 increases LAST-MODIFIED only.

This behaviour seems more less according to specification as DTSTAMP is more about iTip than CUA/Cloud interaction.

In the case of an iCalendar object that specifies a
"METHOD" property, this property specifies the date and time that
the instance of the iCalendar object was created.  In the case of
an iCalendar object that doesn't specify a "METHOD" property, this
property specifies the date and time that the information
associated with the calendar component was last revised in the
calendar store.

In the case of an iCalendar object that doesn't specify a "METHOD"
property, this property is equivalent to the "LAST-MODIFIED"
property.

See https://tools.ietf.org/html/rfc5545#section-3.8.7.2

  1. After this Sabre sends scheduling request to recipients by producing and attaching of very similar ics with added METHOD: Request and PRODID changed to Sabre, but according to the specification DTSTAMP should be changed to the moment of iTip message creation (NOW).

Missed DTSTAMP and SEQUENCE updates causes invalid scheduling in the most of popular Calendar clients including Mozilla, Outlook, Google, Apple Mail that makes this issues real blocker for our use cases.

  1. Invalid iTip messages are produced by parseEventForOrganizer function in
    https://github.com/sabre-io/vobject/blob/master/lib/ITip/Broker.php

The fix is trivial just change DTSTAMP to NOW for all produced iTip messages.

@vimmerru vimmerru changed the title parseEventForOrganizer produces incorrect iTip messages if no LAST-MODIFIED property in $eventInfo vobject Broker::parseEventForOrganizer produces incorrect iTip messages if no LAST-MODIFIED property in $eventInfo Jun 28, 2019
@vimmerru vimmerru changed the title vobject Broker::parseEventForOrganizer produces incorrect iTip messages if no LAST-MODIFIED property in $eventInfo Broker::parseEventForOrganizer produces incorrect iTip messages if no LAST-MODIFIED property in $eventInfo Jun 28, 2019
@vimmerru vimmerru changed the title Broker::parseEventForOrganizer produces incorrect iTip messages if no LAST-MODIFIED property in $eventInfo Broker::parseEventForOrganizer copies DTSTAMP from $eventInfo that causes broken scheduling Jul 1, 2019
@vimmerru
Copy link
Author

Seems the fix was merged. Should we close this?

@staabm staabm closed this as completed Jul 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants