Skip to content

Support MKCALENDAR requests at Worker ingress #6877

Description

@cnharrison

Proposed workerd issue

Title

Support MKCALENDAR requests at Worker ingress

Body

Reproduction

Deploy a module Worker that returns the incoming request method:

export default {
  fetch(request: Request): Response {
    return new Response(request.method, {
      headers: { "X-Observed-Method": request.method },
    });
  },
};

Then send:

curl -i -X PROPFIND https://<worker>.workers.dev/
curl -i -X MKCOL https://<worker>.workers.dev/
curl -i -X MKCALENDAR https://<worker>.workers.dev/

With Wrangler 4.110.0 and compatibility date 2026-07-12, PROPFIND and MKCOL reach the Worker and return its response. MKCALENDAR does not reach the Worker and instead returns:

HTTP/2 501
content-length: 0
server: cloudflare

wrangler dev reproduces the rejection locally as:

HTTP/1.1 501 Not Implemented
ERROR: Unrecognized request method.

Constructing the same request through the Workers Vitest runtime rejects before invocation with:

TypeError: Invalid HTTP method string: MKCALENDAR

Expected behavior

MKCALENDAR should reach Worker code like the other supported WebDAV methods.

Use case

MKCALENDAR is defined by CalDAV (RFC 4791) and is required for standards-based creation of calendar collections. Returning 501 before Worker invocation prevents a Worker from implementing complete CalDAV calendar creation.

Source observation

Current workerd source includes common WebDAV methods such as MKCOL, PROPFIND, PROPPATCH, ACL, and REPORT in the kj::HttpMethod bridge but omits MKCALENDAR:

Wrangler's bundled HTTP parser and Node HTTP method constants already recognize MKCALENDAR, so the rejection appears to occur at the workerd HTTP-method boundary.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions