OpenListTeam / OpenListTeam/OpenList

[BUG] webdav无法为天翼云盘客户端上传.config后缀文件,且错误后产生大量的.transfer文件

Open
#2,852 7 comments 0 reactions 2 assignees View on GitHub

@PIKACHUIM is already working on this.

Since Jul 27, 2026.

bug
Dominant language
Go
Stars
24.7k
Forks
2.3k
Avg merge
1d 20h
Merged PRs (30d)
36

Description

Please confirm the following
  • I have read and agree to AGPL-3.0 Section 15 .
    The program is provided "as is" without any warranties; you bear all risks of using it.

  • I have read and agree to AGPL-3.0 Section 16 .
    The copyright holders and distributors are not liable for any damages resulting from the use or inability to use the program.

  • I confirm my description is clear, polite, helps developers quickly locate the issue, and complies with community rules.

  • I have read the OpenList documentation.

  • I confirm there are no duplicate issues or discussions.

  • I confirm this is an OpenList issue, not caused by other reasons (such as network, dependencies, or operation).

  • I believe this issue must be handled by OpenList and not by a third party.

  • I confirm this issue is not fixed in the latest version.

  • I have not read these checkboxes and therefore I just ticked them all, Please close this issue.

OpenList Version (required)

v4.2.3

Storage Driver Used (required)

天翼云盘客户端

Bug Description (required)

群晖cloud sync通过webdav连接openlist的天翼云盘客户端,在上传.config后缀的文件时报错未找到远程文件,但是手动上传.config结尾文件无报错。使用阿里云盘同样方式挂载和上传无错误。
同时在观察到天翼云盘对应文件夹下会出现大量的.transfer文件(用官方客户端需要删除很久),能否错误后自动删除.transfer文件
cloud sync上传失败:
Image

Image 天翼云盘对应文件夹下大量(几千个)的.transfer文件: Image
Logs (required)

github.com/OpenListTeam/OpenList/v4/internal/op.Get
/home/runner/work/OpenList/OpenList/internal/op/fs.go:213
github.com/OpenListTeam/OpenList/v4/internal/fs.get
/home/runner/work/OpenList/OpenList/internal/fs/get.go:37
github.com/OpenListTeam/OpenList/v4/internal/fs.Get
/home/runner/work/OpenList/OpenList/internal/fs/fs.go:44
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).handlePropfind
/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:734
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).ServeHTTP
/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:84
github.com/OpenListTeam/OpenList/v4/server.ServeWebDAV
/home/runner/work/OpenList/OpenList/server/webdav.go:47
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.12.0/context.go:192
github.com/OpenListTeam/OpenList/v4/server.WebDAVAuth
/home/runner/work/OpenList/OpenList/server/webdav.go:151
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.12.0/context.go:192
github.com/OpenListTeam/OpenList/v4/server/middlewares.StoragesLoaded
/home/runner/work/OpenList/OpenList/server/middlewares/check.go:35
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.12.0/context.go:192
github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.12.0/recovery.go:90
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.12.0/context.go:192
github.com/gin-gonic/gin.LoggerWithConfig.func1
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.12.0/logger.go:282
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.12.0/context.go:192
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.12.0/gin.go:722
github.com/gin-gonic/gin.(*Engine).ServeHTTP
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.12.0/gin.go:672
net/http.serverHandler.ServeHTTP
/opt/hostedtoolcache/go/1.26.4/x64/src/net/http/server.go:3311
net/http.(*conn).serve
/opt/hostedtoolcache/go/1.26.4/x64/src/net/http/server.go:2073
runtime.goexit
/opt/hostedtoolcache/go/1.26.4/x64/src/runtime/asm_amd64.s:1771
[GIN] 2026/07/27 - 07:48:03 | 404 | 395.404µs | 127.0.0.1 | PROPFIND "/dav/189/path/藏.exe.config"
WARN[2026-07-27 07:48:15] failed get /189/path/藏.exe.config: object not found
[GIN] 2026/07/27 - 07:48:15 | 201 | 48.47s | 127.0.0.1 | PUT "/dav/189/path/藏.exe.config"
WARN[2026-07-27 07:48:15] failed get /189/path/藏.exe.config: object not found
ERRO[2026-07-27 07:48:15] PROPFIND /dav/189/path/藏.exe.config object not found

Configuration File Content (required)
{
  "force": false,
  "site_url": "/",
  "cdn": "",
  "jwt_secret": "vXc0XTC95filMV",
  "token_expires_in": 48,
  "database": {
    "type": "sqlite3",
    "host": "",
    "port": 0,
    "user": "",
    "password": "",
    "name": "",
    "db_file": "/volume3/@appdata/openlist/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": 5255,
    "https_port": -1,
    "force_https": false,
    "cert_file": "",
    "key_file": "",
    "unix_file": "",
    "unix_file_perm": "",
    "enable_h2c": false,
    "enable_h3": false
  },
  "temp_dir": "/volume3/@appdata/openlist/temp",
  "bleve_dir": "/volume3/@appdata/openlist/bleve",
  "dist_dir": "",
  "log": {
    "enable": true,
    "name": "/volume3/@appdata/openlist/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": 2,
      "task_persistant": false
    },
    "upload": {
      "workers": 5,
      "max_retry": 0,
      "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.3",
  "proxy_address": ""
}
Image Image Image
Reproduction Link (optional)

No response

AI Generated Content (optional)

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.