From 9f3fbb68837e11773a733ca63492be716d3d8032 Mon Sep 17 00:00:00 2001 From: MadDogOwner Date: Sun, 1 Feb 2026 19:35:03 +0800 Subject: [PATCH] fix(webdav): improve error handling for PROPFIND Signed-off-by: MadDogOwner --- server/webdav/webdav.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/server/webdav/webdav.go b/server/webdav/webdav.go index 504c5fc1d..9d241dff2 100644 --- a/server/webdav/webdav.go +++ b/server/webdav/webdav.go @@ -81,10 +81,6 @@ func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { status, err = h.handleUnlock(brw, r) case "PROPFIND": status, err = h.handlePropfind(brw, r) - // if there is a error for PROPFIND, we should be as an empty folder to the client - if err != nil { - status = http.StatusNotFound - } case "PROPPATCH": status, err = h.handleProppatch(brw, r) } @@ -662,7 +658,10 @@ func (h *Handler) handlePropfind(w http.ResponseWriter, r *http.Request) (status if errs.IsNotFoundError(err) { return http.StatusNotFound, err } - return http.StatusMethodNotAllowed, err + // It's safer to return 500 Internal Server Error to + // prevent clients from deleting files when we fail to read the FS + // (timeout, IO error, backend storage disconnected, etc) + return http.StatusInternalServerError, err } depth := infiniteDepth if hdr := r.Header.Get("Depth"); hdr != "" {