From ab11983c1b4fce5e32b7750ace865f897d0e8462 Mon Sep 17 00:00:00 2001 From: Warren Date: Sun, 21 Jun 2026 16:16:43 +0800 Subject: [PATCH] WebDAV MKCOL: return 405 Exists if directory already exists (RFC 4918) P3 fix: - create_dir: check vfs.exists() before creating - Return FsError::Exists (405 Method Not Allowed) if path exists Tests: 36 webdav tests pass --- markbase-core/src/webdav.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/markbase-core/src/webdav.rs b/markbase-core/src/webdav.rs index a3e2d49..9b64329 100644 --- a/markbase-core/src/webdav.rs +++ b/markbase-core/src/webdav.rs @@ -645,6 +645,9 @@ impl DavFileSystem for VfsDavFs { Ok(p) => p, Err(e) => return Box::pin(std::future::ready(Err(e))), }; + if self.vfs.exists(&full_path) { + return Box::pin(std::future::ready(Err(FsError::Exists))); + } match self.vfs.create_dir_all(&full_path, 0o755) { Ok(_) => Box::pin(std::future::ready(Ok(()))), Err(_) => Box::pin(std::future::ready(Err(FsError::NotImplemented))),