diff --git a/renderer/index.js b/renderer/index.js index 24b9145d..bd127e7d 100644 --- a/renderer/index.js +++ b/renderer/index.js @@ -717,7 +717,7 @@ function torrentError (torrentKey, message) { // TODO: WebTorrent should have semantic errors if (message.startsWith('There is already a swarm')) { - onError(new Error('Couldn\'t add duplicate torrent')) + onError(new Error('Can\'t add duplicate torrent')) } else if (!torrentSummary) { onError(message) } else { diff --git a/renderer/webtorrent.js b/renderer/webtorrent.js index e5a9cf4a..48a769bb 100644 --- a/renderer/webtorrent.js +++ b/renderer/webtorrent.js @@ -77,6 +77,12 @@ function startTorrenting (torrentKey, torrentID, path, fileModtimes) { } catch (err) { return ipc.send('wt-error', torrentKey, err.message) } + // If we add a duplicate magnet URI or infohash, WebTorrent returns the + // existing torrent object! (If we add a duplicate torrent file, it creates a + // new torrent object and raises an error later.) Workaround: + if (torrent.key) { + return ipc.send('wt-error', torrentKey, 'Can\'t add duplicate torrent') + } torrent.key = torrentKey addTorrentEvents(torrent) return torrent