fix(server/webdav): improve error handling for PROPFIND#2066
Draft
xrgzs wants to merge 1 commit intoOpenListTeam:mainfrom
Draft
fix(server/webdav): improve error handling for PROPFIND#2066xrgzs wants to merge 1 commit intoOpenListTeam:mainfrom
xrgzs wants to merge 1 commit intoOpenListTeam:mainfrom
Conversation
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description / 描述
让
PROPFIND遇到文件系统错误时返回错误,避免返回空文件夹。Motivation and Context / 背景
在文件同步场景下,报错返回空文件夹是极其危险的,轻则导致反复上传,浪费流量,严重情况下会出现数据误删
golang.org/x/net/webdav返回的是http.StatusMethodNotAllowed(405)https://cs.opensource.google/go/x/net/+/refs/tags/v0.49.0:webdav/webdav.go
How Has This Been Tested? / 测试
修改前,使用 rclone 同步时,如果源存储出错,会返回空文件夹,被 rclone 判断为目标文件不存在,导致反复上传,修改后能够被正确视为错误并在程序内部自动进行指数退避处理
TODO:
需要确定:
是否影响 HTTP 207 Multi-Status是否会影响其它客户端
已知问题:返回空文件夹在部分软件中不会报错,返回错误会弹窗,但个人认为错误弹窗是正确的表现
错误代码返回 500 还是 405
对齐
golang.org/x/net/webdav的 handlePropfindErrorChecklist / 检查清单
我已阅读 CONTRIBUTING 文档。
go fmtor prettier.我已使用
go fmt或 prettier 格式化提交的代码。我已为此 PR 添加了适当的标签(如无权限或需要的标签不存在,请在描述中说明,管理员将后续处理)。
我已在适当情况下使用"Request review"功能请求相关代码作者进行审查。
我已相应更新了相关仓库(若适用)。