server
server copied to clipboard
Webcal cache: fails with bad DTEND date
Steps to reproduce
- My google .ics feed has some birthday reminders with illegal end dates (no idea how that happened in the first place, probably a google bug or caused by whatever software originally produced those entries)
- that value looks like
DTEND;VALUE=DATE:18991230 - CalDAV import will partially fail with
SQLSTATE[22003]: Numeric value out of range: 1264 Out of range value for column 'lastoccurence' at row 1 at <<closure>>
Expected behaviour
- handle bogus dates in a controlled way
- proposed change in CalDavBackend:getDenormalizedData (end of
if ($componentType === 'VEVENT' && $component->DTSTART) {block):
if ($lastOccurrence < 0) {
$maxDate = new DateTime(self::MAX_DATE);
$lastOccurrence = $maxDate->getTimestamp();
}
Actual behaviour
- the import failure might get unnoticed if the log is not checked since the import errors message in the main UI hides itself after some seconds and the other entries appear to be inserted correctly
- as a consequence, subsequent auto refreshes of that calendar appear to be not working at all, i.e. not even the partially imported events get synch-ed or new events from the .ics feed get pulled in
cc @nextcloud/calendar
@arminus How did you import that calendar?
The CalDAV server should reject anything that's not within 1970-01-01 and 2038-01-19.
@georgehrke When first date being allowed is in 1970 ... How do you enter a birthday in year 1926?
IMHO this limit makes no sense,
cu, diri
IMHO this limit makes no sense,
We didn’t just set this limit for fun ;) Many clients (including some Android phones) don't support dates before the start of unixtime.
Furthermore, we also use unixtime internally (e.g. in the database for faster querying.
Our internal birthday calendar mitigates that problem, so use that one instead, if you want a birthday calendar.
I don't really care about a birthday calendar. Fact is, my google ics feed has those dates for some reason and it won't import due to that issue - which is really blocking in my case.
What's the risk of applying the patch/workaround I suggested? This doesn't set the date to something illegal which would cause issues downstream after all I would think?
Is this Issue still valid? If not, please close this issue. Thanks! :)
Unless someone has fixed this, the issue is still valid - I need to merge my change in for every update I do, otherwise my google ics feed doesn't load.
cc @nextcloud/calendar is this something we should/can fix?
This issue has been automatically marked as stale because it has not had recent activity and seems to be missing some essential information. It will be closed if no further activity occurs. Thank you for your contributions.
Redacted ics
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Sabre//Sabre VObject 4.3.5//EN
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Europe/Vienna
X-LIC-LOCATION:Europe/Vienna
BEGIN:STANDARD
DTSTART:18930401T000000
RDATE:18930401T000000
TZNAME:CEST
TZOFFSETFROM:+010521
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19161001T010000
RDATE:19161001T010000
RDATE:19200913T030000
RDATE:19421102T030000
RDATE:19431004T030000
RDATE:19441002T030000
RDATE:19450412T030000
RDATE:19800928T000000
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19170917T030000
RRULE:FREQ=YEARLY;UNTIL=19180916T010000Z;BYMONTH=9;BYDAY=3MO
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19200101T000000
RDATE:19200101T000000
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19460101T000000
RDATE:19460101T000000
RDATE:19810101T000000
TZNAME:CET
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19461006T030000
RRULE:FREQ=YEARLY;UNTIL=19481003T010000Z;BYMONTH=10;BYDAY=1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19810927T030000
RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19961027T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19160430T230000
RDATE:19160430T230000
RDATE:19200405T020000
RDATE:19400401T020000
RDATE:19430329T020000
RDATE:19440403T020000
RDATE:19450402T020000
RDATE:19460414T020000
RDATE:19470406T020000
RDATE:19480418T020000
RDATE:19800406T000000
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19170416T020000
RRULE:FREQ=YEARLY;UNTIL=19180415T010000Z;BYMONTH=4;BYDAY=3MO
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19810329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Europe/Zurich
X-LIC-LOCATION:Europe/Zurich
BEGIN:STANDARD
DTSTART:18530716T000000
RDATE:18530716T000000
TZNAME:BMT
TZOFFSETFROM:+003408
TZOFFSETTO:+002946
END:STANDARD
BEGIN:STANDARD
DTSTART:18940601T000000
RDATE:18940601T000000
TZNAME:CEST
TZOFFSETFROM:+002946
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19411006T020000
RRULE:FREQ=YEARLY;UNTIL=19421005T000000Z;BYMONTH=10;BYDAY=1MO
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19810101T000000
RDATE:19810101T000000
TZNAME:CET
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19810927T030000
RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19961027T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19410505T010000
RRULE:FREQ=YEARLY;UNTIL=19420504T000000Z;BYMONTH=5;BYDAY=1MO
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19810329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Europe/Paris
X-LIC-LOCATION:Europe/Paris
BEGIN:STANDARD
DTSTART:18910315T000100
RDATE:18910315T000100
TZNAME:PMT
TZOFFSETFROM:+000921
TZOFFSETTO:+000921
END:STANDARD
BEGIN:STANDARD
DTSTART:19110311T000100
RDATE:19110311T000100
TZNAME:WEST
TZOFFSETFROM:+000921
TZOFFSETTO:+0000
END:STANDARD
BEGIN:STANDARD
DTSTART:19161002T000000
RRULE:FREQ=YEARLY;UNTIL=19191005T230000Z;BYMONTH=10;BYMONTHDAY=2,3,4,5,6,7,
8;BYDAY=MO
TZNAME:WET
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:STANDARD
DTSTART:19201024T000000
RDATE:19201024T000000
RDATE:19211026T000000
RDATE:19391119T000000
TZNAME:WET
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:STANDARD
DTSTART:19221008T000000
RRULE:FREQ=YEARLY;UNTIL=19381001T230000Z;BYMONTH=10;BYMONTHDAY=2,3,4,5,6,7,
8;BYDAY=SU
TZNAME:WET
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
END:STANDARD
BEGIN:STANDARD
DTSTART:19421102T030000
RDATE:19421102T030000
RDATE:19431004T030000
RDATE:19450916T030000
RDATE:19760926T010000
RDATE:19770925T030000
RDATE:19781001T030000
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19770101T000000
RDATE:19770101T000000
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19790930T030000
RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19961027T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19160614T230000
RDATE:19160614T230000
RDATE:19170324T230000
RDATE:19180309T230000
RDATE:19190301T230000
RDATE:19200214T230000
RDATE:19210314T230000
RDATE:19220325T230000
RDATE:19230526T230000
RDATE:19240329T230000
RDATE:19250404T230000
RDATE:19260417T230000
RDATE:19270409T230000
RDATE:19280414T230000
RDATE:19290420T230000
RDATE:19300412T230000
RDATE:19310418T230000
RDATE:19320402T230000
RDATE:19330325T230000
RDATE:19340407T230000
RDATE:19350330T230000
RDATE:19360418T230000
RDATE:19370403T230000
RDATE:19380326T230000
RDATE:19390415T230000
RDATE:19400225T020000
TZNAME:WEST
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19400614T230000
RDATE:19400614T230000
RDATE:19430329T020000
RDATE:19440403T020000
RDATE:19760328T010000
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19440825T000000
RDATE:19440825T000000
TZNAME:WEMT
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19441008T010000
RDATE:19441008T010000
TZNAME:WEST
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19450402T020000
RDATE:19450402T020000
TZNAME:WEMT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19770403T020000
RRULE:FREQ=YEARLY;UNTIL=19800406T010000Z;BYMONTH=4;BYDAY=1SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19810329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Etc/GMT-2
X-LIC-LOCATION:Etc/GMT-2
BEGIN:STANDARD
DTSTART:18000101T020000
RDATE:18000101T020000
TZNAME:+02
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:GMT+0200
X-LIC-LOCATION:GMT+0200
BEGIN:STANDARD
DTSTART:18000101T020000
RDATE:18000101T020000
TZNAME:+02
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Europe/Rome
X-LIC-LOCATION:Europe/Rome
BEGIN:STANDARD
DTSTART:18660922T000000
RDATE:18660922T000000
TZNAME:RMT
TZOFFSETFROM:+004956
TZOFFSETTO:+004956
END:STANDARD
BEGIN:STANDARD
DTSTART:18931031T234956
RDATE:18931031T234956
TZNAME:CEST
TZOFFSETFROM:+004956
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19160930T235959
RRULE:FREQ=YEARLY;UNTIL=19170930T215959Z;BYMONTH=9
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19181006T235959
RDATE:19181006T235959
RDATE:19191004T235959
RDATE:19200918T235959
RDATE:19421102T030000
RDATE:19431004T030000
RDATE:19440917T030000
RDATE:19450915T010000
RDATE:19461006T030000
RDATE:19471005T010000
RDATE:19481003T030000
RDATE:19660924T235959
RDATE:19700927T010000
RDATE:19710926T010000
RDATE:19721001T010000
RDATE:19781001T010000
RDATE:19790930T010000
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19670924T010000
RRULE:FREQ=YEARLY;UNTIL=19690927T230000Z;BYMONTH=9;BYDAY=4SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19730930T010000
RRULE:FREQ=YEARLY;UNTIL=19740928T230000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19750928T010000
RRULE:FREQ=YEARLY;UNTIL=19770924T230000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19800101T000000
RDATE:19800101T000000
TZNAME:CET
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19800928T030000
RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19961027T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19160603T235959
RDATE:19160603T235959
RDATE:19170331T235959
RDATE:19180309T235959
RDATE:19190301T235959
RDATE:19200320T235959
RDATE:19400614T235959
RDATE:19430329T020000
RDATE:19440403T020000
RDATE:19450402T020000
RDATE:19460317T020000
RDATE:19470316T000000
RDATE:19480229T020000
RDATE:19690601T000000
RDATE:19700531T000000
RDATE:19730603T000000
RDATE:19740526T000000
RDATE:19750601T000000
RDATE:19760530T000000
RDATE:19800406T020000
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19430910T000000
RDATE:19430910T000000
RDATE:19440604T000000
TZNAME:CEST
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19660522T000000
RRULE:FREQ=YEARLY;UNTIL=19680525T230000Z;BYMONTH=5;BYDAY=4SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19710523T000000
RRULE:FREQ=YEARLY;UNTIL=19720527T230000Z;BYMONTH=5;BYDAY=4SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19770522T000000
RRULE:FREQ=YEARLY;UNTIL=19790526T230000Z;BYMONTH=5;BYDAY=4SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19810329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:GMT+0100
X-LIC-LOCATION:GMT+0100
BEGIN:STANDARD
DTSTART:18000101T010000
RDATE:18000101T010000
TZNAME:+01
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Europe/Berlin
X-LIC-LOCATION:Europe/Berlin
BEGIN:STANDARD
DTSTART:18930401T000000
RDATE:18930401T000000
TZNAME:CEST
TZOFFSETFROM:+005328
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19161001T010000
RDATE:19161001T010000
RDATE:19421102T030000
RDATE:19431004T030000
RDATE:19441002T030000
RDATE:19451118T030000
RDATE:19461007T030000
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19170917T030000
RRULE:FREQ=YEARLY;UNTIL=19180916T010000Z;BYMONTH=9;BYDAY=3MO
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19460101T000000
RDATE:19460101T000000
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19471005T030000
RRULE:FREQ=YEARLY;UNTIL=19491002T010000Z;BYMONTH=10;BYDAY=1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19800101T000000
RDATE:19800101T000000
TZNAME:CET
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19800928T030000
RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19961027T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19160430T230000
RDATE:19160430T230000
RDATE:19400401T020000
RDATE:19430329T020000
RDATE:19460414T020000
RDATE:19470406T030000
RDATE:19480418T020000
RDATE:19490410T020000
RDATE:19800406T020000
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19170416T020000
RRULE:FREQ=YEARLY;UNTIL=19180415T010000Z;BYMONTH=4;BYDAY=3MO
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19440403T020000
RRULE:FREQ=YEARLY;UNTIL=19450402T010000Z;BYMONTH=4;BYDAY=1MO
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19450524T020000
RDATE:19450524T020000
RDATE:19470511T030000
TZNAME:CEMT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19450924T030000
RDATE:19450924T030000
RDATE:19470629T030000
TZNAME:CEST
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19810329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Europe/Oslo
X-LIC-LOCATION:Europe/Oslo
BEGIN:STANDARD
DTSTART:18950101T000000
RDATE:18950101T000000
TZNAME:CEST
TZOFFSETFROM:+0043
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19160930T000000
RDATE:19160930T000000
RDATE:19421102T030000
RDATE:19431004T030000
RDATE:19441002T030000
RDATE:19451001T030000
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19590920T030000
RRULE:FREQ=YEARLY;UNTIL=19650919T010000Z;BYMONTH=9;BYDAY=3SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19800101T000000
RDATE:19800101T000000
TZNAME:CET
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19800928T030000
RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19961027T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19160522T010000
RDATE:19160522T010000
RDATE:19400810T230000
RDATE:19430329T020000
RDATE:19440403T020000
RDATE:19450402T020000
RDATE:19650425T010000
RDATE:19800406T020000
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19590315T020000
RRULE:FREQ=YEARLY;UNTIL=19640315T010000Z;BYMONTH=3;BYDAY=3SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19810329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Europe/Stockholm
X-LIC-LOCATION:Europe/Stockholm
BEGIN:STANDARD
DTSTART:18790101T000000
RDATE:18790101T000000
TZNAME:SET
TZOFFSETFROM:+011212
TZOFFSETTO:+010014
END:STANDARD
BEGIN:STANDARD
DTSTART:19000101T000000
RDATE:19000101T000000
RDATE:19800101T000000
TZNAME:CET
TZOFFSETFROM:+010014
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19161001T010000
RDATE:19161001T010000
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19800928T030000
RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYMONTH=9;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:STANDARD
DTSTART:19961027T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19160514T230000
RDATE:19160514T230000
RDATE:19800406T020000
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19810329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Asia/Jerusalem
X-LIC-LOCATION:Asia/Jerusalem
BEGIN:STANDARD
DTSTART:18800101T000000
RDATE:18800101T000000
TZNAME:JMT
TZOFFSETFROM:+022054
TZOFFSETTO:+022040
END:STANDARD
BEGIN:STANDARD
DTSTART:19180101T000000
RDATE:19180101T000000
TZNAME:IST
TZOFFSETFROM:+022040
TZOFFSETTO:+0200
END:STANDARD
BEGIN:STANDARD
DTSTART:19421101T000000
RRULE:FREQ=YEARLY;UNTIL=19441031T210000Z;BYMONTH=11
TZNAME:IST
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
END:STANDARD
BEGIN:STANDARD
DTSTART:19451101T020000
RDATE:19451101T020000
RDATE:19461101T000000
RDATE:19500915T030000
RDATE:19511111T030000
RDATE:19521019T030000
RDATE:19530913T030000
RDATE:19540912T000000
RDATE:19550911T000000
RDATE:19560930T030000
RDATE:19570922T000000
RDATE:19741013T000000
RDATE:19750831T000000
RDATE:19800913T010000
RDATE:19840825T010000
RDATE:19850915T000000
RDATE:19860907T000000
RDATE:19870913T000000
RDATE:19880904T000000
RDATE:19890903T000000
RDATE:19900826T000000
RDATE:19910901T000000
RDATE:19920906T000000
RDATE:19930905T000000
RDATE:19940828T000000
RDATE:19950903T000000
RDATE:19960916T000000
RDATE:19970914T000000
RDATE:19980906T000000
RDATE:19990903T020000
RDATE:20001006T010000
RDATE:20010924T010000
RDATE:20021007T010000
RDATE:20031003T010000
RDATE:20040922T010000
RDATE:20051009T020000
RDATE:20061001T020000
RDATE:20070916T020000
RDATE:20081005T020000
RDATE:20090927T020000
RDATE:20100912T020000
RDATE:20111002T020000
RDATE:20120923T020000
TZNAME:IST
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
END:STANDARD
BEGIN:STANDARD
DTSTART:19481101T020000
RRULE:FREQ=YEARLY;UNTIL=19491031T230000Z;BYMONTH=11
TZNAME:IST
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
END:STANDARD
BEGIN:STANDARD
DTSTART:20131027T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:IST
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19400601T000000
RDATE:19400601T000000
RDATE:19430401T020000
RDATE:19440401T000000
RDATE:19450416T000000
RDATE:19460416T020000
RDATE:19490501T000000
RDATE:19500416T000000
RDATE:19510401T000000
RDATE:19520420T020000
RDATE:19530412T020000
RDATE:19540613T000000
RDATE:19550611T020000
RDATE:19560603T000000
RDATE:19570429T020000
RDATE:19740707T000000
RDATE:19750420T000000
RDATE:19800802T000000
RDATE:19840505T000000
RDATE:19850414T000000
RDATE:19860518T000000
RDATE:19870415T000000
RDATE:19880410T000000
RDATE:19890430T000000
RDATE:19900325T000000
RDATE:19910324T000000
RDATE:19920329T000000
RDATE:19930402T000000
RDATE:19940401T000000
RDATE:19950331T000000
RDATE:19960315T000000
RDATE:19970321T000000
RDATE:19980320T000000
RDATE:19990402T020000
RDATE:20000414T020000
RDATE:20010409T010000
RDATE:20020329T010000
RDATE:20030328T010000
RDATE:20040407T010000
RDATE:20050401T020000
RDATE:20110401T020000
RDATE:20120330T020000
TZNAME:IDT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19480523T000000
RDATE:19480523T000000
TZNAME:IDDT
TZOFFSETFROM:+0200
TZOFFSETTO:+0400
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19480901T000000
RDATE:19480901T000000
TZNAME:IDT
TZOFFSETFROM:+0400
TZOFFSETTO:+0300
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:20060331T020000
RRULE:FREQ=YEARLY;UNTIL=20100326T000000Z;BYMONTH=3;BYMONTHDAY=26,27,28,29,3
0,31;BYDAY=FR
TZNAME:IDT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:20130329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=23,24,25,26,27,28,29;BYDAY=FR
TZNAME:IDT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20100816T201804Z
DTSTART;VALUE=DATE:19630311
DTEND;VALUE=DATE:19630312
SUMMARY:Geburtstag von XYZ
SEQUENCE:0
UID:M2CD-2-1-5446BDC6-DDDC-4EC7-938A-9BC7566A4B4C
CREATED:20091210T180533Z
END:VEVENT
END:VCALENDAR
Similar error when trying to create events with dates after 2038 (in my case: via DAVx⁵ from Android Smartphone):
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:exception>OC\DB\Exceptions\DbalException</s:exception>
<s:message>An exception occurred while executing a query: SQLSTATE[22003]: Numeric value out of range: 1264 Out of range value for column 'lastoccurence' at row 1</s:message>
</d:error>
ics:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:DAVx5/4.2.0.3-ose ical4j/3.1.2 (com.simplemobiletools.calendar.pro)
BEGIN:VEVENT
DTSTAMP:20220430T111259Z
UID:c808e781-36e2-4aeb-92eb-904de6e8f812
SUMMARY:25th Anniversary
DTSTART;VALUE=DATE:19110324
DTEND;VALUE=DATE:19110325
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR
Looks like a typical https://en.wikipedia.org/wiki/Year_2038_problem
I have encounted this and may be related to my issue. I guess wait till it get fixed at some point.
Hi, please update to 24.0.8 or better 25.0.2 and report back if it fixes the issue. Thank you!
I'm still experiencing this issue when syncing a Google calendar, and have to apply @arminus' fix after every update. I added in a line of logging when that block fires in an attempt to find the event that was causing this issue. Here is the event's details:
BEGIN:VEVENT
DTSTART:19691231T160000Z
DTSTAMP:20230621T192016Z
UID:C7D5FA15-FD24-4D19-A14B-099DBDE36E5E
CREATED:20110213T052755Z
LAST-MODIFIED:20230201T055703Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:New Event
TRANSP:OPAQUE
END:VEVENT
I have no idea how this event got created, but I figured I'd just go into the calendar and delete the event, but there doesn't appear to be on in my google calendar, so there's nothing to delete.
The DTSTART is 12/31/1969, and has no DTEND nor DURATION, and the DTSTART doesn't have time, so it follows the code path of using $firstOccurrence as $lastOccurrence. Converting the start date to timestamp yields -28800. In addition to @arminus' fix, adding a max function when converting the $firstOccurrence also fixes the issue. (I can't speak to PHP best practices, but the change below is one possible solution.)
Replace https://github.com/nextcloud/server/blob/cbebc50987965b0f8f97f4827fce1da3ff624c68/apps/dav/lib/CalDAV/CalDavBackend.php#L2770
with
$firstOccurrence = max($component->DTSTART->getDateTime()->getTimeStamp(), 0);
Now the firstOccurrence is 0, which is valid, and lastOccurrence is also 0, which is also valid, and the database is happy. I would also be fine simply adding a check for pre-1970 dates and skipping those events altogether, but that solution may not work for everyone.
If using max is appropriate, I'm happy to submit a PR.
I'm happy to submit a PR.
PR has been here for a while, I just never took the time to test if there's no side-effects introduced by this. I guess we can now merge it. https://github.com/nextcloud/server/pull/31790
