From 555e71676126d632725bf497b33e70fe63bb4599 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Thu, 15 Dec 2011 15:38:39 -0500 Subject: [PATCH] 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. --- webcit/dav_options.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) 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"); -- 2.30.2