diff options
| author | Amelia Yukii <amelia.yukii@shourai.de> | 2024-04-11 10:07:25 +0000 |
|---|---|---|
| committer | Amelia Yukii <amelia.yukii@shourai.de> | 2024-04-11 10:07:25 +0000 |
| commit | 28065fc1d1dd3099894259aca904213858954e78 (patch) | |
| tree | 9202987e2af852a7cc5e9919bf9069186dff6414 /packages/backend/src/server/FileServerService.ts | |
| parent | merge: fix: send null for empty edited_at in mastodon api (!487) (diff) | |
| parent | detect size of remote files - fixes #494 (diff) | |
| download | sharkey-28065fc1d1dd3099894259aca904213858954e78.tar.gz sharkey-28065fc1d1dd3099894259aca904213858954e78.tar.bz2 sharkey-28065fc1d1dd3099894259aca904213858954e78.zip | |
merge: handle ranged requests for proxied files - fixes #494 (!490)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/490
Closes #494
Approved-by: Amelia Yukii <amelia.yukii@shourai.de>
Approved-by: Marie <marie@kaifa.ch>
Diffstat (limited to 'packages/backend/src/server/FileServerService.ts')
| -rw-r--r-- | packages/backend/src/server/FileServerService.ts | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/packages/backend/src/server/FileServerService.ts b/packages/backend/src/server/FileServerService.ts index 6d24898acc..3cb353f2b3 100644 --- a/packages/backend/src/server/FileServerService.ts +++ b/packages/backend/src/server/FileServerService.ts @@ -192,6 +192,7 @@ export class FileServerService { reply.header('Content-Range', `bytes ${start}-${end}/${file.file.size}`); reply.header('Accept-Ranges', 'bytes'); reply.header('Content-Length', chunksize); + reply.code(206); } else { image = { data: fs.createReadStream(file.path), @@ -261,7 +262,6 @@ export class FileServerService { const parts = range.replace(/bytes=/, '').split('-'); const start = parseInt(parts[0], 10); let end = parts[1] ? parseInt(parts[1], 10) : file.file.size - 1; - console.log(end); if (end > file.file.size) { end = file.file.size - 1; } @@ -431,6 +431,7 @@ export class FileServerService { reply.header('Content-Range', `bytes ${start}-${end}/${file.file.size}`); reply.header('Accept-Ranges', 'bytes'); reply.header('Content-Length', chunksize); + reply.code(206); } else { image = { data: fs.createReadStream(file.path), @@ -527,6 +528,9 @@ export class FileServerService { if (!file.storedInternal) { if (!(file.isLink && file.uri)) return '204'; const result = await this.downloadAndDetectTypeFromUrl(file.uri); + if (!file.size) { + file.size = (await fs.promises.stat(result.path)).size; + } return { ...result, url: file.uri, |