DAVdroid doesn't understand America/Montevideo VTIMEZONE provided by Horde



  • Excellent. I think this other gist is old, but there is already listing android timezone ids and ‘America/Montevideo’ seems to be there.


  • developer

    It seems like ical4j can’t parse the VTIMEZONE given by Horde. The one bundled with ical4j works.

    Do you know if there’s something like a VTIMEZONE validator out there? Do you think it’s possible that the Horde VTIMEZONE is incorrect or that the problem is caused by ical4j and for what reason?

    VTIMEZONE given by Horde (can’t be parsed by ical4j 1.0.6):

    BEGIN:VTIMEZONE
    TZID:America/Montevideo
    BEGIN:STANDARD
    DTSTART:18980628T000000
    TZOFFSETFROM:-0344
    TZOFFSETTO:-0344
    TZNAME:MMT
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0330
    DTSTART:19231002T000000
    TZNAME:UYHST
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0330
    TZNAME:UY-T
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0330
    TZNAME:UYHST
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0330
    DTSTART:19331029T000000
    RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10;UNTIL=19351027T033000Z
    TZNAME:UYHST
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0330
    DTSTART:19340331T233000
    RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=25,26,27,28,29,30,31;BYDAY=1SA;UNTIL
     =19360330T030000Z
    TZNAME:UY-T
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0330
    DTSTART:19361101T000000
    TZNAME:UYHST
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0330
    DTSTART:19370328T000000
    RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3;UNTIL=19410330T033000Z
    TZNAME:UY-T
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0330
    DTSTART:19371031T000000
    RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10;UNTIL=19401027T033000Z
    TZNAME:UYHST
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0330
    DTSTART:19410801T000000
    TZNAME:UYHST
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0330
    DTSTART:19420101T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0230
    DTSTART:19421214T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0300
    DTSTART:19420101T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:19421214T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:19430314T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:19590524T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:19591115T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:19600117T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:19600306T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:19650404T000000
    RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU;UNTIL=19670402T030000Z
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:19650926T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0300
    TZNAME:UY-T
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0300
    TZNAME:UYHST
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0300
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:19720424T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:19720815T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0300
    DTSTART:19740310T000000
    TZNAME:UYHST
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:19741222T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:19761001T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:19771204T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:19780401T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:19791001T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:19800501T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:19871214T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:19880314T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:19881211T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:19890312T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:19891029T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:19900304T000000
    RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=1SU;UNTIL=19920301T030000Z
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:19901021T000000
    RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=21,22,23,24,25,26,27;BYDAY=1SU;UNTI
     L=19911027T030000Z
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0200
    DTSTART:19921018T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:19930228T000000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:20040919T000000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:20050327T020000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:20051009T020000
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:20060312T020000
    TZNAME:UY-T
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    DTSTART:20061001T020000
    RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
    TZNAME:UYST
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    DTSTART:20070311T020000
    RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=8,9,10,11,12,13,14;BYDAY=1SU
    TZNAME:UY-T
    END:STANDARD
    END:VTIMEZONE
    

    VTIMEZONE bundled by ical4j 1.0.6:

    BEGIN:VTIMEZONE
    TZID:America/Montevideo
    TZURL:http://tzurl.org/zoneinfo/America/Montevideo
    X-LIC-LOCATION:America/Montevideo
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    TZNAME:UYST
    DTSTART:20061001T020000
    RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
    X-RADICALE-NAME:America/Montevideo
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    TZNAME:UYT
    DTSTART:20070311T020000
    RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
    X-RADICALE-NAME:America/Montevideo
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-034444
    TZOFFSETTO:-034444
    TZNAME:MMT
    DTSTART:18980628T000000
    RDATE:18980628T000000
    X-RADICALE-NAME:America/Montevideo
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-034444
    TZOFFSETTO:-0330
    TZNAME:UYT
    DTSTART:19200501T000000
    RDATE:19200501T000000
    X-RADICALE-NAME:America/Montevideo
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0300
    TZNAME:UYHST
    DTSTART:19231002T000000
    RDATE:19231002T000000
    RDATE:19241001T000000
    RDATE:19251001T000000
    RDATE:19331029T000000
    RDATE:19341028T000000
    RDATE:19351027T000000
    RDATE:19361101T000000
    RDATE:19371031T000000
    RDATE:19381030T000000
    RDATE:19391029T000000
    RDATE:19401027T000000
    RDATE:19410801T000000
    X-RADICALE-NAME:America/Montevideo
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0330
    TZNAME:UYT
    DTSTART:19240401T000000
    RDATE:19240401T000000
    RDATE:19250401T000000
    RDATE:19260401T000000
    RDATE:19340401T000000
    RDATE:19350331T000000
    RDATE:19360329T000000
    RDATE:19370328T000000
    RDATE:19380327T000000
    RDATE:19390326T000000
    RDATE:19400331T000000
    RDATE:19410330T000000
    RDATE:19420101T000000
    X-RADICALE-NAME:America/Montevideo
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0200
    TZNAME:UYST
    DTSTART:19421214T000000
    RDATE:19421214T000000
    X-RADICALE-NAME:America/Montevideo
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0200
    TZOFFSETTO:-0300
    TZNAME:UYT
    DTSTART:19430314T000000
    RDATE:19430314T000000
    RDATE:19591115T000000
    RDATE:19600306T000000
    RDATE:19650926T000000
    RDATE:19661031T000000
    RDATE:19671031T000000
    RDATE:19720815T000000
    RDATE:19761001T000000
    RDATE:19780401T000000
    RDATE:19800501T000000
    RDATE:19880314T000000
    RDATE:19890312T000000
    RDATE:19900304T000000
    RDATE:19910303T000000
    RDATE:19920301T000000
    RDATE:19930228T000000
    RDATE:20050327T020000
    RDATE:20060312T020000
    X-RADICALE-NAME:America/Montevideo
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0200
    TZNAME:UYST
    DTSTART:19590524T000000
    RDATE:19590524T000000
    RDATE:19600117T000000
    RDATE:19650404T000000
    RDATE:19660403T000000
    RDATE:19670402T000000
    RDATE:19720424T000000
    RDATE:19771204T000000
    RDATE:19791001T000000
    RDATE:19871214T000000
    RDATE:19881211T000000
    RDATE:19891029T000000
    RDATE:19901021T000000
    RDATE:19911027T000000
    RDATE:19921018T000000
    RDATE:20040919T000000
    RDATE:20051009T020000
    X-RADICALE-NAME:America/Montevideo
    END:DAYLIGHT
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0300
    TZOFFSETTO:-0230
    TZNAME:UYHST
    DTSTART:19680527T000000
    RDATE:19680527T000000
    RDATE:19690527T000000
    RDATE:19700527T000000
    RDATE:19740310T000000
    X-RADICALE-NAME:America/Montevideo
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:-0230
    TZOFFSETTO:-0300
    TZNAME:UYT
    DTSTART:19681202T000000
    RDATE:19681202T000000
    RDATE:19691202T000000
    RDATE:19701202T000000
    X-RADICALE-NAME:America/Montevideo
    END:STANDARD
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-0230
    TZOFFSETTO:-0200
    TZNAME:UYST
    DTSTART:19741222T000000
    RDATE:19741222T000000
    X-RADICALE-NAME:America/Montevideo
    END:DAYLIGHT
    X-RADICALE-NAME:America/Montevideo
    END:VTIMEZONE
    

  • developer

    The problem are the time zone components which don’t have DTSTART, TZOFFSETFROM and TZOFFSETTO, for instance:

    BEGIN:STANDARD
    TZOFFSETFROM:-0330
    TZOFFSETTO:-0330
    TZNAME:UY-T
    END:STANDARD
    

    According to RFC 5545 3.6.5, a standardc time zone component must have a DTSTART value. Such time zone component without DTSTART wouldn’t make any sense because you can’t know when this UY-T time with-0330 offset is defined.

    ical4j expects exactly this (a DTSTART) and throws an exception.

    So, the VTIMEZONE provided by Horde is invalid. I don’t know whether it’s generated by Horde or uploaded by another client and just taken over by Horde.


  • developer

    Can you please try to contact Horde people and report this issue?



  • I created this bug report. If you like I could post any resolution there on this one.


  • developer

    Thanks - could you please add a link to this issue to the Horde bug report?

    I’ll close the issue here.


  • developer

    Unfortunately, it seems that the issue was not reported to Horde, so it occured again. And it will occur again and again…


  • developer



  • Hi,

    hmmm - you will not like that but … thunderbird and other clients understand the way Horde communicates with them. Wouldn’t it be possible to make davdroid less vulnerable for nonconformant communication?

    regards


  • developer

    @daniu said:

    hmmm - you will not like that but … thunderbird and other clients understand the way Horde communicates with them.

    I guess they ignore the VTIMEZONE. Time to create some bug reports (or better yet, patches) if you want to support these projects 😉

    Wouldn’t it be possible to make davdroid less vulnerable for nonconformant communication?

    I don’t know how this should be possible. Do you mean ical4j (the iCalendar library used by DAVdroid) should interpret corrupt data randomly?

    But of course, if you have specific suggestions, please let me (or the author of ical4j) know.



  • Hi,

    of course not randomly. How does thunderbird interpret it? Obviously in a way nobody bothers - so the user does not even realize that anything is wrong. To be honest: I don’t know what VTIMEZONE is for and what it does but I do know that thunderbird interprets Horde’s communication so that the entries are synced and look correct (to me). (I assume that the protocol is supposed to work even if you sync with calenders with many different timezones - that is however a really rare usecase …) I knew that you would not like it (and I told you) but the point is still: thunderbird can sync with Horde, Davdroid cannot …

    Another point: in Horde bugtracker there is a solution for the problem:
    “After updating tzdata package to tzdata-2015f this problem has disappeared”

    I don’t have a glue who can apply this change and what that person has to do. Maybe I can solve the issue myself?

    regards


  • developer

    @daniu said:

    of course not randomly. How does thunderbird interpret it?

    I guess that it doesn’t at all, or it doesn’t right, which results in bugs like this: imported outlook event ignoring DAYLIGHT in VTIMEZONE.

    Obviously in a way nobody bothers - so the user does not even realize that anything is wrong.

    Exactly: it interprets data randomly (“nobody bothers”) where strict processing and error handling would be required. This results in non-defined event times, and in a bad case, you’ll come an hour late to your important meeting.

    To be honest: I don’t know what VTIMEZONE is for and what it does but I do know that thunderbird interprets Horde’s communication so that the entries are synced and look correct (to me). (I assume that the protocol is supposed to work even if you sync with calenders with many different timezones - that is however a really rare usecase …)

    It’s not that rare (business people who travel or schedule remote meetings between time zones etc.), and more important: for you, it’s only one this one time zone that has to work, but for other people there are others. So in sum, all time zones have to work.

    I don’t think ignoring VTIMEZONE is a good idea, and it also leads to various problems with servers (as far as I remember, DAVdroid did this in its earliest versions).

    In my experience, time zones and VTIMEZONE are a very complex topic and one of the biggest challenges in CalDAV (ok, there are recurring events, too ;)). You can’t just ignore them.

    I knew that you would not like it (and I told you) but the point is still: thunderbird can sync with Horde, Davdroid cannot …

    So please report this to Thunderbird: it synchronizes an event that it shouldn’t synchronize.

    Another point: in Horde bugtracker there is a solution for the problem:
    “After updating tzdata package to tzdata-2015f this problem has disappeared”

    I don’t have a glue who can apply this change and what that person has to do. Maybe I can solve the issue myself?

    Yes, please use the latest Horde version which uses the tzdata-2015 time zone version. If there’s no release yet, use bleeding edge.



  • Hi,

    OK OK … probably I am not the only one who cannot really do much about his Horde installation (because it is hosted by some provider) - therefore the wish to do what would help even it is not the right way. Fortunately I got a good provider and they updated the package mentioned in the error report already (udmedia.de btw).

    Problem solved …

    regards