]> source.dussan.org Git - gitea.git/commit
Fix content size does not match error when uploading lfs file (#29259)
authorvincent <pulltheflower@163.com>
Mon, 19 Feb 2024 14:50:03 +0000 (22:50 +0800)
committerGitHub <noreply@github.com>
Mon, 19 Feb 2024 14:50:03 +0000 (14:50 +0000)
commit35d5e4aea4bb02a0b4c7b38ecb2acf612151e891
tree31875953d9d4f26e33126c78cfc9b430f84195d6
parent217d71c48a10265e08b95cc961656b921f61f9ff
Fix content size does not match error when uploading lfs file (#29259)

![image](https://github.com/go-gitea/gitea/assets/38434877/cd726b4d-4771-4547-8aee-ae4e4b56b1d1)
When we update an lfs file by API
`api/v1/repos/{owner}/{repo}/contents/{filepath}`, there will show an
error

```json
{
  "message": "Put \"http://localhost:9000/gitea/lfs/38/92/05904d6c7bb83fc676513911226f2be25bf1465616bb9b29587100ab1414\": readfrom tcp [::1]:57300->[::1]:9000: content size does not match",
  "url": "http://localhost:3000/api/swagger"
}
```

The reason of this error is
https://github.com/go-gitea/gitea/blob/main/services/repository/files/update.go,
in this file, the `file.ContentReader` been used twice. So when use
`file.ContentReader` in the second time, the `i` of this Reader has been
updated to the length of the content. it will return 0 and an `io.EOF`
error when we try to read cotent from this Reader.
routers/api/v1/repo/file.go
services/repository/files/update.go