From: Art Cancro Date: Thu, 15 Dec 2011 20:38:39 +0000 (-0500) Subject: Offer the 'calendar-access' option when an OPTIONS command is performed on a calendar... X-Git-Tag: v8.05~20 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=555e71676126d632725bf497b33e70fe63bb4599 Offer the 'calendar-access' option when an OPTIONS command is performed on a calendar room. This officially opens development of CalDAV. Don't expect it to work yet. And I still think the people who pushed CalDAV instead of GroupDAV are completely wrong. Especially Mike Shaver, who is an arrogant asshole. --- diff --git a/webcit/dav_options.c b/webcit/dav_options.c index b5f35abbc..11b7088d3 100644 --- a/webcit/dav_options.c +++ b/webcit/dav_options.c @@ -43,7 +43,7 @@ void dav_options(void) StrBufExtract_token(dav_uid, WCC->Hdr->HR.ReqLine, 1, '/'); /* - * If the room name is blank, the client is doing a top-level OPTIONS. + * If the room name is blank, the client is doing an OPTIONS on the root. */ if (StrLength(dav_roomname) == 0) { hprintf("HTTP/1.1 200 OK\r\n"); @@ -85,7 +85,6 @@ void dav_options(void) * a specific item in the room. */ if (StrLength(dav_uid) != 0) { - dav_msgnum = locate_message_by_uid(ChrPtr(dav_uid)); if (dav_msgnum < 0) { hprintf("HTTP/1.1 404 not found\r\n"); @@ -125,7 +124,17 @@ void dav_options(void) hprintf("HTTP/1.1 200 OK\r\n"); dav_common_headers(); hprintf("Date: %s\r\n", datestring); - hprintf("DAV: 1\r\n"); + + /* + * Offer CalDAV (RFC 4791) if this is a calendar room + */ + if ( (WC->CurRoom.view == VIEW_CALENDAR) || (WC->CurRoom.view == VIEW_CALBRIEF) ) { + hprintf("DAV: 1, calendar-access\r\n"); + } + else { + hprintf("DAV: 1\r\n"); + } + hprintf("Allow: OPTIONS, PROPFIND, GET, PUT\r\n"); begin_burst(); wc_printf("\r\n");