diff --git a/client.js b/client.js index 035dec03..281d974f 100644 --- a/client.js +++ b/client.js @@ -40,10 +40,10 @@ function Client (peerId, port, torrent, opts) { self._peerIdHex = self._peerId.toString('hex') self._peerIdBinary = self._peerId.toString('binary') - self._infoHashBuffer = Buffer.isBuffer(torrent.infoHash) + self._infoHash = typeof torrent.infoHash === 'string' ? torrent.infoHash - : new Buffer(torrent.infoHash, 'hex') - self._infoHash = self._infoHashBuffer.toString('hex') + : torrent.infoHash.toString('hex') + self._infoHashBuffer = new Buffer(self._infoHash, 'hex') self._infoHashBinary = self._infoHashBuffer.toString('binary') self.torrentLength = torrent.length diff --git a/lib/client/http-tracker.js b/lib/client/http-tracker.js index d6d6873a..eddafc2e 100644 --- a/lib/client/http-tracker.js +++ b/lib/client/http-tracker.js @@ -68,7 +68,7 @@ HTTPTracker.prototype.scrape = function (opts) { ? opts.infoHash.map(function (infoHash) { return infoHash.toString('binary') }) - : (opts.infoHash || self.client._infoHashBuffer).toString('binary') + : (opts.infoHash && opts.infoHash.toString('binary')) || self.client._infoHashBinary var params = { info_hash: infoHashes } diff --git a/lib/client/udp-tracker.js b/lib/client/udp-tracker.js index c9bf5fbc..e51f5c78 100644 --- a/lib/client/udp-tracker.js +++ b/lib/client/udp-tracker.js @@ -146,7 +146,7 @@ UDPTracker.prototype._request = function (opts) { } var infoHashes = (Array.isArray(opts.infoHash) && opts.infoHash.length > 0) ? opts.infoHash.map(function (infoHash) { return infoHash.toString('hex') }) - : (opts.infoHash || self.client._infoHashBuffer).toString('hex') + : [ (opts.infoHash && opts.infoHash.toString('hex')) || self.client._infoHash ] for (var i = 0, len = (msg.length - 8) / 12; i < len; i += 1) { self.client.emit('scrape', { diff --git a/test/scrape.js b/test/scrape.js index 79822a38..05de2d43 100644 --- a/test/scrape.js +++ b/test/scrape.js @@ -36,6 +36,7 @@ function testSingle (t, serverType) { client.on('scrape', function (data) { t.equal(data.announce, announceUrl) + t.equal(data.infoHash, parsedBitlove.infoHash) t.equal(typeof data.complete, 'number') t.equal(typeof data.incomplete, 'number') t.equal(typeof data.downloaded, 'number') @@ -60,6 +61,7 @@ function clientScrapeStatic (t, serverType) { Client.scrape(announceUrl, infoHash1, function (err, data) { t.error(err) t.equal(data.announce, announceUrl) + t.equal(data.infoHash, infoHash1) t.equal(typeof data.complete, 'number') t.equal(typeof data.incomplete, 'number') t.equal(typeof data.downloaded, 'number') @@ -84,11 +86,13 @@ function clientScrapeMulti (t, serverType) { t.error(err) t.equal(results[infoHash1].announce, announceUrl) + t.equal(results[infoHash1].infoHash, infoHash1) t.equal(typeof results[infoHash1].complete, 'number') t.equal(typeof results[infoHash1].incomplete, 'number') t.equal(typeof results[infoHash1].downloaded, 'number') t.equal(results[infoHash2].announce, announceUrl) + t.equal(results[infoHash2].infoHash, infoHash2) t.equal(typeof results[infoHash2].complete, 'number') t.equal(typeof results[infoHash2].incomplete, 'number') t.equal(typeof results[infoHash2].downloaded, 'number')