Working with Evolution Mail and web calendar using RRULE fail because of X-EVOLUTION-ENDDATE in rrule

I am wondering if someone can help me shed some light on a X-EVOLUTION-ENDDATE property in a rrule that from what I can see was generated by Evolution Mail for an event.

I am using Evolution Mail and also have a web calendar that uses rrule as a string to parse recurring events. While I was using Evolution Mail there was a crash in the web app calendar because rrule could not understand X-EVOLUTION-ENDDATE property. RRULE;X-EVOLUTION-ENDDATE=20241223T140000Z:FREQ=WEEKLY;COUNT=51;BYDAY=MO;

Does anyone know anything about this property and why rrule.js does not like it? I tried creating a recurring event with Evo Mail and this time the rule is not present so I couldn’t recreate the issue, but I can only assume it will return.

Thanks for reading

It’s important to state what version of Evolution you have when asking
for help. See Help->About.

poc

Does anyone know anything about this property

Hi,

you are right, it’s created by the evolution(-data-server). The
parameter (of the RRULE property) is pre-caching when the RRULE ends,
to make it easier for the internal code. It’s calculated on demand,
when not being part of the property.

The definition of the RRULE property:

allows custom parameters, which are those starting with X-.

and why rrule.js does not like it?

That’s a question for the authors of the rrule.js. I never heard about
it myself, I’ve no idea where it comes from. A quick guess is that they
do not expect parameters on the RRULE property. They should fix their
code to conform to the RFC5545. I suggest you to report the
crash/problem to them.
Bye,
Milan

@poc will always post versions in the future and update this when I get to my laptop

@mcrha
Thank you so much for providing great information about this. I will definitely report this as issues in rrule github. Unfortunately the active dev isn’t doing much anymore or even replying actively. But since you’ve confirmed this is Evo and I can expect this to happen, at least I can modify my version of the rrule hopefully, to somewho ignore this. I hate their lib has full out throw error and no way for a soft crash causing any web app to halt.

I would be curious to read about how the parameter is pre-caching to make it easier on the internal code. IF you have any resource you can point me to, please share. If not no big deal.

Thanks again, and sorry for posting in
evolution-data-server->Issues->#529

Hi,
there’s no magic behind that. The parameter is added to know when the
series ends. Then, when something asks “give me events between X and
Y”, the code can check in a constant time whether the recurring event
belongs to the interval or not, instead of re-calculating the
recurrence boundaries on each search.

If you mean what precisely the code base does with that properly, then
grep the evolution-data-server and evolution code bases for the
“X-EVOLUTION-ENDDATE” string (quoted for clarity only, though they are
there as well, because it is a string constant).

Bye,
Milan

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.