Index | Thread | Search

From:
Rafael Sadowski <rafael@sizeofvoid.org>
Subject:
relayd: add support for the MKCALENDAR HTTP method
To:
tech@openbsd.org
Date:
Sat, 16 May 2026 15:34:44 +0200

Download raw body.

Thread
The following diff adds support for the MKCALENDAR HTTP method to relayd.

Currently, relayd is missing this method from the WebDAV/CalDAV extensions.
This causes issues when using relayd as a reverse proxy in front of CalDAV
servers like Nextcloud.

OK?


diff --git a/http.h b/http.h
index b9784ad..01b79e1 100644
--- a/http.h
+++ b/http.h
@@ -72,6 +72,9 @@ enum httpmethod {
 	/* WebDAV Search, RFC 5323 */
 	HTTP_METHOD_SEARCH,
 
+	/* WebDAV Calendaring Extensions, RFC 4791 */
+	HTTP_METHOD_MKCALENDAR,
+
 	/* PATCH, RFC 5789 */
 	HTTP_METHOD_PATCH,
 
@@ -115,6 +118,7 @@ struct http_method {
 	{ HTTP_METHOD_MKREDIRECTREF,	"MKREDIRECTREF" }, \
 	{ HTTP_METHOD_UPDATEREDIRECTREF, "UPDATEREDIRECTREF" }, \
 	{ HTTP_METHOD_SEARCH,		"SEARCH" },	\
+	{ HTTP_METHOD_MKCALENDAR,	"MKCALENDAR" },	\
 	{ HTTP_METHOD_PATCH,		"PATCH" },	\
 	{ HTTP_METHOD_NONE,		NULL }		\
 }
diff --git a/relay_http.c b/relay_http.c
index 3ac5028..4221392 100644
--- a/relay_http.c
+++ b/relay_http.c
@@ -645,6 +645,7 @@ relay_read_http(struct bufferevent *bev, void *arg)
 		case HTTP_METHOD_MKREDIRECTREF:
 		case HTTP_METHOD_UPDATEREDIRECTREF:
 		case HTTP_METHOD_SEARCH:
+		case HTTP_METHOD_MKCALENDAR:
 		case HTTP_METHOD_PATCH:
 			/* HTTP request payload */
 			if (cre->toread > 0) {
diff --git a/relayd.conf.5 b/relayd.conf.5
index a63dd4e..545b18e 100644
--- a/relayd.conf.5
+++ b/relayd.conf.5
@@ -1204,6 +1204,7 @@ and can be either
 .Ic LOCK ,
 .Ic MERGE ,
 .Ic MKACTIVITY ,
+.Ic MKCALENDAR ,
 .Ic MKCOL ,
 .Ic MKREDIRECTREF ,
 .Ic MKWORKSPACE ,