From: Chocobozzz Date: Wed, 26 Oct 2022 08:55:12 +0000 (+0200) Subject: More robust updateTorrentMetadata X-Git-Tag: v5.0.0-rc.1~214 X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=44df702502ff5defc42b262b15507f6d88aacc50;p=github%2FChocobozzz%2FPeerTube.git More robust updateTorrentMetadata --- diff --git a/server/helpers/webtorrent.ts b/server/helpers/webtorrent.ts index b458e86d2..a3c93e6fe 100644 --- a/server/helpers/webtorrent.ts +++ b/server/helpers/webtorrent.ts @@ -1,6 +1,6 @@ import { decode, encode } from 'bencode' import createTorrent from 'create-torrent' -import { createWriteStream, ensureDir, readFile, remove, writeFile } from 'fs-extra' +import { createWriteStream, ensureDir, pathExists, readFile, remove, writeFile } from 'fs-extra' import magnetUtil from 'magnet-uri' import parseTorrent from 'parse-torrent' import { dirname, join } from 'path' @@ -134,6 +134,11 @@ async function updateTorrentMetadata (videoOrPlaylist: MVideo | MStreamingPlayli const oldTorrentPath = join(CONFIG.STORAGE.TORRENTS_DIR, videoFile.torrentFilename) + if (!await pathExists(oldTorrentPath)) { + logger.info('Do not update torrent metadata %s of video %s because the file does not exist anymore.', video.uuid, oldTorrentPath) + return + } + const torrentContent = await readFile(oldTorrentPath) const decoded = decode(torrentContent) @@ -151,7 +156,7 @@ async function updateTorrentMetadata (videoOrPlaylist: MVideo | MStreamingPlayli logger.info('Updating torrent metadata %s -> %s.', oldTorrentPath, newTorrentPath) await writeFile(newTorrentPath, encode(decoded)) - await remove(join(CONFIG.STORAGE.TORRENTS_DIR, videoFile.torrentFilename)) + await remove(oldTorrentPath) videoFile.torrentFilename = newTorrentFilename videoFile.infoHash = sha1(encode(decoded.info)) diff --git a/server/tests/shared/streaming-playlists.ts b/server/tests/shared/streaming-playlists.ts index 8ee04d921..824c3dcef 100644 --- a/server/tests/shared/streaming-playlists.ts +++ b/server/tests/shared/streaming-playlists.ts @@ -113,7 +113,7 @@ async function completeCheckHlsPlaylist (options: { expect(file.magnetUri).to.have.lengthOf.above(2) expect(file.torrentUrl).to.match( - new RegExp(`http://${server.host}/lazy-static/torrents/${uuidRegex}-${file.resolution.id}-hls.torrent`) + new RegExp(`${server.url}/lazy-static/torrents/${uuidRegex}-${file.resolution.id}-hls.torrent`) ) if (objectStorageBaseUrl) {