hi

we experimented a lot since the daylight saving time with sogo and calendar clients that display the events in the wrong timezone. we finally narrowed down the problem and solved it through a rewrite rule in the apache config:

    RequestHeader unset Accept-Encoding

    AddOutputFilterByType SUBSTITUTE text/calendar text/xml
Substitute 's|^RRULE:([A-Z].+[A-Za-z0-9]);?FREQ=([A-Za-z]*);?(.*)$|RRULE:FREQ=$2;$1$3|'

the problem was that iCal expects the reccuring events, standard and daylight definitions to start with the attribute FREQ, like this:

RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU

as in RFC2445 for iCalendar Core Object Spec, it is not absolutely specified that the FREQ attribute must be the first one, but it can be inferred I think.
http://www.ietf.org/rfc/rfc2445.txt on page 40:
....
   Formal Definition: The value type is defined by the following
   notation:

     recur      = "FREQ"=freq *(

                ; either UNTIL or COUNT may appear in a 'recur',
                ; but UNTIL and COUNT MUST NOT occur in the same 'recur'

                ( ";" "UNTIL" "=" enddate ) /
                ( ";" "COUNT" "=" 1*DIGIT ) /

                ; the rest of these keywords are optional,
                ; but MUST NOT occur more than once

                ( ";" "INTERVAL" "=" 1*DIGIT )          /
                ( ";" "BYSECOND" "=" byseclist )        /
                ( ";" "BYMINUTE" "=" byminlist )        /
                ( ";" "BYHOUR" "=" byhrlist )           /
                ( ";" "BYDAY" "=" bywdaylist )          /
                ( ";" "BYMONTHDAY" "=" bymodaylist )    /
                ( ";" "BYYEARDAY" "=" byyrdaylist )     /
                ( ";" "BYWEEKNO" "=" bywknolist )       /
                ( ";" "BYMONTH" "=" bymolist )          /
                ( ";" "BYSETPOS" "=" bysplist )         /
                ( ";" "WKST" "=" weekday )              /
                ( ";" x-name "=" text )
                )
....

so my suggestion to the developers would be to set the RRULE attributes in the right order in the sogo core. iCal would then work correctly without the need of a hack, and so would the other clients. of course, we could also send a suggestion to apple to fix their code, but to what end :D

greetings
hugo.-
--
[email protected]
https://inverse.ca/sogo/lists

Reply via email to