diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/file-stream.js | 2 | ||||
-rw-r--r-- | lib/fs-storage.js | 6 | ||||
-rw-r--r-- | lib/server.js | 5 | ||||
-rw-r--r-- | lib/storage.js | 28 | ||||
-rw-r--r-- | lib/torrent.js | 22 |
5 files changed, 39 insertions, 24 deletions
diff --git a/lib/file-stream.js b/lib/file-stream.js index 2abfd61..a2b80a0 100644 --- a/lib/file-stream.js +++ b/lib/file-stream.js @@ -67,7 +67,7 @@ FileStream.prototype.notify = function () { var p = self._piece debug('before read %s', p) self._storage.read(self._piece++, function (err, buffer) { - debug('after read %s (buffer.length %s) (err %s)', p, buffer.length, (err && err.message) || err) + debug('after read %s (length %s) (err %s)', p, buffer.length, err && err.message) self._notifying = false if (self._destroyed) return diff --git a/lib/fs-storage.js b/lib/fs-storage.js index cd32d4e..504f142 100644 --- a/lib/fs-storage.js +++ b/lib/fs-storage.js @@ -136,7 +136,11 @@ FSStorage.prototype.readBlock = function (index, offset, length, cb) { } target.openRead(function (err, file) { - if (err) return (err === self.nonExistentError ? readFromNextFile(null, new Buffer(0)) : cb(err)) + if (err) { + return err === self.nonExistentError + ? readFromNextFile(null, new Buffer(0)) + : cb(err) + } file.read(offset, to - from, readFromNextFile) }) } diff --git a/lib/server.js b/lib/server.js index 1e659b1..4a8f9b4 100644 --- a/lib/server.js +++ b/lib/server.js @@ -59,7 +59,10 @@ module.exports = function Server (torrent, opts) { // Support DLNA streaming res.setHeader('transferMode.dlna.org', 'Streaming') - res.setHeader('contentFeatures.dlna.org', 'DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=017000 00000000000000000000000000') + res.setHeader( + 'contentFeatures.dlna.org', + 'DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=017000 00000000000000000000000000' + ) var range if (req.headers.range) { diff --git a/lib/storage.js b/lib/storage.js index 570ae08..e6f1417 100644 --- a/lib/storage.js +++ b/lib/storage.js @@ -27,7 +27,7 @@ inherits(Piece, EventEmitter) * * @param {number} index piece index * @param {string} hash sha1 hash (hex) for this piece - * @param {Buffer|number} buffer backing buffer for this piece or length of piece if the backing buffer is lazy + * @param {Buffer|number} buffer backing buffer, or piece length if backing buffer is lazy * @param {boolean=} noVerify skip piece verification (used when seeding a new file) */ function Piece (index, hash, buffer, noVerify) { @@ -138,9 +138,7 @@ Piece.prototype.verify = function (buffer) { return } - var expectedHash - sha1(buffer, function (_expectedHash) { - expectedHash = _expectedHash + sha1(buffer, function (expectedHash) { self.verified = (expectedHash === self.hash) onResult() }) @@ -149,7 +147,7 @@ Piece.prototype.verify = function (buffer) { if (self.verified) { self.emit('done') } else { - self.emit('warning', new Error('piece ' + self.index + ' failed verification; ' + expectedHash + ' expected ' + self.hash)) + self.emit('warning', new Error('piece ' + self.index + ' failed verification')) self._reset() } } @@ -160,7 +158,10 @@ Piece.prototype._verifyOffset = function (offset) { if (offset % BLOCK_LENGTH === 0) { return true } else { - self.emit('warning', new Error('piece ' + self.index + ' invalid offset ' + offset + ' not multiple of ' + BLOCK_LENGTH + ' bytes')) + self.emit( + 'warning', + new Error('invalid block offset ' + offset + ', not multiple of ' + BLOCK_LENGTH) + ) return false } } @@ -170,13 +171,12 @@ Piece.prototype._verifyBlock = function (offset, buffer) { if (buffer.length === BLOCK_LENGTH) { // normal block length return true - - } else if (buffer.length === self.length - offset - && self.length - offset < BLOCK_LENGTH) { + } else if (buffer.length === self.length - offset && + self.length - offset < BLOCK_LENGTH) { // last block in piece is allowed to be less than block length return true } else { - self.emit('warning', new Error('piece ' + self.index + ' invalid block of size ' + buffer.length + ' bytes')) + self.emit('warning', new Error('invalid block size ' + buffer.length)) return false } } @@ -230,7 +230,9 @@ function File (storage, file, pieces, pieceLength) { File.prototype.select = function () { var self = this if (self.pieces.length > 0) { - self.storage.emit('select', self.pieces[0].index, self.pieces[self.pieces.length - 1].index, false) + var start = self.pieces[0].index + var end = self.pieces[self.pieces.length - 1].index + self.storage.emit('select', start, end, false) } } @@ -241,7 +243,9 @@ File.prototype.select = function () { File.prototype.deselect = function () { var self = this if (self.pieces.length > 0) { - self.storage.emit('deselect', self.pieces[0].index, self.pieces[self.pieces.length - 1].index, false) + var start = self.pieces[0].index + var end = self.pieces[self.pieces.length - 1].index + self.storage.emit('deselect', start, end, false) } } diff --git a/lib/torrent.js b/lib/torrent.js index 9127eba..f3ec093 100644 --- a/lib/torrent.js +++ b/lib/torrent.js @@ -75,7 +75,6 @@ function Torrent (torrentId, opts) { var parsedTorrent = (torrentId && torrentId.parsedTorrent) || parseTorrent(torrentId) if (parsedTorrent && parsedTorrent.infoHash) { onTorrentId(parsedTorrent) - } else if (typeof get === 'function' && /^https?:/.test(torrentId)) { // http or https url to torrent file get.concat({ @@ -86,14 +85,12 @@ function Torrent (torrentId, opts) { return self.emit('error', new Error('error downloading torrent: ' + err.message)) onTorrentId(data) }) - } else if (typeof fs.readFile === 'function') { // assume it's a filesystem path fs.readFile(torrentId, function (err, torrent) { if (err) return self.emit('error', new Error('invalid torrent id')) onTorrentId(torrent) }) - } else throw new Error('invalid torrent id') function onTorrentId (torrentId) { @@ -277,7 +274,7 @@ Torrent.prototype._onMetadata = function (metadata) { numPieces += 1 self.emit('verifying', { percentDone: 100 * numPieces / self.storage.pieces.length, - percentVerified: 100 * numVerified / self.storage.pieces.length, + percentVerified: 100 * numVerified / self.storage.pieces.length }) if (!err && buffer) { @@ -432,7 +429,7 @@ Torrent.prototype._onWire = function (wire) { // use ut_pex extension if (typeof ut_pex === 'function') wire.use(ut_pex()) - //wire.ut_pex.start() // TODO two-way communication + // wire.ut_pex.start() // TODO two-way communication if (wire.ut_pex) wire.ut_pex.on('peer', function (peer) { debug('got peer via ut_pex ' + peer) self.addPeer(peer) @@ -481,7 +478,8 @@ Torrent.prototype._onWireWithMetadata = function (wire) { function onChokeTimeout () { if (self._destroyed || wire._destroyed) return - if (self.swarm.numQueued > 2 * (self.swarm.numConns - self.swarm.numPeers) && wire.amInterested) { + if (self.swarm.numQueued > 2 * (self.swarm.numConns - self.swarm.numPeers) && + wire.amInterested) { wire.destroy() } else { timeoutId = setTimeout(onChokeTimeout, timeoutMs) @@ -963,12 +961,18 @@ Torrent.prototype._request = function (wire, index, hotswap) { if (r[i] === wire) r[i] = null if (err) { - debug('error getting piece ' + index + '(offset: ' + block.offset + ' length: ' + block.length + ') from ' + wire.remoteAddress + ' ' + err.message) + debug( + 'error getting piece %s (offset: %s length: %s) from %s: %s', + index, block.offset, block.length, wire.remoteAddress, err.message + ) self.storage.cancelBlock(index, block.offset) process.nextTick(self._update.bind(self)) return false } else { - // debug('got piece ' + index + '(offset: ' + block.offset + ' length: ' + block.length + ') from ' + wire.remoteAddress) + debug( + 'got piece %s (offset: %s length: %s) from %s', + index, block.offset, block.length, wire.remoteAddress + ) self.storage.writeBlock(index, block.offset, buffer, function (err) { if (err) { debug('error writing block') @@ -993,7 +997,7 @@ Torrent.prototype.createServer = function (opts) { } function getPipelineLength (wire, duration) { - return Math.ceil(2 + duration * wire.downloadSpeed() / Storage.BLOCK_LENGTH); + return Math.ceil(2 + duration * wire.downloadSpeed() / Storage.BLOCK_LENGTH) } /** |