Skip to content

[BUG] WebDAV rclone mount (VFS) PROPPATCH 返回 405,无限重试上传,附带 resty 时间解析 ERROR 日志 #2925

Description

@jsnjwgj

请确认以下事项

  • 我已确认阅读并同意 AGPL-3.0 第15条
    本程序不提供任何明示或暗示的担保,使用风险由您自行承担。

  • 我已确认阅读并同意 AGPL-3.0 第16条
    无论何种情况,版权持有人或其他分发者均不对使用本程序所造成的任何损失承担责任。

  • 我确认我的描述清晰,语法礼貌,能帮助开发者快速定位问题,并符合社区规则。

  • 我已确认阅读了OpenList文档

  • 我已确认没有重复的问题或讨论。

  • 我已确认是OpenList的问题,而不是其他原因(例如 网络依赖操作)。

  • 我认为此问题必须由OpenList处理,而非第三方。

  • 我已确认这个问题在最新版本中没有被修复。

  • 我没有阅读这个清单,只是闭眼选中了所有的复选框,请关闭这个 Issue 。

OpenList 版本(必填)

v4.2.5

使用的存储驱动(必填)

天翼云盘

问题描述(必填)

环境:
OpenList latest,docker compose host 网络;rclone 运行在 Linux 容器。
复现步骤:
rclone webdav remote,url 指向http://ip:5244/dav;vendor=owncloud。vendor=other也测试过
rclone mount 挂载,不使用 --no‑modtime。
现象:
rclone VFS 持续发送 PROPPATCH 请求,OpenList 返回405 Method Not Allowed;rclone 判定上传失败,无限循环重试,文件上传失败。
OpenList 日志大量输出:ERROR RESTY parsing time "Aug 14, 2026, 9:47:53\xe2\x80\xafAM +08";字符串中包含 U+202F (NARROW NO‑BREAK SPACE) 窄不间断空格。
Windows 平台 rclone 同样触发 405,只是不会输出 resty 解析报错;设置 vendor=owncloud 无法规避,VFS 依然发送 PROPPATCH。

期望:
WebDAV 实现 PROPPATCH 接口,支持修改文件 mtime;
resty 时间解析逻辑增加预处理,兼容 U+202F 特殊空格,消除无效 ERROR 日志。

日志(必填)

docker compose logs
openlist | INFO[2026-08-14 10:39:24] reading config file: /opt/openlist/data/config.json
openlist | INFO[2026-08-14 10:39:24] load config from env with prefix:
openlist | INFO[2026-08-14 10:39:24] total memory: 7812MB, available: 6569MB
openlist | INFO[2026-08-14 10:39:24] min free memory: 781MB
openlist | INFO[2026-08-14 10:39:24] max block limit: 64MB
openlist | INFO[2026-08-14 10:39:24] auto memory limit: 4MB
openlist | INFO[2026-08-14 10:39:24] init logrus...
openlist | start HTTP server @ 0.0.0.0:5244
openlist | 2026/08/14 10:49:14.086592 WARN RESTY parsing time "Aug 14, 2026, 10:49:13\xe2\x80\xafAM +08" as "Jan 2, 2006 15:04:05 PM -07": cannot parse ", 10:49:13\xe2\x80\xafAM +08" as " ", Attempt 1
openlist | 2026/08/14 10:49:14.086653 ERROR RESTY parsing time "Aug 14, 2026, 10:49:13\xe2\x80\xafAM +08" as "Jan 2, 2006 15:04:05 PM -07": cannot parse ", 10:49:13\xe2\x80\xafAM +08" as " "
openlist | 2026/08/14 10:49:42.143776 WARN RESTY parsing time "Aug 14, 2026, 10:49:41\xe2\x80\xafAM +08" as "Jan 2, 2006 15:04:05 PM -07": cannot parse ", 10:49:41\xe2\x80\xafAM +08" as " ", Attempt 1
openlist | 2026/08/14 10:49:42.143838 ERROR RESTY parsing time "Aug 14, 2026, 10:49:41\xe2\x80\xafAM +08" as "Jan 2, 2006 15:04:05 PM -07": cannot parse ", 10:49:41\xe2\x80\xafAM +08" as " "
openlist | 2026/08/14 10:49:45.416174 WARN RESTY parsing time "Aug 14, 2026, 10:49:45\xe2\x80\xafAM +08" as "Jan 2, 2006 15:04:05 PM -07": cannot parse ", 10:49:45\xe2\x80\xafAM +08" as " ", Attempt 1
openlist | 2026/08/14 10:49:45.416230 ERROR RESTY parsing time "Aug 14, 2026, 10:49:45\xe2\x80\xafAM +08" as "Jan 2, 2006 15:04:05 PM -07": cannot parse ", 10:49:45\xe2\x80\xafAM +08" as " "
openlist | 2026/08/14 10:49:45.476725 WARN RESTY parsing time "Aug 14, 2026, 10:49:45\xe2\x80\xafAM +08" as "Jan 2, 2006 15:04:05 PM -07": cannot parse ", 10:49:45\xe2\x80\xafAM +08" as " ", Attempt 1
openlist | 2026/08/14 10:49:45.476781 ERROR RESTY parsing time "Aug 14, 2026, 10:49:45\xe2\x80\xafAM +08" as "Jan 2, 2006 15:04:05 PM -07": cannot parse ", 10:49:45\xe2\x80\xafAM +08" as " "
openlist | 2026/08/14 10:49:54.362168 WARN RESTY parsing time "Aug 14, 2026, 10:49:54\xe2\x80\xafAM +08" as "Jan 2, 2006 15:04:05 PM -07": cannot parse ", 10:49:54\xe2\x80\xafAM +08" as " ", Attempt 1

出错报错是启用rclone mount挂载后开始产生。同时rclone日志中:
unchunked simple update failed: Method Not Allowed: 405 Method Not Allowed
反复出现,上传文件反复进行。

配置文件内容(必填)

cat docker-compose.yml
services:
openlist:
image: openlistteam/openlist:latest
container_name: openlist
network_mode: host
user: "1000:1000"
restart: always
volumes:
- ./config:/config
- ./logs:/logs
- ./data:/opt/openlist/data
- /data:/data
environment:
- TZ=Asia/Shanghai

- PUID=1000

- PGID=1000

  - ARIA2_RPC_URL=http://127.0.0.1:6800
  - ARIA2_RPC_SECRET=00000000
  - OPENLIST_USER=000000
  - OPENLIST_PASSWORD=000000000!
healthcheck:
  test: ["CMD", "wget", "--spider", "-q", "http://localhost:5244"]
  interval: 30s
  timeout: 10s
  retries: 3
  start_period: 40s
logging:
  driver: json-file
  options:
    max-size: 10m
deploy:
  resources:
    limits:
      cpus: '2.0'
      memory: 2G
    reservations:
      memory: 1G

cat config.json
{
"force": false,
"site_url": "/openlist",
"cdn": "",
"jwt_secret": "00000000",
"token_expires_in": 48,
"database": {
"type": "sqlite3",
"host": "",
"port": 0,
"user": "",
"password": "",
"name": "",
"db_file": "/opt/openlist/data/data.db",
"table_prefix": "x_",
"ssl_mode": "",
"dsn": ""
},
"meilisearch": {
"host": "http://localhost:7700",
"api_key": "",
"index": "openlist"
},
"scheme": {
"address": "0.0.0.0",
"http_port": 5244,
"https_port": -1,
"force_https": false,
"cert_file": "",
"key_file": "",
"unix_file": "",
"unix_file_perm": "",
"enable_h2c": false,
"enable_h3": false
},
"temp_dir": "/opt/openlist/data/temp",
"bleve_dir": "/opt/openlist/data/bleve",
"dist_dir": "",
"log": {
"enable": true,
"name": "/opt/openlist/data/log/log.log",
"max_size": 50,
"max_backups": 30,
"max_age": 28,
"compress": false,
"filter": {
"enable": false,
"filters": [
{
"cidr": "",
"path": "/ping",
"method": ""
},
{
"cidr": "",
"path": "",
"method": "HEAD"
},
{
"cidr": "",
"path": "/dav/",
"method": "PROPFIND"
}
]
}
},
"delayed_start": 0,
"auto_memory_limit": 4,
"min_free_memory": 0,
"max_block_limit": 0,
"max_connections": 0,
"max_concurrency": 64,
"tls_insecure_skip_verify": false,
"tasks": {
"download": {
"workers": 5,
"max_retry": 1,
"task_persistant": false
},
"transfer": {
"workers": 5,
"max_retry": 5,
"task_persistant": false
},
"upload": {
"workers": 5,
"max_retry": 5,
"task_persistant": false
},
"copy": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"move": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"decompress": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"decompress_upload": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"allow_retry_canceled": false
},
"cors": {
"allow_origins": [
""
],
"allow_methods": [
"
"
],
"allow_headers": [
"*"
]
},
"s3": {
"enable": false,
"port": 5246,
"ssl": false
},
"ftp": {
"enable": false,
"listen": ":5221",
"find_pasv_port_attempts": 50,
"active_transfer_port_non_20": false,
"idle_timeout": 900,
"connection_timeout": 30,
"disable_active_mode": false,
"default_transfer_binary": false,
"enable_active_conn_ip_check": true,
"enable_pasv_conn_ip_check": true
},
"sftp": {
"enable": false,
"listen": ":5222"
},
"mcp": {
"enable": false
},
"last_launched_version": "v4.2.5",
"proxy_address": ""

复现链接(可选)

No response

AI生成内容(可选)

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions