Skip to content

Commit

Permalink
fix(backend): FileServerServiceでレンジリクエストの場合に適切なレスポンスコードが返らない問題を修正 (mi…
Browse files Browse the repository at this point in the history
…sskey-dev#13701)

* return 206 for every ranged response - fixes misskey-dev#494

(cherry picked from commit 92eec21)

* detect size of remote files - fixes misskey-dev#494

without this, remote files are assumed to have size 0 (even if we just
downloaded them!) and the range-related code won't run

(cherry picked from commit 960f4fc)

---------

Co-authored-by: dakkar <[email protected]>
(cherry picked from commit 7cf0c18)
  • Loading branch information
kakkokari-gtyih authored and nacika-ins committed Sep 18, 2024
1 parent 2ec1d0e commit 545365c
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion packages/backend/src/server/FileServerService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,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),
Expand Down Expand Up @@ -258,7 +259,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;
}
Expand Down Expand Up @@ -437,6 +437,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),
Expand Down Expand Up @@ -533,6 +534,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,
Expand Down

0 comments on commit 545365c

Please sign in to comment.