Thanks for all the hard work to get the actual answer Ken; I’ll apply the patch to my local server for me to test (only 2 of us using the calendar stuff at the moment) and wait with baited breath for an apple update :-)
If you get wind of apple fixing things, let me know - if I spot it at this end, I’ll send something out too. Cheers marty On 16 Dec 2013, at 19:09, Ken Murchison <mu...@andrew.cmu.edu> wrote: > I confirmed that the DELETE problem is indeed a bug in the Apple client, and > that Apple is aware of it. I'm somewhat reluctant to to include a fix in > Cyrus for a bug in a client that will hopefully get fixed sooner rather than > later. The patch below will work around the problem by making the faulty > conditional DELETE a non-conditional one. But, by doing so we may delete a > resource that has been changed by another user/client/session. Given that we > really don't support shared calendars at the moment, this probably isn't a > big deal but I don't really want to create potentially bigger problems moving > forward. > > The real fix is Apple correcting their client to use an If-Match header > rather than If-Schedule-Tag-Match header if the resource doesn't have a > Schedule-Tag and/or isn't a scheduling object. > > > On 12/14/2013 01:02 PM, Ken Murchison wrote: >> I just committed a fix to git for the 406 response to GET. I will make >> a beta9 release with this fix, and hopefully with a fix for the DELETE >> issue by early next week. >> >> I have an email into one of the CalDAV experts that I know at Apple to >> see what CalendarServer does with the empty If-Schedule-Tag-Match >> header. I think its a bug in the Apple client, but I will have to come >> up with a sane workaround for it. In the meantime, this uncommitted >> patch should fix your problem with DELETE: >> >> >> diff --git a/imap/http_caldav.c b/imap/http_caldav.c >> index c00223f..641feb8 100644 >> --- a/imap/http_caldav.c >> +++ b/imap/http_caldav.c >> @@ -695,6 +695,7 @@ static int caldav_check_precond(struct transaction_t >> *txn, const void *data, >> >> /* Per RFC 6638, check Schedule-Tag */ >> if ((hdr = spool_getheader(txn->req_hdrs, "If-Schedule-Tag-Match"))) { >> + if (!*hdr[0]) return precond; /* XXX Hack for bug in Apple client */ >> if (etagcmp(hdr[0], stag)) return HTTP_PRECOND_FAILED; >> } >> >> >> >> >> On 12/14/2013 09:39 AM, Marty Lee wrote: >>> No worries.. I'm about to get back onto another train so will back out b8.. >>> Only me using it in earnest, so if you need anything else tested before >>> pushing out, just send me a link. >>> >>> Marty Lee >>> v: 07827 950 918 >>> >>>> On 14 Dec 2013, at 14:26, Ken Murchison <mu...@andrew.cmu.edu> wrote: >>>> >>>> Hi Marty, >>>> >>>> Thanks for the info. The 406 is in response to the GET, caused by a bug I >>>> introduced when I added support for jCal and xCal data. I can't believe >>>> that this didn't present itself in my testing. I will need to fix this >>>> immediately. You probably want to downgrade to beta7 in the meantime. >>>> >>>> I *think* the problem with DELETE is that iCal is sending an empty >>>> If-Schedule-Tag-Match header. I will need to test this here and possibly >>>> talk to the Apple guys to find out why they are sending an empty header, >>>> and what they expect the behavior to be. >>>> >>>> >>>>> On 12/14/2013 03:09 AM, Marty Lee wrote: >>>>> Ken, >>>>> >>>>> I haven’t but have just taken the opportunity to update to Beta 8 and >>>>> also to refresh Sqlite, which >>>>> seems to be the source of the error message… >>>>> >>>>> Using cyrus beta 7, the iCal client would delete the event, but when it >>>>> updated with the server, the >>>>> event would magically just re-appear. With b8, this has changed; now I >>>>> get a dialog box: >>>>> >>>>> ------ >>>>> The request for “Marty” in account “Maui” failed. >>>>> >>>>> The server responded with >>>>> “406” to operation CalDAVDeleteEntityQueueableOperation. >>>>> ----- >>>>> >>>>> Telemetry log: >>>>> >>>>> <1387007669<DELETE >>>>> /dav/calendars/user/marty/Default/0C48ECD9-44A7-4F1F-9C87-9A2EF647C574.ics >>>>> HTTP/1.1 >>>>> Accept-encoding: gzip, deflate >>>>> Max-forwards: 10 >>>>> Accept-language: en-gb >>>>> User-agent: Mac_OS_X/10.9 (13A603) CalendarAgent/174 >>>>> Host: 192.168.253.16:1443 >>>>> Accept: */* >>>>> Content-length: 0 >>>>> X-forwarded-server: dav.maui.co.uk >>>>> If-schedule-tag-match: >>>>> X-forwarded-for: 176.12.107.140 >>>>> Authorization: Basic ... >>>>> X-forwarded-host: cal.maui.co.uk >>>>> >>>>> BEGIN:VCALENDAR >>>>> VERSION:2.0 >>>>> PRODID:-//Apple Inc.//Mac OS X 10.9//EN >>>>> CALSCALE:GREGORIAN >>>>> BEGIN:VTIMEZONE >>>>> TZID:Europe/London >>>>> BEGIN:DAYLIGHT >>>>> TZOFFSETFROM:+0000 >>>>> RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU >>>>> DTSTART:19810329T010000 >>>>> TZNAME:BST >>>>> TZOFFSETTO:+0100 >>>>> END:DAYLIGHT >>>>> BEGIN:STANDARD >>>>> TZOFFSETFROM:+0100 >>>>> RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU >>>>> DTSTART:19961027T020000 >>>>> TZNAME:GMT >>>>> TZOFFSETTO:+0000 >>>>> END:STANDARD >>>>> END:VTIMEZONE >>>>> BEGIN:VEVENT >>>>> CREATED:<1387007670<GET >>>>> /dav/calendars/user/marty/Default/0C48ECD9-44A7-4F1F-9C87-9A2EF647C574.ics >>>>> HTTP/1.1 >>>>> Accept-encoding: gzip, deflate >>>>> Max-forwards: 10 >>>>> Accept-language: en-gb >>>>> User-agent: Mac_OS_X/10.9 (13A603) CalendarAgent/174 >>>>> Host: 192.168.253.16:1443 >>>>> Accept: */* >>>>> Content-length: 0 >>>>> X-forwarded-server: dav.maui.co.uk >>>>> X-forwarded-for: 176.12.107.140 >>>>> Authorization: Basic ... >>>>> X-forwarded-host: cal.maui.co.uk >>>>> >>>>> BEGIN:VCALENDAR >>>>> VERSION:2.0 >>>>> PRODID:-//Apple Inc.//Mac OS X 10.9//EN >>>>> CALSCALE:GREGORIAN >>>>> BEGIN:VTIMEZONE >>>>> TZID:Europe/London >>>>> BEGIN:DAYLIGHT >>>>> TZOFFSETFROM:+0000 >>>>> RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU >>>>> DTSTART:19810329T010000 >>>>> TZNAME:BST >>>>> TZOFFSETTO:+0100 >>>>> END:DAYLIGHT >>>>> BEGIN:STANDARD >>>>> TZOFFSETFROM:+0100 >>>>> RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU >>>>> DTSTART:19961027T020000 >>>>> TZNAME:GMT >>>>> TZOFFSETTO:+0000 >>>>> END:STANDARD >>>>> END:VTIMEZONE >>>>> BEGIN:VEVENT >>>>> CREATED:20131214T075350Z >>>>> UID:0C48ECD9-44A7-4F1F-9C87-9A2EF647C574 >>>>> DTEND;TZID=Europe/London:20131207T100000 >>>>> TRANSP:OPAQUE >>>>> SUMMARY:Change Event Name >>>>> DTSTART;TZID=Europe/London:20131207T090000 >>>>> DTSTAMP:20131214T075411Z >>>>> SEQUENCE:3 >>>>> END:VEVENT >>>>> END:VCALENDAR >>>>>> 1387007670>HTTP/1.1 406 Not Acceptable >>>>> Date: Sat, 14 Dec 2013 07:54:30 GMT >>>>> Strict-Transport-Security: max-age=600 >>>>> Vary: Accept-Encoding >>>>> Server: Cyrus/v2.4.17-caldav-beta8 Cyrus-SASL/2.1.23 OpenSSL/0.9.8 >>>>> zlib/1.2.3 libxml2/2.6.29 SQLite/3.8.2 libical/0.48 >>>>> Content-Length: 0 >>>>> >>>>> >>>>> I’ll keep looking; I can create and edit events, just not delete them… >>>>> >>>>> marty >>>>> >>>>> >>>>>> On 12 Dec 2013, at 17:30, Ken Murchison <mu...@andrew.cmu.edu> wrote: >>>>>> >>>>>> Hi Marty, >>>>>> >>>>>> Did you find anything related to this? I don't have Mavericks yet, but >>>>>> maybe a telemetry log of the client trying to delete an entry would >>>>>> point me in the right direction. >>>>>> >>>>>> Worst case, I will be with the Apple client developers in early February >>>>>> and can test then. >>>>>> >>>>>> >>>>>> >>>>>>> On 10/24/2013 07:22 AM, Marty Lee wrote: >>>>>>> Good afternoon (local time for me!) >>>>>>> >>>>>>> Updated my Mac to Mavericks this morning and am now getting the >>>>>>> following error from >>>>>>> the CalDAV part of Cyrus when I try to delete an entry. >>>>>>> >>>>>>> dav_exec() step: cannot start a transaction within a transaction >>>>>>> >>>>>>> Creation & modification works fine, but iCal on the mac now can’t >>>>>>> delete items. I can work >>>>>>> around this by using a web interface to my calendars, but I just >>>>>>> thought I’d mention it here >>>>>>> that Apple have changed something in iCal with the new version of OS-X. >>>>>>> >>>>>>> If I get a chance this weekend, I’ll have a look at the source code and >>>>>>> see if I can do >>>>>>> anything to help. >>>>>>> >>>>>>> cheers >>>>>>> >>>>>>> marty >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> ----- >>>>>>> Marty Lee e: >>>>>>> ma...@maui-systems.co.uk >>>>>>> >>>>>>> Technical Director v: +44 845 869 2661 >>>>>>> Maui Systems Ltd f: +44 871 433 8922 >>>>>>> Scotland, UK w: >>>>>>> http://www.maui-systems.co.uk >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> ---- >>>>>>> Cyrus Home Page: >>>>>>> http://www.cyrusimap.org/ >>>>>>> >>>>>>> List Archives/Info: >>>>>>> http://lists.andrew.cmu.edu/pipermail/info-cyrus/ >>>>>>> >>>>>>> To Unsubscribe: >>>>>>> >>>>>>> https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus >>>>>> -- >>>>>> Kenneth Murchison >>>>>> Principal Systems Software Engineer >>>>>> Carnegie Mellon University >>>>> ----- >>>>> Marty Lee e: ma...@maui-systems.co.uk >>>>> Technical Director v: +44 845 869 2661 >>>>> Maui Systems Ltd f: +44 871 433 8922 >>>>> Scotland, UK w: http://www.maui-systems.co.uk >>>> -- >>>> Kenneth Murchison >>>> Principal Systems Software Engineer >>>> Carnegie Mellon University >>>> >> > > > -- > Kenneth Murchison > Principal Systems Software Engineer > Carnegie Mellon University > ----- Marty Lee e: ma...@maui-systems.co.uk Technical Director v: +44 845 869 2661 Maui Systems Ltd f: +44 871 433 8922 Scotland, UK w: http://www.maui-systems.co.uk
signature.asc
Description: Message signed with OpenPGP using GPGMail
---- Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus