Hello!
My earlier attempt with mailing radicale(a)librelist.com failed: I got a
request to send a confirmation email, which then failed with "Sorry to
tell you, but the list name you gave:
radicale-confirm-61cc45b53b1a4ac6bb2d191b0b284215(a)librelist.com
is not a valid name for a list at librelist.com."
I'm now sending to the Radicale list and Guillaume directly.
On this occasion I can add one more problem which I forgot in the intial
email:
PROPFIND + <allprop/> => TypeError: 'NoneType' object is not iterable
PROPFIND /public_user/calendar/ HTTP/1.1
Keep-Alive:
Connection: TE, Keep-Alive
TE: trailers
Host: localhost:5232
Depth: 0
Content-Length: 84
Content-Type: application/xml
Sending request-line and headers:
Doing DNS lookup on localhost...
req: Connecting to 127.0.0.1:5232
Sending request body:
Body block (84 bytes):
[<?xml version="1.0" encoding="utf-8"?>
<propfind xmlns="DAV:"><allprop/></propfind>
]
Request sent; retry is 0.
[status-line] < HTTP/1.0 500 Internal Server Error
Traceback (most recent call last):
File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run
self.result = application(self.environ, self.start_response)
File "/usr/lib/python2.7/dist-packages/radicale/__init__.py", line
183, in __call__
status, headers, answer = function(environ, items, content, None)
File "/usr/lib/python2.7/dist-packages/radicale/__init__.py", line
365, in propfind
environ["PATH_INFO"], content, calendars, user)
File "/usr/lib/python2.7/dist-packages/radicale/xmlutils.py", line
184, in propfind
props = [prop.tag for prop in prop_element]
TypeError: 'NoneType' object is not iterable
This breaks SyncEvolution when running with higher loglevel, because it
does this PROPFIND to debug the server's capabilities. I made it ignore
any error (result didn't matter).
On Fri, 2012-02-17 at 16:35 +0100, Patrick Ohly wrote:
William sent me some debug logs, but then ran out of time. So
I've
installed Radicale myself and found an issue that'll break
SyncEvolution: items reported by the server include double slashes in
the path.
<multistatus xmlns="DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<response>
<href>/public_user/calendar/calendar_1//1234567890(a)dummy.ics</href>
^^
SyncEvolution will then use /1234567890(a)dummy.ics as path in future
requests, which Radicale rejects with either 404 or 401 errors.
I'll work around that in SyncEvolution. I'm not sure whether there is a
solution with 1.2.2.
I can't think of a workaround that doesn't involve patching
SyncEvolution or Radicale. I guess I'll have to release a 1.2.3.
While running SyncEvolution's automated testing, I noticed some more
problems. Here's a summary. I was using Radicale 0.6.4-1 as packaged in
Debian Testing, which seems to be the latest stable release. Below I'm
going to quote some libneon debug dumps. I'm copying the Radicale
mailing list, but I don't know whether my mail will go through. I'm not
subscribed and I don't see documentation on how to subscribe on the web
page.
Paths returned by Radicale:
<href>/public_user/calendar/calendar_1//1234567890(a)dummy.ics</href> is
probably not wrong, but it's also not nice. Making SyncEvolution more
resilient fixes this.
multiget:
SyncEvolution uses this to retrieve a subset of the items. Radicale
simply doesn't return any results for the requested items, which IMHO is
a CalDAV protocol violation. I have a workaround in SyncEvolution which
detects this and falls back to individual GETs (slower). SyncEvolution
uses URL escaping of the @ sign in XML, which is what all other CalDAV
servers I tested with understand and do themselves. Radicale itself
doesn't quote the sign in XML. I think both is okay.
detached recurrences:
a request to store an item which contains a main VEVENT with RRULE and
several detached recurrences (=VEVENTs with RECURRENCE-ID) fails on the
server. It silently throws away the detached recurrences. There's no
workaround for this. It implies data loss, so beware.
Bye, Patrick
vvvvvvvvvvvvvvvvvvvv PATH ISSUE vvvvvvvvvvvvvvvvv
<multistatus xmlns="DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<response>
<href>/public_user/calendar/calendar_1//20060406T211449Z-4562-727-1-63(a)gollum.ics</href>
<propstat>
<prop>
<getetag>"-6685602634952506914"</getetag>
<C:calendar-data>BEGIN:VCALENDAR
PRODID:-//Radicale//NONSGML Radicale Server//EN
....
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
vvvvvvvvvvvvvvvvvvv multiget vvvvvvvvvvvvvvvvvvvv
[DEBUG 00:00:00] caldav #B: old database revision '"17937496649054107"',
new revision '"-2935980891920965243"'
[DEBUG 00:00:00] caldav #B: using full item scan to detect changes
[DEBUG 00:00:00] starting updateAllSubItems REPORT 'list items', credentials okay,
deadline in 300.0s
[DEVELOPER 00:00:00] stderr: ah_create, for WWW-Authenticate
[DEVELOPER 00:00:00] stderr: Running pre_send hooks
[DEVELOPER 00:00:00] stderr: Sending request headers:
REPORT /public_user/calendar/calendar_1/ HTTP/1.1
Keep-Alive:
Connection: TE, Keep-Alive
TE: trailers
Host: localhost:5232
Content-Length: 286
Depth: 1
Content-Type: application/xml; charset="utf-8"
[DEVELOPER 00:00:00] stderr: Sending request-line and headers:
[DEVELOPER 00:00:00] stderr: req: Connecting to 127.0.0.1:5232
[DEVELOPER 00:00:00] stderr: Sending request body:
[DEVELOPER 00:00:00] stderr: Body block (286 bytes):
[<?xml version="1.0" encoding="utf-8" ?>
<C:calendar-query xmlns:D="DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<D:getetag/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT">
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>
]
[DEVELOPER 00:00:00] stderr: Request sent; retry is 0.
[DEVELOPER 00:00:00] stderr: [status-line] < HTTP/1.0 207 Unknown
[DEVELOPER 00:00:00] stderr: [hdr] Date: Mon, 20 Feb 2012 15:37:01 GMT
[DEVELOPER 00:00:00] stderr: Header Name: [date], Value: [Mon, 20 Feb 2012 15:37:01 GMT]
[DEVELOPER 00:00:00] stderr: [hdr] Server: WSGIServer/0.1 Python/2.7.2+
[DEVELOPER 00:00:00] stderr: Header Name: [server], Value: [WSGIServer/0.1 Python/2.7.2+]
[DEVELOPER 00:00:00] stderr: [hdr] Content-Length: 309
[DEVELOPER 00:00:00] stderr: Header Name: [content-length], Value: [309]
[DEVELOPER 00:00:00] stderr: [hdr] Content-Type: text/xml
[DEVELOPER 00:00:00] stderr: Header Name: [content-type], Value: [text/xml]
[DEVELOPER 00:00:00] stderr: [hdr]
[DEVELOPER 00:00:00] stderr: End of headers.
[DEVELOPER 00:00:00] stderr: Running post_headers hooks
[DEVELOPER 00:00:00] stderr: Reading 309 bytes of response body.
[DEVELOPER 00:00:00] stderr: Got 309 bytes.
[DEVELOPER 00:00:00] stderr: Read block (309 bytes):
[<?xml version="1.0"?>
<multistatus xmlns="DAV:">
<response>
<href>/public_user/calendar/calendar_1//1234567890(a)dummy.ics</href>
<propstat>
<prop>
<getetag>"7614598999712259121"</getetag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>
]
[DEVELOPER 00:00:00] stderr: Running post_send hooks
[DEVELOPER 00:00:00] stderr: ah_post_send (#0), code is 207 (want 401), WWW-Authenticate
is (none)
[DEVELOPER 00:00:00] stderr: Running destroy hooks.
[DEVELOPER 00:00:00] stderr: Request ends.
[DEBUG 00:00:00] updateAllSubItems(): read new or modified item 1234567890(a)dummy.ics
[DEBUG 00:00:00] starting updateAllSubItems REPORT 'multiget new/updated items',
credentials okay, deadline in 300.0s
[DEVELOPER 00:00:00] stderr: ah_create, for WWW-Authenticate
[DEVELOPER 00:00:00] stderr: Running pre_send hooks
[DEVELOPER 00:00:00] stderr: Sending request headers:
REPORT /public_user/calendar/calendar_1/ HTTP/1.1
Keep-Alive:
Connection: TE, Keep-Alive
TE: trailers
Host: localhost:5232
Content-Length: 271
Depth: 1
Content-Type: application/xml; charset="utf-8"
[DEVELOPER 00:00:00] stderr: Sending request-line and headers:
[DEVELOPER 00:00:00] stderr: req: Connecting to 127.0.0.1:5232
[DEVELOPER 00:00:00] stderr: Sending request body:
[DEVELOPER 00:00:00] stderr: Body block (271 bytes):
[<?xml version="1.0" encoding="utf-8"?>
<C:calendar-multiget xmlns:D="DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<D:getetag/>
<C:calendar-data/>
</D:prop>
<D:href>/public_user/calendar/calendar_1/1234567890%40dummy.ics</D:href>
</C:calendar-multiget>]
[DEVELOPER 00:00:00] stderr: Request sent; retry is 0.
[DEVELOPER 00:00:00] stderr: [status-line] < HTTP/1.0 207 Unknown
[DEVELOPER 00:00:00] stderr: [hdr] Date: Mon, 20 Feb 2012 15:37:01 GMT
[DEVELOPER 00:00:00] stderr: Header Name: [date], Value: [Mon, 20 Feb 2012 15:37:01 GMT]
[DEVELOPER 00:00:00] stderr: [hdr] Server: WSGIServer/0.1 Python/2.7.2+
[DEVELOPER 00:00:00] stderr: Header Name: [server], Value: [WSGIServer/0.1 Python/2.7.2+]
[DEVELOPER 00:00:00] stderr: [hdr] Content-Length: 50
[DEVELOPER 00:00:00] stderr: Header Name: [content-length], Value: [50]
[DEVELOPER 00:00:00] stderr: [hdr] Content-Type: text/xml
[DEVELOPER 00:00:00] stderr: Header Name: [content-type], Value: [text/xml]
[DEVELOPER 00:00:00] stderr: [hdr]
[DEVELOPER 00:00:00] stderr: End of headers.
[DEVELOPER 00:00:00] stderr: Running post_headers hooks
[DEVELOPER 00:00:00] stderr: Reading 50 bytes of response body.
[DEVELOPER 00:00:00] stderr: Got 50 bytes.
[DEVELOPER 00:00:00] stderr: Read block (50 bytes):
[<?xml version="1.0"?>
<multistatus xmlns="DAV:" />]
[DEVELOPER 00:00:00] stderr: Running post_send hooks
[DEVELOPER 00:00:00] stderr: ah_post_send (#0), code is 207 (want 401), WWW-Authenticate
is (none)
[DEVELOPER 00:00:00] stderr: Running destroy hooks.
[DEVELOPER 00:00:00] stderr: Request ends.
[DEBUG 00:00:00] starting GET item 1234567890(a)dummy.ics not returned by 'multiget
new/updated items', credentials okay, deadline in 300.0s
[DEVELOPER 00:00:00] stderr: ah_create, for WWW-Authenticate
[DEVELOPER 00:00:00] stderr: Running pre_send hooks
[DEVELOPER 00:00:00] stderr: Sending request headers:
GET /public_user/calendar/calendar_1/1234567890%40dummy.ics HTTP/1.1
Keep-Alive:
Connection: TE, Keep-Alive
TE: trailers
Host: localhost:5232
Content-Length: 0
Accept: text/calendar; charset=utf-8
[DEVELOPER 00:00:00] stderr: Sending request-line and headers:
[DEVELOPER 00:00:00] stderr: req: Connecting to 127.0.0.1:5232
[DEVELOPER 00:00:00] stderr: Request sent; retry is 0.
[DEVELOPER 00:00:00] stderr: [status-line] < HTTP/1.0 200 OK
[DEVELOPER 00:00:00] stderr: [hdr] Date: Mon, 20 Feb 2012 15:37:01 GMT
[DEVELOPER 00:00:00] stderr: Header Name: [date], Value: [Mon, 20 Feb 2012 15:37:01 GMT]
[DEVELOPER 00:00:00] stderr: [hdr] Server: WSGIServer/0.1 Python/2.7.2+
[DEVELOPER 00:00:00] stderr: Header Name: [server], Value: [WSGIServer/0.1 Python/2.7.2+]
[DEVELOPER 00:00:00] stderr: [hdr] Last-Modified: Mon, 20 Feb 2012 15:37:01 +0000
[DEVELOPER 00:00:00] stderr: Header Name: [last-modified], Value: [Mon, 20 Feb 2012
15:37:01 +0000]
[DEVELOPER 00:00:00] stderr: [hdr] Content-Length: 1546
[DEVELOPER 00:00:00] stderr: Header Name: [content-length], Value: [1546]
[DEVELOPER 00:00:00] stderr: [hdr] ETag: "7614598999712259121"
[DEVELOPER 00:00:00] stderr: Header Name: [etag], Value:
["7614598999712259121"]
[DEVELOPER 00:00:00] stderr: [hdr] Content-Type: text/calendar
[DEVELOPER 00:00:00] stderr: Header Name: [content-type], Value: [text/calendar]
[DEVELOPER 00:00:00] stderr: [hdr]
[DEVELOPER 00:00:00] stderr: End of headers.
[DEVELOPER 00:00:00] stderr: Running post_headers hooks
[DEVELOPER 00:00:00] stderr: Reading 1546 bytes of response body.
[DEVELOPER 00:00:00] stderr: Got 1546 bytes.
[DEVELOPER 00:00:00] stderr: Read block (1546 bytes):
[BEGIN:VCALENDAR
PRODID:-//Radicale//NONSGML Radicale Server//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:/softwarestudio.org/Olson_20011030_5/Europe/Berlin
X-LIC-LOCATION:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:EST/EDT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19671029T020000
RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19870405T020000
RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=1SU
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Europe/Berlin
X-LIC-LOCATION:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
SUMMARY:meeting on site - updated
DTEND:20060406T163000Z
DTSTART:20060406T160000Z
X-RADICALE-NAME:1234567890@dummy.ics
UID:1234567890@dummy
DTSTAMP:20120220T153701Z
LAST-MODIFIED:20120220T153701Z
CREATED:20060409T213201Z
SEQUENCE:1
LOCATION:big meeting room
DESCRIPTION:U nice to see you
CLASS:PUBLIC
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
]
[DEVELOPER 00:00:00] stderr: Running post_send hooks
[DEVELOPER 00:00:00] stderr: ah_post_send (#0), code is 200 (want 401), WWW-Authenticate
is (none)
[DEVELOPER 00:00:00] stderr: Request ends, status 200 class 2xx, error line:
200 OK
[DEVELOPER 00:00:00] stderr: Running destroy hooks.
[DEVELOPER 00:00:00] stderr: Request ends.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
vvvvvvvvvvvvvvvvvv detached recurrences vvvvvvvvv
PUT /public_user/calendar/calendar_1/20080407T193125Z-19554-727-1-50%40gollum.ics
HTTP/1.1
Keep-Alive:
Connection: TE, Keep-Alive
TE: trailers
Host: localhost:5232
Content-Length: 1160
Content-Type: text/calendar; charset=utf-8
[DEVELOPER 00:00:00] stderr: Sending request-line and headers:
[DEVELOPER 00:00:00] stderr: req: Connecting to 127.0.0.1:5232
[DEVELOPER 00:00:00] stderr: Sending request body:
[DEVELOPER 00:00:00] stderr: Body block (1160 bytes):
[BEGIN:VCALENDAR
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
VERSION:2.0
BEGIN:VEVENT
UID:20080407T193125Z-19554-727-1-50@gollum
DTSTAMP:20120220T150539Z
DTSTART:20080406T090000Z
DTEND:20080406T093000Z
TRANSP:OPAQUE
SEQUENCE:2
SUMMARY:Recurring
DESCRIPTION:recurs each Sonday\, 10 times
CLASS:PUBLIC
RRULE:FREQ=WEEKLY;UNTIL=20080608T090000Z;BYDAY=SU
CREATED:20080407T193241Z
LAST-MODIFIED:20120220T150539Z
END:VEVENT
BEGIN:VEVENT
UID:20080407T193125Z-19554-727-1-50@gollum
DTSTAMP:20120220T150539Z
DTSTART:20080413T090000Z
DTEND:20080413T093000Z
TRANSP:OPAQUE
SEQUENCE:7
SUMMARY:Recurring: Modified
CLASS:PUBLIC
CREATED:20080407T193241Z
LAST-MODIFIED:20120220T150539Z
RECURRENCE-ID:20080413T090000Z
DESCRIPTION:second instance modified
END:VEVENT
BEGIN:VEVENT
UID:20080407T193125Z-19554-727-1-50@gollum
DTSTAMP:20120220T150539Z
DTSTART:20080420T100000Z
DTEND:20080420T103000Z
TRANSP:OPAQUE
SEQUENCE:7
SUMMARY:Recurring: Modified II
CLASS:PUBLIC
CREATED:20080407T193241Z
LAST-MODIFIED:20120220T150539Z
RECURRENCE-ID:20080420T090000Z
DESCRIPTION:third instance modified\, different time
END:VEVENT
END:VCALENDAR
]
[DEVELOPER 00:00:00] stderr: Request sent; retry is 0.
[DEVELOPER 00:00:00] stderr: [status-line] < HTTP/1.0 201 Created
[DEVELOPER 00:00:00] stderr: [hdr] Date: Mon, 20 Feb 2012 15:05:39 GMT
[DEVELOPER 00:00:00] stderr: Header Name: [date], Value: [Mon, 20 Feb 2012 15:05:39 GMT]
[DEVELOPER 00:00:00] stderr: [hdr] Server: WSGIServer/0.1 Python/2.7.2+
[DEVELOPER 00:00:00] stderr: Header Name: [server], Value: [WSGIServer/0.1 Python/2.7.2+]
[DEVELOPER 00:00:00] stderr: [hdr] ETag: "-2078255212071890575"
[DEVELOPER 00:00:00] stderr: Header Name: [etag], Value:
["-2078255212071890575"]
[DEVELOPER 00:00:00] stderr: [hdr] Content-Length: 0
[DEVELOPER 00:00:00] stderr: Header Name: [content-length], Value: [0]
[DEVELOPER 00:00:00] stderr: [hdr]
[DEVELOPER 00:00:00] stderr: End of headers.
[DEVELOPER 00:00:00] stderr: Running post_headers hooks
[DEVELOPER 00:00:00] stderr: Running post_send hooks
[DEVELOPER 00:00:00] stderr: ah_post_send (#0), code is 201 (want 401), WWW-Authenticate
is (none)
[DEVELOPER 00:00:00] stderr: Request ends, status 201 class 2xx, error line:
201 Created
...
[DEBUG 00:00:00] starting REPORT 'full calendar', credentials okay, deadline in
300.0s
[DEVELOPER 00:00:00] stderr: ah_create, for WWW-Authenticate
[DEVELOPER 00:00:00] stderr: Running pre_send hooks
[DEBUG 00:00:00] forced sending credentials
[DEVELOPER 00:00:00] stderr: Sending request headers:
REPORT /public_user/calendar/calendar_1/ HTTP/1.1
Keep-Alive:
Connection: TE, Keep-Alive
TE: trailers
Host: localhost:5232
Content-Length: 305
Depth: 1
Content-Type: application/xml; charset="utf-8"
Authorization: xxxxxxxxxx
[DEVELOPER 00:00:00] stderr: Sending request-line and headers:
[DEVELOPER 00:00:00] stderr: req: Connecting to 127.0.0.1:5232
[DEVELOPER 00:00:00] stderr: Sending request body:
[DEVELOPER 00:00:00] stderr: Body block (305 bytes):
[<?xml version="1.0" encoding="utf-8" ?>
<C:calendar-query xmlns:D="DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<D:getetag/>
<C:calendar-data/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT">
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>
]
[DEVELOPER 00:00:00] stderr: Request sent; retry is 0.
[DEVELOPER 00:00:00] stderr: [status-line] < HTTP/1.0 207 Unknown
[DEVELOPER 00:00:00] stderr: [hdr] Date: Mon, 20 Feb 2012 15:05:39 GMT
[DEVELOPER 00:00:00] stderr: Header Name: [date], Value: [Mon, 20 Feb 2012 15:05:39 GMT]
[DEVELOPER 00:00:00] stderr: [hdr] Server: WSGIServer/0.1 Python/2.7.2+
[DEVELOPER 00:00:00] stderr: Header Name: [server], Value: [WSGIServer/0.1 Python/2.7.2+]
[DEVELOPER 00:00:00] stderr: [hdr] Content-Length: 30072
[DEVELOPER 00:00:00] stderr: Header Name: [content-length], Value: [30072]
[DEVELOPER 00:00:00] stderr: [hdr] Content-Type: text/xml
[DEVELOPER 00:00:00] stderr: Header Name: [content-type], Value: [text/xml]
[DEVELOPER 00:00:00] stderr: [hdr]
[DEVELOPER 00:00:00] stderr: End of headers.
[DEVELOPER 00:00:00] stderr: Running post_headers hooks
[DEVELOPER 00:00:00] stderr: Reading 8000 bytes of response body.
[DEVELOPER 00:00:00] stderr: Got 8000 bytes.
[DEVELOPER 00:00:00] stderr: Read block (8000 bytes):
[<?xml version="1.0"?>
<multistatus xmlns="DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
...
<response>
<href>/public_user/calendar/calendar_1//20080407T193125Z-19554-727-1-50(a)gollum.ics</href>
<propstat>
<prop>
<getetag>"-2078255212071890575"</getetag>
<C:calendar-data>BEGIN:VCALENDAR
PRODID:-//Radicale//NONSGML Radicale Server//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:/softwarestudio.org/Olson_20011030_5/Europe/Berlin
X-LIC-LOCATION:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:EST/EDT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19671029T020000
RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19870405T020000
RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=1SU
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Europe/Berlin
X-LIC-LOCATION:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
X-RADICALE-NAME:20080407T193125Z-19554-727-1-50@gollum.ics
UID:20080407T193125Z-19554-727-1-50@gollum
DTSTAMP:20120220T150539Z
DTSTART:20080406T090000Z
DTEND:20080406T093000Z
TRANSP:OPAQUE
SE]
[DEVELOPER 00:00:00] stderr: Reading 6072 bytes of response body.
[DEVELOPER 00:00:00] stderr: Got 6072 bytes.
[DEVELOPER 00:00:00] stderr: Read block (6072 bytes):
[QUENCE:2
SUMMARY:Recurring
DESCRIPTION:recurs each Sonday\, 10 times
CLASS:PUBLIC
RRULE:FREQ=WEEKLY;UNTIL=20080608T090000Z;BYDAY=SU
CREATED:20080407T193241Z
LAST-MODIFIED:20120220T150539Z
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^