diff -r 11ac3761c0e3 -r aeaf7db26fac src/server/webdav/operation.c --- a/src/server/webdav/operation.c Sun Jun 11 15:53:55 2023 +0200 +++ b/src/server/webdav/operation.c Sun Jul 09 15:14:26 2023 +0200 @@ -733,6 +733,24 @@ int r = 0; if(type == WEBDAV_VFS_MKDIR) { r = vfs_mkdir(op->vfs, op->path); + if(r) { + // mkcol specific status codes + switch(op->vfs->vfs_errno) { + case ENOENT: { + op->rq->status_num = 409; + break; + } + case EEXIST: { + op->rq->status_num = 405; + break; + } + case EACCES: { + op->rq->status_num = 403; + break; + } + default: op->rq->status_num = 500; + } + } } else if(type == WEBDAV_VFS_DELETE) { r = webdav_vfs_unlink(op); }