fix: avoid 409 conflict when renaming files differing only by case (#5729)

This commit is contained in:
Ariel Leyva
2026-02-01 05:37:07 -05:00
committed by GitHub
parent 87cfead033
commit d441b28f43

View File

@@ -206,6 +206,11 @@ func resourcePatchHandler(fileCache FileCache) handleFunc {
return http.StatusBadRequest, err return http.StatusBadRequest, err
} }
srcInfo, _ := d.user.Fs.Stat(src)
dstInfo, _ := d.user.Fs.Stat(dst)
same := os.SameFile(srcInfo, dstInfo)
if action != "rename" || !same {
override := r.URL.Query().Get("override") == "true" override := r.URL.Query().Get("override") == "true"
rename := r.URL.Query().Get("rename") == "true" rename := r.URL.Query().Get("rename") == "true"
if !override && !rename { if !override && !rename {
@@ -217,10 +222,10 @@ func resourcePatchHandler(fileCache FileCache) handleFunc {
dst = addVersionSuffix(dst, d.user.Fs) dst = addVersionSuffix(dst, d.user.Fs)
} }
// Permission for overwriting the file
if override && !d.user.Perm.Modify { if override && !d.user.Perm.Modify {
return http.StatusForbidden, nil return http.StatusForbidden, nil
} }
}
err = d.RunHook(func() error { err = d.RunHook(func() error {
return patchAction(r.Context(), action, src, dst, d, fileCache) return patchAction(r.Context(), action, src, dst, d, fileCache)