src/server/webdav/operation.c

changeset 503
aeaf7db26fac
parent 415
d938228c382e
--- 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);
         }

mercurial