diff options
author | Feross Aboukhadijeh <feross@feross.org> | 2014-05-18 14:45:45 +0400 |
---|---|---|
committer | Feross Aboukhadijeh <feross@feross.org> | 2014-05-18 14:45:45 +0400 |
commit | 1c614d171f63009f5f516dab5b9de60cfc28bc05 (patch) | |
tree | bdf30ff2de85736b466ea051d9387fab7f769832 | |
parent | 2c41b00c47c16a0a09c5398de5b84f4e35eafa08 (diff) |
emit 'error' events for torrent parse errors
-rw-r--r-- | index.js | 15 | ||||
-rw-r--r-- | package.json | 15 |
2 files changed, 19 insertions, 11 deletions
@@ -9,6 +9,7 @@ var FSStorage = require('./lib/fs_storage') var http = require('http') var inherits = require('inherits') var mime = require('mime') +var once = require('once') var pump = require('pump') var rangeParser = require('range-parser') var url = require('url') @@ -48,6 +49,7 @@ WebTorrent.prototype.add = function (torrentId, opts, cb) { if (typeof cb !== 'function') { cb = function () {} } + cb = once(cb) opts = extend({ storage: FSStorage @@ -72,16 +74,21 @@ WebTorrent.prototype.add = function (torrentId, opts, cb) { onTorrentId(torrent) })) }).on('error', function (err) { - cb(new Error('Error downloading torrent from ' + torrentId + '\n' + err.message)) + err = new Error('Error downloading torrent from ' + torrentId + '\n' + err.message) + cb(err) + self.emit('error', err) }) } else { // assume it's a filesystem path fs.readFile(torrentId, function (err, torrent) { if (err) { - return cb(new Error('Cannot add torrent "' + torrentId + '". Torrent id must be one of: magnet uri, ' + - 'info hash, torrent file, http url, or filesystem path.')) + err = new Error('Cannot add torrent "' + torrentId + '". Torrent id must be one of: magnet uri, ' + + 'info hash, torrent file, http url, or filesystem path.') + cb(err) + self.emit('error', err) + } else { + onTorrentId(torrent) } - onTorrentId(torrent) }) } diff --git a/package.json b/package.json index 8d0b28d..56a597d 100644 --- a/package.json +++ b/package.json @@ -15,23 +15,24 @@ }, "dependencies": { "bittorrent-client": "0.0.x", - "numeral": "^1.5.3", - "network-address": "0.0.4", "chalk": "^0.4.0", "clivas": "^0.1.4", "concat-stream": "^1.4.4", + "extend.js": "^0.0.1", "inherits": "^2.0.1", + "mime": "^1.2.11", "minimist": "^0.0.8", + "mkdirp": "^0.3.5", "moment": "^2.6.0", - "mime": "^1.2.11", + "network-address": "0.0.4", + "numeral": "^1.5.3", + "once": "^1.3.0", "pump": "^0.3.2", - "range-parser": "^1.0.0", - "windows-no-runnable": "~0.0.6", "random-access-file": "^0.3.1", + "range-parser": "^1.0.0", "rimraf": "^2.2.5", "thunky": "^0.1.0", - "mkdirp": "^0.3.5", - "extend.js": "^0.0.1" + "windows-no-runnable": "~0.0.6" }, "devDependencies": { "tape": "2.x" |